0

Magento 拡張機能を作成していて、プログラムで [マイ アカウント] ナビゲーションにリンクを追加したいと考えています。次のスレッド ( Magento - How to add/remove links on my account navigation? ) とそれが参照するサイトを読みましたが、リンクを静的に追加することについてのみ話しています。

モジュールのレイアウト ファイルに以下を追加することで、顧客アカウント ナビゲーションに表示される新しいリンクを取得できます。

<customer_account>
    <reference name="customer_account_navigation">
        <action method="addLink" translate="label" module="mymodule">
            <name>modulename</name>
            <path>mymodule/</path>
            <label>New link</label>
        </action>
    </reference>
</customer_account>

このリンクの外観が、拡張モデルの 1 つに対するメソッド呼び出しの結果に依存するようにするにはどうすればよいですか。

4

3 に答える 3

0

ここで説明されているように、Magento の ifconfig 属性を使用できるはずだと思います

于 2012-11-16T09:08:03.817 に答える
0

あなたはmagentoのイベントオブザーバー機能を使用する必要がありますあなたがそれを使用しなければならないイベント「controller_action_layout_load_before」あなたのモジュールのconfig.xmlで

<controller_action_layout_load_before>
    <observers>
        <uniquename>
            <type>singleton</type>
            <class>Package_Modulename_Model_Observer</class>
            <method>customlink</method>
        </uniquename>
    </observers>
</controller_action_layout_load_before>

対応するobserver.phpで次のコードを使用します

public function customlink(Varien_Event_Observer $observer)
{
    $update = $observer->getEvent()->getLayout()->getUpdate();
    $update->addHandle('customer_new_handle');
}

そしてlocal.xmlに書く

<customer_new_handle>
    <reference name="customer_account_navigation">
        <action method="addLink" translate="label" module="mymodule">
            <name>modulename</name>
            <path>mymodule/</path>
            <label>New link</label>
        </action>
    </reference>
</customer_new_handle>
于 2012-11-16T11:00:30.927 に答える