1

アクティブなフィルターがある場合、カテゴリーの表示モードを変更したいです。私の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();しかし、 Is I am doing something wrong or my event is wrong?でアクティブなフィルターを取得できません。

私も試してみましMage::getSingleton('Mage_Catalog_Block_Layer_State')->getActiveFilters();たが、成功しませんでした。

4

1 に答える 1

0

あなたがやろうとしていることに対して、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();
    }
}
于 2016-10-06T06:22:04.833 に答える