在顶部链接中更改购物车链接的位置
题
我想将购物车链接放在顶部链接的末尾 - 理想情况下使用我的 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>