Как добавить счетчик в мою учетную запись пользовательская метка ссылки
Я разрабатываю пользовательский модуль подписки для одного из своих проектов. У клиента может быть несколько подписок на несколько продуктов. Данные хранятся в пользовательской таблице базы данных. В разделе "Мои учетные записи" я добавил ссылку в меню следующим образом:
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="beyondroid_subscribepro"><name>subscriptions</name><path>subscriptions</path><label>My Subscriptions</label></action> </reference>
</customer_account>
<subscriptions_index_index translate="label">
<update handle="customer_account" />
<reference name="my.account.wrapper">
<block type="beyondroid_subscribepro/mysubscriptions" name="mysubscriptions" as="mysubscriptions" template="subscribepro/mysubscriptions.phtml" before="content" />
</reference>
</subscriptions_index_index>
Ссылка перенаправляет на пользовательский блок, где я перечисляю каждый объект подписки для этого клиента. У каждого элемента подписки есть поле balance_amount, которое показывает, какая сумма для этого подписка остается в учетной записи клиента.
Теперь я пытаюсь показать общую сумму баланса каждой подписки в метке ссылки в меню навигации по учетной записи клиента.
Если вы посмотрите на приведенный выше код, вы увидите, что в настоящее время метка показывает My Subscriptions
. Поэтому, если у клиента есть 3 подписки с балансом в 15 долларов США в каждом элементе подписки, я хотел бы показать My Subscriptions (Balance : $45)
в метке ссылки.
Если у меня есть функция php, которая суммирует суммы подписки, как могу ли я включить его в приведенный выше xml-код в тег <label></label>
? Возможно ли это вообще?
1 answers
Сначала вам нужно переопределить блок customer_account_navigation
и добавить новый метод:
class [Namespace]_[ModuleName]_Block_AddSubscriptionLink
extends Mage_Customer_Block_Account_Navigation
{
public function addSubscriptionsLink() {
$label = ''; // get label with balance here
$this->addLink(
$label,
"[url]",
"[title]"
);
}
}
Объявите об этом в файле модуля config.xml
:
<config>
<global>
<blocks>
<[namespace]_[moduleName]>
<rewrite>
<account_navigation>[Namespace]_[ModuleName]_Block_AddSubscriptionLink</account_navigation>
</rewrite>
</[namespace]_[moduleName]>
</blocks>
</global>
</config>
И, наконец, добавьте ссылку в макет:
<layout>
<customer_account>
<reference name="customer_account_navigation">
<action method="addSubscriptionsLink" />
</reference>
</customer_account>
</layout>
Редактировать: Вы также можете использовать основной блок и вспомогательный метод (я думаю, что это будет лучшим решением):
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="beyondroid_subscribepro">
<label helper="beyondroid_subscribepro/getSubscriptionsLabel" />
<path>subscriptions</path>
<name>subscriptions</name>
</action>
</reference>
</customer_account>
Помощник по рекламе в модуле config.xml
файл:
<config>
<global>
<helpers>
<beyondroid_subscribepro>
<class>Beyondroid_Subscribepro_Helper</class>
</beyondroid_subscribepro>
</blocks>
</global>
</config>
И создайте вспомогательный класс:
class Beyondroid_Subscribepro_Helper
extends Mage_Core_Helper_Abstract
{
public function getSubscriptionsLabel() {
$label = ''; // get label with balance here
return $label;
}
}