Изменить положение ссылки на корзину в верхних ссылках
Я хочу поместить ссылку на корзину в конце верхних ссылок - в идеале, используя мой файл 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
?
2 answers
Позиция жестко задана в /app/code/core/Mage/Checkout/Block/Links.php
:
$parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, 'class="top-link-cart"');
Корзина - это pos 50, а ссылка для оформления заказа - pos 60. Так что, возможно, самый простой способ - разместить все ссылки top.ниже 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>