Получить активные фильтры в обозревателе в magento

Я хочу изменить режим отображения своей категории, если есть активные фильтры. У меня есть событие config.xml:

    <events>
<catalog_block_product_list_collection>
<observers>
<mycustom_module_observer>
<type>singleton</type>
<class>Mycustom_Module_Model_Observer</class>
<method>setCategoryDisplayMode</method>
</mycustom_module_observer>
</observers>
</catalog_block_product_list_collection>
</events>

И мой наблюдатель это метод:

public function setCategoryDisplayMode(Varien_Event_Observer $observer)
{
$category = Mage::registry('current_category');
$appliedFilters = Mage::getSingleton('catalog/layer')
->getState()
->getFilters();
if (!empty($appliedFilters)) {
$category->setDisplayMode("PRODUCTS");
}
}

Но я не могу получить активные фильтры с $appliedFilters = Mage::getSingleton('catalog/layer')->getState()->getFilters(); Я делаю что-то не так или мое мероприятие не так?

Я тоже пробовал с Mage::getSingleton('Mage_Catalog_Block_Layer_State')->getActiveFilters(); но безуспешно

1

Решение

В Magento нет подходящего отдельного события для того, что вы пытаетесь сделать. Есть альтернатива этому. Добавить следующее обновление макета через local.xml файл:

<catalog_category_layered>
<reference name="content">
<block type="namespace_module/category" name="namespace.module.category.cmsblock" before="-"/>
</reference>
</catalog_category_layered>

И создать блок, который простирается от Mage_Cms_Block_Block учебный класс.

class Namespace_Module_Block_Category extends Mage_Cms_Block_Block
{
protected function _toHtml()
{
$filters = array();
$appliedFilters = Mage::getSingleton('catalog/layer')->getState()->getFilters();
if (!empty($appliedFilters)) {
$category->setDisplayMode("PRODUCTS");
}
return parent::_toHtml();
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]