5 votes

Ajouter un lien vers la page Mon compte de Magento de manière conditionnelle

Je voudrais créer un lien sur la page Mon compte qui ne s'affiche que dans certaines conditions.

Actuellement, le lien s'affiche en permanence en ajoutant l'entrée suivante à mon fichier XML de mise en page :

<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>

Je suppose qu'il existe un moyen de coder ce message pour qu'il ne s'affiche que dans certaines circonstances.

8voto

clockworkgeek Points 25923

Les liens du panier et de la caisse font déjà quelque chose de similaire, leur méthode peut donc être copiée.

  1. Créez un bloc. Il ne s'affichera pas directement, il peut donc descendre du bloc ennuyeux. Mage_Core_Block_Abstract .

  2. Donnez-lui une méthode où la logique conditionnelle ira.

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

    Mettez votre chèque à la place de CONDITION-GOES-HERE .

  3. Ajoutez votre bloc au bloc de liens.

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

    (Corrigez le type de bloc ici en fonction du bloc de lien que vous venez de créer)

L'important, c'est qu'il appelle getParentBlock() pour savoir où le lien doit aller.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X