Добавьте ссылку на корзину (с количеством товаров) на боковой панели в Magento.

Я столкнулся с уникальной проблемой от уникального клиента. На экране учетной записи Magento обычно есть два места, где появляется Моя корзина; верхней панели и в боковой панели в виде блока. Однако мне было поручено удалить их и разместить ссылку (с количеством товаров в корзине) в разделе «Моя учетная запись» на боковой панели.

Похоже, что как новый пользователь я не могу публиковать изображения. Это создаст проблему.

МОЙ СЧЕТ

Панель управления
Адресная книга
Моя корзина (2 шт.) ‹---- Эта ссылка здесь. В этой области и с указанием количества товаров
Мои заказы
Мои обзоры продуктов
May Tags Подписки на рассылку новостей

Теперь проблема с добавлением самой ссылки. На самом деле, это довольно просто и достигается

<action method="addLink" translate="label" module="checkout"><name>cart</name><path>checkout/cart/</path><label>My Cart</label></action>

в файле customer.xml.

Проблема связана с перечислением товаров в корзине в этой области. Если бы этот сайт был только на английском языке, несколько операторов if внутри code\core\Mage\Customer\Block\Account\Navigation.php разрешили бы его. Тем не менее, кажется, что весь перевод сделан до того, как будет вызвана функция addItem для добавления этих ссылок в меню.

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

Если у кого-то есть решение или какие-либо подсказки к этому, это было бы очень признательно! Спасибо, что нашли время, чтобы прочитать это.


person Spidelytwang    schedule 26.01.2011    source источник


Ответы (2)


Я почти уверен, что мы не сможем реализовать функциональность «Моя корзина (%d товаров)» из действия блока addLink (особенно из файла макета), так как нам нужно вызвать Mage::helper('checkout/cart')->getCart()->getItemsCount(), чтобы получить количество товаров в нашем тележка.

Я рекомендую использовать операторы if, как вы предлагаете, а затем подключиться к системе локализации, используя <?php echo $this->__($str) ?> для перевода ваших строк в файле шаблона, добавляя перевод в файлы csv локали, если это необходимо.

person Nick    schedule 26.01.2011

Обычно связь с количеством элементов достигается в Mage_Checkout_Block_Links с помощью метода addCartLink(). Боковая панель учетной записи пользователя — это Mage_Customer_Block_Account_Navigation, у которого нет этого метода. Вам нужно добавить его самостоятельно, переопределив класс.

Ваш/Module/etc/config.xml

<config>
    <global>
        <blocks>
            <yourmodule>
                <class>Your_Module_Block</class>
            </yourmodule>
            <customer>
                <rewrite>
                    <account_navigation>Your_Module_Block_Account_Navigation</account_navigation>
                </rewrite>
            </customer>
        </blocks>
    </global>
</config>

Your/Module/Block/Account/Navigation.php
(в основном скопировано из Mage_Checkout_Block_Links)

class Your_Module_Block_Account_Navigation extends Mage_Customer_Block_Account_Navigation
{
    public function addCartLink()
    {
        if ($parentBlock = $this->getParentBlock()) {
            $count = $this->helper('checkout/cart')->getSummaryCount();

            if( $count == 1 ) {
                $text = $this->__('My Cart (%s item)', $count);
            } elseif( $count > 0 ) {
                $text = $this->__('My Cart (%s items)', $count);
            } else {
                $text = $this->__('My Cart');
            }

            $parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, 'class="top-link-cart"');
        }
        return $this;
    }
}

макет/customer.xml

<reference name="customer_account_navigation">
    <action method="addCartLink" />
</reference>
person clockworkgeek    schedule 26.01.2011