cancel
Showing results for 
Search instead for 
Did you mean: 

Переопределение создания коллекции продуктов

Переопределение создания коллекции продуктов

Здравствуйте.

У меня следующая задача: мне нужно фильтровать отображаемую коллекцию продуктов. Я могу перопределить templat'ы catalog/product/list.phtml и catalog/product/list/toolbar.phtml. Или на уровне block'ов: Mage_Catalog_Block_Product_List и Mage_Catalog_Block_Product_List_Toolbar. Есть ли способ сделать это в одном месте так, чтоб список продуктов и тулбар и поиск и все-все-все получали уже отфильтрованую коллекцию? Для этого нужно переопределить какие-то методы в моделях? Какие?

Спасибо.

1 REPLY

Re: Переопределение создания коллекции продуктов

можно создать 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)); 
     }
}