3

私は、ユニークな顧客からのユニークな問題に直面しています。Magento のアカウント画面には通常、「マイ カート」が表示される場所が 2 つあります。トップバー、サイドバーにブロックとして。しかし、私はそれらを削除し、サイドバーの [マイ アカウント] セクションにリンク (カート内のアイテム数を含む) を配置することを任されました。

新しいユーザーとして、画像を投稿できないようです。これが問題になります。

マイアカウント

ダッシュボード
アドレス帳
マイ カート (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

通常、アイテム数とのリンクは、その方法で実現されMage_Checkout_Block_LinksますaddCartLink()。ユーザーアカウントのサイドバーは、Mage_Customer_Block_Account_Navigationそのメソッドを持たないものです。クラスをオーバーライドして、自分で追加する必要があります。

Your / 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;
    }
}

layout / customer.xml

<reference name="customer_account_navigation">
    <action method="addCartLink" />
</reference>
于 2011-01-26T16:07:01.403 に答える
1

カート内のアイテムの数を取得するaddLinkために呼び出す必要があるため、ブロック アクション (特にレイアウト ファイル) からは「マイ カート (%d アイテム)」機能を実行できないと確信しています。Mage::helper('checkout/cart')->getCart()->getItemsCount()

<?php echo $this->__($str) ?>あなたが提案するように if ステートメントを使用し、必要に応じてロケール csv ファイルに翻訳を追加して、テンプレート ファイル内の文字列を翻訳するためにローカリゼーション システムを利用することをお勧めします。

于 2011-01-26T14:27:51.723 に答える