Динамическое создание ссылки в навигации по учетной записи клиента
Я хочу создать ссылку динамически в customer_block_account_navigation (ссылка должна отображаться на боковой панели)
Статическая ссылка не является проблемой, вы можете добиться этого с помощью обновления макета xml:
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="customer">
<name>mymodulename</name>
<path>mypath</path>
<label>Label of the link</label>
</action>
</reference>
</customer_account>
Ссылка ведет на пользовательскую форму, которая должна отображаться только для определенного клиента. Поэтому мне нужно управлять ссылкой (или обновлением макета) с помощью PHP в моем собственном модуле. Но я не мог найти никакого решения, как это сделать.
Может ли кто-нибудь помочь я?
Большое вам спасибо.
3 answers
Вы можете добавить блок внутри customer_account_navigation
и в этом блоке добавить ссылку на родительский блок, если ваши условия выполнены.
Итак, в вашем макете говорится следующее:
<customer_account>
<reference name="customer_account_navigation">
<block type="[module]/customer_link" as="[module]_customer_link" name="[module]_customer_link">
<action method="addLinkToParentBlock" />
</block>
</reference>
</customer_account>
И ваш класс блоков должен выглядеть так:
class [Namespace]_[Module]_Block_Customer_Link extends Mage_Core_Block_Abstract
{
public function addLinkToParentBlock()
{
$parent = $this->getParentBlock();
if ($parent) {
if (your condition goes here) {
$parent->addLink(
'Label goes here',
'Url goes here',
'title goes here',
);
}
}
}
}
Таким образом, ваш блок будет создан. У него не будет выходных данных, но будет вызван метод addLinkToParentBlock
.
Это действительно зависит от того, что вы хотите с вашей динамической ссылкой. Вы могли бы сделать несколько вещей:
- Перепишите
Mage_Customer_Block_Account_Navigation
и измените функциюgetLinks
, чтобы добавить свою ссылку там, где вам нужно, - Перепишите
Mage_Customer_Block_Account_Navigation
и измените функциюaddLink
, чтобы добавить вашу ссылку с информацией, созданной динамически, - Вы даже можете прослушать событие
core_block_abstract_to_html_before
проверьте тип блока, а затем измените ссылки здесь,
Попробуйте использовать этот код для навигации администратора
<customer_account translate="label">
<reference name="left">
<block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml">
<action method="addLink" translate="label" module="customer"> <name>my_customadmin</name><path>mypath/mycustomadmin/</path><label>My Custom Navigation</label></action>
</block>
</reference>
</customer_account>