2010-12-02 15 views
6

में अप्रयुक्त उत्पाद चित्रों को हटाएं image-clean मॉड्यूल सूचियों और आप उन्हें नष्ट करते हैं। क्या ऐसी कोई स्क्रिप्ट है जो उपयोगकर्ता इंटरैक्शन के बिना अप्रयुक्त छवियों को स्वचालित रूप से हटा देती है? मैं इस स्क्रिप्ट को मैन्युअल रूप से चलाने या हर रात एक क्रॉन नौकरी का उपयोग करना चाहता हूं।/मीडिया/सूची/उत्पाद के तहत अप्रयुक्त छवियों Magento

धन्यवाद

उत्तर

10

आपको लगता है कि मॉड्यूल के व्यवस्थापक नियंत्रक के लिए स्रोत पर एक नज़र डालें, तो आप कोड वे प्रदर्शन करने के लिए का उपयोग देख सकते हैं एक जन

#File: app/code/local/Mage/Imaclean/controllers/Adminhtml/ImacleanController.php 
public function massDeleteAction() { 
    $imacleanIds = $this->getRequest()->getParam('imaclean'); 
    if(!is_array($imacleanIds)) { 
     Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)')); 
    } else { 
     try { 
      $model = Mage::getModel('imaclean/imaclean'); 
      foreach ($imacleanIds as $imacleanId) { 
       $model->load($imacleanId); 
       unlink('media/catalog/product'. $model->getFilename()); 
       $model->setId($imacleanId)->delete(); 
      } 
      Mage::getSingleton('adminhtml/session')->addSuccess(
       Mage::helper('adminhtml')->__(
        'Total of %d record(s) were successfully deleted', count($imacleanIds) 
       ) 
      ); 
     } catch (Exception $e) { 
      Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
     } 
    } 
    $this->_redirect('*/*/index'); 
} 

तो हटा सकते हैं, इस नियंत्रक कार्रवाई एक नंबर को स्वीकार करता है "imaclean/imaclean" मॉडल आईडी के, हटाए जाने के लिए इन आईडी का उपयोग करता है। तो, कि कार्रवाई में कुंजी कोड

$imacleanIds = $this->getRequest()->getParam('imaclean'); 
$model = Mage::getModel('imaclean/imaclean'); 
foreach ($imacleanIds as $imacleanId) { 
    $model->load($imacleanId); 
    unlink('media/catalog/product'. $model->getFilename()); 
    $model->setId($imacleanId)->delete(); 
} 

तो है, आप कुछ के साथ

तरह
//itterates through all 'imaclean/imaclean' models in the database 
$models = Mage::getModel('imaclean/imaclean')->getCollection(); 
foreach ($models as $model) { 
    unlink('media/catalog/product'. $model->getFilename()); 
    $model->setId($model->getId())->delete(); 
} 

अंत में एक स्टैंड-अलोन संस्करण में उपरोक्त कोड दोहराया सकता है, यह एक "imaclean/imaclean तरह लग रहा है "मॉडल को ट्रैक रखने के लिए उपयोग किया जाता है कि कौन सी छवियों की आवश्यकता नहीं है। ऐसा लगता है कि मॉड्यूल इन्हें बनाता है (यानी अप्रयुक्त छवियों के लिए एक चेक चलाता है), नए सहायक में compareList डिफ़ॉल्ट सहायक के विधि के साथ।

public function newAction(){  
    Mage::helper('imaclean')->compareList(); 
    $this->_redirect('*/*/'); 
} 

तो, हम हमारे स्क्रिप्ट की शुरुआत है, साथ ही जिस वास्तविक Magento प्रारंभ करने के लिए है कि जोड़ सकते हैं, जो हमें देना चाहिए कि हम क्या जरूरत है।

#File: cleanup.php 
require_once "app/Mage.php"; 
$app = Mage::app("default"); 

Mage::helper('imaclean')->compareList(); 
$models = Mage::getModel('imaclean/imaclean')->getCollection(); 
foreach ($models as $model) { 
    unlink('media/catalog/product'. $model->getFilename()); 
    $model->setId($model->getId())->delete(); 
} 

आपको कम से कम शुरू करना चाहिए। सौभाग्य!

+0

मैं इसके लिए एक मॉड्यूल का उपयोग नहीं करना चाहता क्योंकि बहुत से मॉड्यूल व्यवस्थापक को भ्रमित करते हैं। पुरानी छवियों को हटाने के लिए मुझे एक और डीबी टेबल की भी आवश्यकता नहीं है। मैं केवल मॉड्यूल से आवश्यक कोड लेने और परिणाम पोस्ट करने का प्रयास करूंगा। धन्यवाद – pablo

+0

क्या आप कभी समाधान के साथ आए थे? – styks

+0

@Alan तूफान अगर हम cleanup.php से ऊपर का उपयोग करते हैं। क्या यह हमारी दूसरी छवि को प्रभावित करता है? या केवल उन छवियों को हटा दें जो मौजूद हैं लेकिन इसका उत्पाद हटा दिया गया है? – MageDev

1

मीडिया छवियों को हटाने पर एक स्क्रिप्ट यहाँ नहीं है, बैकअप डेटाबेस और मीडिया पहले से कर लें। इसके अलावा वहां एक एसक्यूएल कथन भी है जो गैलरी रिकॉर्ड्स को हटा देता है जिनके पास अब कोई उत्पाद नहीं है।

http://www.codefuel.co.uk/magento-removing-media-that-doesnt-belong-to-products/ मैंने इसका उपयोग Magento संस्करण 1.8.x पर किया है और यह बहुत अच्छा काम करता है।

+0

सावधान रहें, इस कोड में कुछ संभावित सुरक्षा जोखिम हैं, लेकिन अभी भी उपयोगी – Flyingmana

संबंधित मुद्दे