Изменить положение ссылки на корзину в верхних ссылках


Я хочу поместить ссылку на корзину в конце верхних ссылок - в идеале, используя мой файл 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?

Author: Raphael at Digital Pianism, 2013-07-11

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().

 4
Author: mnp, 2013-07-11 09:57:18

Другой способ сделать это - создать небольшой модуль (доступен здесь: 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>
 0
Author: Raphael at Digital Pianism, 2016-10-05 13:40:54