Добавить ссылку на страницу моей учетной записи Magento условно - PullRequest
5 голосов
/ 16 января 2011

Я хотел бы создать на странице «Моя учетная запись» ссылку, которая будет отображаться только при определенных условиях.

Прямо сейчас у меня постоянно отображается ссылка, добавив следующую запись в мой 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>

Я предполагаю, что есть способ закодировать это так, чтобы он отображался только при определенных обстоятельствах.

1 Ответ

7 голосов
/ 17 января 2011

Ссылки на корзину и оформление заказа уже делают нечто подобное, поэтому их метод можно скопировать.

  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(), чтобы выяснить, куда должна идти ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...