3

我面临着一个独特客户的独特问题。在 Magento 的帐户屏幕中,通常有两个地方会出现“我的购物车”;顶栏,并在侧栏中作为一个块。但是,我的任务是删除这些并在侧边栏的“我的帐户”部分中放置一个链接(带有购物车中的商品数量)。

看来,作为新用户,我无法发布任何图像。这会带来问题。

我的帐户

仪表板
地址簿
我的购物车(2 项)<---- 此链接在此处。在此区域内,并显示商品数量
我的订单
我的产品评论
可能会标记时事通讯订阅

现在,添加链接本身就是问题。事实上,它非常简单并且通过以下方式完成

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

在 customer.xml 文件中。

问题源于在该区域内列出购物车中的项目。如果这个网站只有英文,code\core\Mage\Customer\Block\Account\Navigation.php 中的一些“if”语句将解决它。但是,似乎所有翻译都在调用 addItem 函数以将这些链接添加到菜单之前完成。

我认为如果可以在调用 addItem 之前显示购物车中的商品数量,则可以解决此问题,但是标签内部的所有 php 都会被忽略。

如果有人对此有解决方案或任何线索,将不胜感激!感谢您抽时间阅读。

4

2 回答 2

1

我相当确定我们将无法通过addLink块操作(尤其是布局文件)完成“我的购物车(%d 个项目)”功能,因为我们需要调用Mage::helper('checkout/cart')->getCart()->getItemsCount()以获取购物车中的项目数量。

我建议按照您的建议使用 if 语句,然后通过使用<?php echo $this->__($str) ?>翻译模板文件中的字符串来利用本地化系统,如有必要,将翻译添加到区域设置 csv 文件中。

于 2011-01-26T14:27:51.723 回答
1

通常与项目数量的链接是通过Mage_Checkout_Block_Links它的addCartLink()方法实现的。用户帐户侧边栏是Mage_Customer_Block_Account_Navigation没有该方法的。您需要通过覆盖类自己添加它。

你的/模块/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>
于 2011-01-26T16:07:01.403 回答