2011-01-16 13 views
5

マイアカウントページに特定の条件でのみ表示されるリンクを作成したいと考えています。Magentoのマイアカウントページへのリンクを追加条件付きで

今、私は私のレイアウトXMLファイルに次のエントリを追加することにより、リンク表示のすべての時間を持っている:

<customer_account> 
    <reference name="customer_account_navigation"> 
     <action method="addLink" translate="label" module="nie"><name>nie</name><path>nie</path><label>NIE Admin</label></action> 
    </reference> 
</customer_account> 

私はそれが特定の状況でのみ表示されるように、これをコーディングする方法があると仮定しています。

答えて

7

カート&チェックアウトリンクはすでに同様のことをしていますので、そのメソッドをコピーすることができます。

  1. ブロックを作成します。それは直接表示されませんので、退屈なのMage_Core_Block_Abstractから降りることができます。
  2. 条件付きロジックに行く方法を指定します。

    public function addNieLink() 
    { 
        if (($parentBlock = $this->getParentBlock()) && (CONDITION-GOES-HERE)) { 
         $parentBlock->addLink($this->_('NIE Admin'), 'nie', $this->_('NIE Admin'), true, array(), 50, null, 'class="top-link-cart"'); 
         // see Mage_Page_Block_Template_Links::addLink() 
        } 
    } 
    
    protected function _prepareLayout() 
    { 
        // Add the special link automatically 
        $this->addNieLink(); 
        return parent::_prepareLayout(); 
    } 
    

    CONDITION-GOES-HEREの代わりにチェックを入れてください。

  3. ブロックをリンクブロックに追加します。

    <customer_account> 
        <reference name="customer_account_navigation"> 
         <block type="yourmodule/link" name="yourmodule.link" /> 
        </reference> 
    </customer_account> 
    

    (新しく作成したリンクブロックに、ここでブロックタイプを修正してください)

重要なビットは、リンクが行くことである場所を見つけるためにgetParentBlock()を呼び出しています。

+0

あなたのソリューションはほぼ機能しました。それは正しい方向に私を挑戦的に導いてくれる。私は抽象的ではなくMage_Core_Block_Templateを拡張する必要がありました。ブロックでは、私は_prepareLayout()関数は必要ありませんでした。 $ parentBlock-> addLink( "NIE Admin"、 "nie/index"、 "NIE Admin"、true、array()、50、null);どちらの方法でも、あなたのソリューションは私を大いに助けました。どうもありがとう! –

関連する問題