2011-01-16 14 views
5

Vorrei creare un collegamento nella pagina Account personale che visualizza solo le visualizzazioni in determinate condizioni.Aggiungere un collegamento alla pagina Account personale di Magento

In questo momento ho il display di collegamento per tutto il tempo, aggiungendo la seguente voce al mio layout file 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> 

Io parto dal presupposto che c'è un modo per codificare questo in modo che viene visualizzato solo in determinate circostanze .

risposta

7

Il carrello & i collegamenti di checkout già fanno qualcosa di simile, quindi il loro metodo può essere copiato.

  1. Creare un blocco. Non verrà visualizzato direttamente così può essere disceso dal noioso Mage_Core_Block_Abstract.
  2. Assegnare un metodo per la logica condizionale.

    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(); 
    } 
    

    Metti la tua check-in luogo di CONDITION-GOES-HERE.

  3. Aggiungi il tuo blocco al blocco di collegamenti.

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

    (correggere il tipo di blocco qui al blocco di collegamento appena creato)

Il bit importante è che chiama getParentBlock() per scoprire dove il collegamento è di andare.

+0

La tua soluzione ha quasi funzionato. Mi guida in modo provocante nella giusta direzione. Dovevo avere il blocco estendere Mage_Core_Block_Template anziché l'Abstract. Nel blocco non avevo bisogno della funzione _prepareLayout(). Ho anche dovuto modificare parentBlock-> addLink a questo: $ parentBlock-> addLink ("NIE Admin", "nie/index", "NIE Admin", true, array(), 50, null); In ogni caso, le tue soluzioni mi hanno aiutato immensamente. Grazie mille! –

Problemi correlati