Domanda

E 'questo comportamento standard, o sto facendo qualcosa di sbagliato?

// 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

sto cercando di evitare di riscrivere il blocco che le uscite di questo codice, dal momento che uno dei nostri plugin già lo fa (bleh), in modo che questo che sto utilizzando l'evento.

È stato utile?

Soluzione

C'è la possibilità di includere l'intero Catalog/Model/Resource/Product/Collection.php con i miei nuovi metodi nella cartella app/code/local/Mage, ma sono riluttanti a ricorrere a quella meno che non sia assolutamente necessario.

Altri suggerimenti

Perché non impostare la raccolta genitore all'interno del vostro blocco?

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();
    }
}

È possibile osservare controller_action_layout_load_before e utilizzare qualcosa come

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

Sembra che qualcuno ha fatto male e istanziare con new al posto del metodi di fabbrica getSingleton() e getModel() non c'è modo per risolvere questo problema nel vostro modulo.

Quindi, se si vuole avere la classe corretta, è necessario modificare il modulo che utilizza la new

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top