我想将购物车链接放在顶部链接的末尾 - 理想情况下使用我的 local.xml 文件。

大多数顶级链接都是这样的:

<reference name="top.links">
      <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action>
</reference>

我显然可以改变位置。

但是购物车链接似乎是这样添加的:

<block type="checkout/links" name="checkout_cart_link">
       <action method="addCartLink"></action>
       <action method="addCheckoutLink"></action>
</block>

我如何更改不使用该链接的位置 addLink 方法?

有帮助吗?

解决方案

该位置是硬编码的 /app/code/core/Mage/Checkout/Block/Links.php:

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

购物车为POS 50,结帐链接为POS60。因此,最简单的方法是将所有顶部放置在50以下。但是,要将购物车链接放在最后,您必须重写 addCartLink() 方法。

其他提示

另一种方法是创建一个小模块(在此处可用: https://github.com/digitalpianism/easytoplinks)

app/etc/modules/DigitalPianism_EasyToplinks.xml

<?xml version="1.0"?>
<config>
    <modules>
        <DigitalPianism_EasyToplinks>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Page/>
            </depends>
        </DigitalPianism_EasyToplinks>
    </modules>
</config>

app/code/local/FactoryX/EasyToplinks/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <DigitalPianism_EasyToplinks>
            <version>0.0.5</version>
        </DigitalPianism_EasyToplinks>
    </modules>
    <global>
        <blocks>
            <page>
                <!--
                Mage_Page_Block_Template_Links
                -->
                <rewrite>
                    <template_links>DigitalPianism_EasyToplinks_Block_Page_Template_Links</template_links>
                </rewrite>
            </page>
        </blocks>
    </global>
</config>

app/code/local/FactoryX/EasyToplinks/Block/Page/Template/Links.php

<?php

/**
 * Class DigitalPianism_EasyToplinks_Block_Page_Template_Links
 */
class DigitalPianism_EasyToplinks_Block_Page_Template_Links extends Mage_Page_Block_Template_Links
{

    /**
     * Change the position of an existing to make the layout customization easier
     * @param string $url
     * @param int $position
     * @return $this
     */
    public function setPosition($url, $position)
    {
        // Get the link and delete it from the current position
        foreach ($this->_links as $k => $v) {
            if ($v->getUrl() == $url) {
                $link = $this->_links[$k];
                unset($this->_links[$k]);
            }
        }

        if (isset($link)) {
            // Add link to new position
            $this->_addIntoPosition($link, $position);
        }

        return $this;
    }
}

现在您有了这个模块 通过布局轻松更改位置 通过使用:

<reference name="top.links">
    <action method="setPosition">
        <url>checkout/cart</url>
        <position>99</position>
    </action>
</reference>
许可以下: CC-BY-SA归因
scroll top