1

「advanemenu/general/enabled」として構成されているモジュールに取り組んでいます

この設定を使用することで、Magentoフロントエンドに条件付きでアイテムを追加できます。

元。

<reference name="head">
     <action method="addItem" ifconfig="advancemenu/general/enabled"><type>skin_css</type><name>css/advancemenu.css</name></action>
</reference>

同様に、構成値が有効になっている場合は、上部のナビゲーションを削除します。

私は次のことを試しましたが、結果はありませんでした...

<remove ifconfig="advancemenu/general/enabled" name="catalog.topnav" />

ifconfigが機能する<action>場合、この方法を使用してトップナビゲーションを削除する方法はありますか。

誰かがこれを行う方法を知っているなら私を助けてください。(事前にThnx)

4

2 に答える 2

5

IfConfigはアクションメソッドでのみ機能します。xmlレイアウトでactionを呼び出すと、これはブロックインスタンスのfuncionの呼び出しで解析されます。

あなたはこれを見ることができます:

ファイル:289行目あたりのapp / code / core / Mage / core / Model / layout.php

protected function _generateAction($node, $parent)
    {
        if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) {
            if (!Mage::getStoreConfigFlag($configPath)) {
                return $this;
            }
        }

しかし、これに対する可能な解決策は、真の価値がある場合にのみテンプレートを追加することです。例えば

<reference name="head">
     <action method="setTemplate" ifconfig="advancemenu/general/enabled">
       <template>route/to/template</template>
     </action>
</reference>

次に、モジュールを有効にした場合にのみ、このブロックにテンプレートが関連付けられます。別の場合、ブロックにテンプレートがなく、ロードされません。

于 2012-07-17T14:26:32.103 に答える
3

unsetchildメソッドを使用して任意のブロックを削除できます。

上記の場合

<reference name="top.menu">
            <action method="unsetChild" ifconfig="advancemenu/general/enabled">
                <name>catalog.topnav</name>
            </action>
        </reference>

条件付きのremoveステートメントに役立ちます。

于 2012-07-17T15:25:13.303 に答える