Frage

Ist dieses Standardverhalten oder mache ich etwas falsch?

// in event 'catalog_product_collection_load_before'
get_class($observer->getCollection());
 > Mage_Catalog_Model_Resource_Product_Collection
get_class(Mage::getModel('catalog/resource_product_collection'));
 > MyStuff_Catalog_Model_Resource_Product_Collection

Ich versuche zu vermeiden, den Block umzuschreiben, der diesen Code ausgibt, da eines unserer Plugins dies bereits tut (BLEH). Deshalb verwende ich das Ereignis.

War es hilfreich?

Lösung

Es besteht die Möglichkeit, das gesamte einzuschließen Catalog/Model/Resource/Product/Collection.php mit meinen neuen Methoden in der app/code/local/Mage Ordner, aber ich zögere, darauf zurückzugreifen, es sei denn, es ist absolut notwendig.

Andere Tipps

Legen Sie die Elternsammlung in Ihrem eigenen Block ein?

class Company_Module_Block_Customcollection extends Mage_Catalog_Block_Product_List {

    /**
     * Set collection to Product list before Html is rendered
     */
    public function _beforeToHtml() {
        parent::setCollection(Mage::getModel('catalog/category')->setCollection()); // <- Or custom collection
        parent::_beforeToHtml();
    }
}

Sie können beobachten controller_action_layout_load_before Und so etwas wie

public function observe($observer) {
    if ($observer->getEvent()->getAction()->getFullActionName() == 'checkout_cart_index')) {
         $observer->getEvent()->getLayout()->getUpdate()->addHandle('module_block');
    }
}

Klingt so, als hätte es jemand falsch gemacht und mit dem Integrieren new anstelle der Fabrikmethoden getSingleton() und getModel() Es gibt keine Möglichkeit, dies in Ihrem Modul zu beheben.

Wenn Sie also die richtige Klasse haben möchten, müssen Sie das Modul ändern, das das verwendet new

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top