Как добавить счетчик в мою учетную запись пользовательская метка ссылки


Я разрабатываю пользовательский модуль подписки для одного из своих проектов. У клиента может быть несколько подписок на несколько продуктов. Данные хранятся в пользовательской таблице базы данных. В разделе "Мои учетные записи" я добавил ссылку в меню следующим образом:

<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>? Возможно ли это вообще?

Author: Amyth, 2015-11-26

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;
    }
}
 1
Author: SeStro, 2015-11-28 10:56:08