Magento将id属性添加到顶部链接

时间:2014-07-23 11:17:59

标签: magento magento-1.7

我想在所有热门链接中添加id属性。我有一个解决方案如下

<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><liParams>id="myaccount"</liParams></action>

添加liParams适用于“我的帐户”链接,此解决方案不适用于“我的购物车”和“结帐”链接。

3 个答案:

答案 0 :(得分:3)

@Nilesh Yadav,购物车和结账链接使用不同的方法来创建顶部链接

<action method="addCartLink"></action>
   <action method="addCheckoutLink"></action>

其他使用addLink函数

结帐和购物车使用课程Mage_Checkout_Block_Links功能addCheckoutLink and addCartLink

修改xml代码

  <reference name="top.links">
            <block type="checkout/links" name="checkout_cart_link">
                <action method="addCartLink"><liParams>id="my-custom-id"</liParams></action>
                <action method="addCheckoutLink">  <liParams>id="my-custom-id"</liParams></action>
            </block>
        </reference>

Copy app/code/core/Mage/Checkout/Block/Links.php

app/code/local/Mage/Checkout/Block/Links.php

转到addCartLink中的函数修改逻辑

 public function addCartLink($liparams=null)
 {
.....
if(is_null())
{ $parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, 'class="top-link-cart"');
}else
{
$parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, $liparams, 'class="top-link-cart"');
}

...

另外

  public function addCheckoutLink($liparams=null)
    {
....
        if ($parentBlock && Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
            $text = $this->__('Checkout');
        if(is_null()){
            $parentBlock->addLink(
                $text, 'checkout', $text,
                true, array('_secure' => true), 60, null,
                'class="top-link-checkout"'
            );
    }else{
            $parentBlock->addLink(
                $text, 'checkout', $text,
                true, array('_secure' => true), 60, $liparams=null,
                'class="top-link-checkout"'
            );

        }
        }
..
    }

答案 1 :(得分:3)

结帐链接使用位于app/code/core/Mage/Checkout/Block/Links.php

的以下功能
public function addCartLink()
    {
        ////.....
        $parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, 'class="top-link-cart"');
        return $this;
    }

您可以看到它不包含任何<liParams><aParams>。位于addLink()的{​​{1}}方法包含如下所示的参数

Mage_Page_Block_Template_Links

因此,您可以执行以下任一操作

  1. 覆盖本地的 addCartLink()并添加参数 需要

  2. 删除结帐链接,然后再次使用显式网址添加 PARAMS

  3. 例如,在您的public function addLink($label, $url='', $title='', $prepare=false, $urlParams=array(), $position=null, $liParams=null, $aParams=null, $beforeText='', $afterText='') 中,通过local.xml添加自定义链接到Top Links:

    local.xml

答案 2 :(得分:0)

addCartLink()功能用于在magento中创建顶级购物车链接。 重写 Mage_Checkout_Block_Links 类并更改 addCartLink()函数,如下所示 或者只需将 app / code / core / Mage / Checkout / Block / Links.php 复制到 app / code / local / Mage / Checkout / Block / Links.php 并编辑

 public function addCartLink()
{
    $parentBlock = $this->getParentBlock();
    if ($parentBlock && Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
        $count = $this->getSummaryQty() ? $this->getSummaryQty()
            : $this->helper('checkout/cart')->getSummaryCount();
        if ($count == 1) {
            $text = $this->__('Cart (%s)', $count);
        } elseif ($count > 0) {
            $text = $this->__('Cart (%s)', $count);
        } else {
            $text = $this->__('Cart (0)');
        }

        $parentBlock->removeLinkByUrl($this->getUrl('checkout/cart'));
        $parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, 'id="top_cart"', 'class="top-link-cart"'); //add your custom class or id here
    }
    return $this;
}