Здравствуйте.
У меня следующая задача: мне нужно фильтровать отображаемую коллекцию продуктов. Я могу перопределить templat'ы catalog/product/list.phtml и catalog/product/list/toolbar.phtml. Или на уровне block'ов: Mage_Catalog_Block_Product_List и Mage_Catalog_Block_Product_List_Toolbar. Есть ли способ сделать это в одном месте так, чтоб список продуктов и тулбар и поиск и все-все-все получали уже отфильтрованую коллекцию? Для этого нужно переопределить какие-то методы в моделях? Какие?
Спасибо.
можно создать Observer
сначала определяем его в конфиге как
<config> <frontend> <events> <catalog_block_product_list_collection_prepare> <observers> <custom_and_unique_observer_name> <class>YOUR_MODULE_NAME/MODEL_CLASS_NAME</class> <method>MODEL_METHOD_NAME</method> </custom_and_unique_observer_name> </observers> </catalog_block_product_list_collection_prepare> </events> </frontend> </config>
а потом создаём модель
<?php class YOUR_MODULENAME_Model_Observer extends Mage_Catalog_Model_Resource_Product_Collection { public function MODEL_METHOD_NAME(Varien_Event_Observer $observer) { /* EXAMPLE */ $collection = $observer->getCollection(); $collection->addAttributeToSelect('created_at'); $collection->getSelect()->order(new Zend_Db_Expr('DATE(created_at) '. Zend_Db_Select::SQL_DESC)); } }