2011-01-16 9 views
5

Me gustaría crear un enlace en la página Mi cuenta que solo se muestra bajo ciertas condiciones.Agregue un enlace a la página Mi cuenta de Magento Condicionalmente

Ahora mismo tengo el enlace muestre todo el tiempo, añadiendo la siguiente entrada a la estructura del archivo 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> 

Estoy asumiendo que hay una manera de codificar esta manera que sólo se muestra en determinadas circunstancias .

Respuesta

7

En la cesta & los enlaces de pago ya hacen algo similar para que su método pueda ser copiado.

  1. Crear un bloque. No se mostrará directamente, por lo que puede descender de la aburrida Mage_Core_Block_Abstract.
  2. Dale un método donde irá la lógica condicional.

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

    Ponga su cheque en lugar de CONDITION-GOES-HERE.

  3. Agregue su bloque al bloque de enlaces.

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

    (corregir el tipo de bloque de aquí a su bloque de conexión del recién creado)

La cosa importante es que llama getParentBlock() para averiguar dónde está el enlace para ir.

+0

Su solución casi funcionó. Definitivamente me lleva en la dirección correcta. Tuve que hacer que el bloque extendiera Mage_Core_Block_Template en lugar de Abstract. En el bloque no necesitaba la función _prepareLayout(). También tuve que cambiar el parentBlock-> addLink a esto: $ parentBlock-> addLink ("NIE Admin", "nie/index", "NIE Admin", true, array(), 50, nulo); De cualquier manera, tus soluciones me ayudaron inmensamente. ¡Muchas gracias! –

Cuestiones relacionadas