最佳实践方法,编辑Magento顶部链接


22

假设我们要在Magento顶部链接上的“我的购物车”链接之前添加购物车图标(请参见下面的顶部链接)。

在此处输入图片说明

做这个的最好方式是什么?

  1. 对toplinks.php做点什么?
  2. 对links.phtml做些什么?
  3. 一个xml文件?
  4. 还有其他选择吗?

我了解这可以使用CSS来完成,但是随着我对定制的需求的增长,我想知道没有CSS怎么办,所以我能够定制更困难的事情。

Answers:


12

无论如何,请勿编辑模板文件(links.phtml)。这用作所有链接列表的通用模板。例如,它也用于页脚中的链接。
有了toplinks.phpCE,您就可以做任何您想做的事情,因为从CE v1.4.0.1开始不推荐使用。
我建议使用将链接添加到顶部容器的xml文件来实现所需的功能。添加新链接时调用
addLink方法支持一些参数,这些参数使您可以在链接上lia标签上添加类和其他属性,并在链接之前和之后添加一些文本。

public function addLink($label, $url='', $title='', $prepare=false, $urlParams=array(),
        $position=null, $liParams=null, $aParams=null, $beforeText='', $afterText='')
    { ... }

如果要将图标添加到我的帐户菜单,则可以将设置为$beforeText<span class="icon"></span>并在图标类上添加一些样式。
对于购物车和结帐链接来说,它有点棘手,因为它们是通过块对象而不是直接从布局文件添加的。
如果您需要不同的购物车或收银行,则只需重写方法Mage_Checkout_Block_Links::addCartLink()或即可Mage_Checkout_Block_Links::addCheckoutLink()。这两个调用相同addLink(),您可以向其传递不同的参数。


1
这正是我一直在寻找的解释。我的面前肯定有很多学习知识,但是现在我对从哪里开始有了一个想法。我将尝试使用以下文本$ beforeText ='<i class =“ icon-shopping-cart”> </ i>'添加我的图标(从引导程序添加)-谢谢!
拉斐尔·拉法帕纳

我将为此使用哪个XML文件?
拉斐尔·拉法帕纳

我解释说,对于购物车和结帐链接,您无法从布局文件中执行此操作。您需要重写此方法Mage_Checkout_Block_Links::addCartLink()
Marius

1
好。我假设要覆盖该方法,我需要在自定义主题文件中添加文件并在其中调用该方法,这将覆盖其先前的实例。例如,您介意为我指出正确的方向是,哪个文件包含Mage_Checkout_Block_Links方法。是links.php吗?
Raphael Rafatpanah

如果要走XML路线(绝对应该这样做),请注意,为了<span class="icon"></span>用作beforeText,必须像这样将其括起来<![CDATA[<span class="icon"></span>]]>。XML解析器也会选择新行,因此您必须将其放在开始标记之后:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk 2015年

9

如果只需要对顶部链接应用自定义模板,则可以在主题的local.xml中这样做:

<default>
    <reference name="top.links">

        <action method="setTemplate">
            <template>page/template/my_links.phtml</template>
        </action>

    </reference>
<default>

然后复制page / template / links.phtml并将其重命名为page / template / my_links.phtml并在该新模板文件中执行所需的任何操作。

要通过local.xml向“顶部链接”添加自定义链接:

<reference name="top.links">
    <action method="addLink" translate="label title">
        <label>My Link</label>
        <url>path/to/page</url>
        <title>My link tooltip</title>
        <prepare>true</prepare>
        <urlParams/>
        <position>150</position>
        <liParams>id="my-custom-id"</liParams>
    </action>
</reference>

另请参阅此页面:http : //www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way


使用这种方法,我可以在每个链接之间添加html吗?
Raphael Rafatpanah

@RaphaelRafatpanah是的,在links.phtml中有一个循环<?php foreach($_links as $_link): ?>。您可以在该循环内添加任何HTML。
zitix

但是,然后将其添加到每个链接中,对吗?我希望在每个链接之间添加自定义的html。另外,我相信foreach循环将用于页脚链接以及页眉链接,因此,如果我在链接之间添加html,它们也将应用于页脚链接。
Raphael Rafatpanah

1
这就是窍门:创建page / template / my_links.phtml(是原始links.phtml的副本)之后,然后将我发布的代码添加到local.xml中之后,该模板将用于呈现顶部链接。不是页脚链接或任何其他链接。
zitix


0

请找到以下路径更改顶部链接:

/app/design/frontend/base/default/layout/customer.xml  

并搜索:登录(以我为例)。

现在,用所需的文本更改标题和标签。


您不应该编辑核心文件!
黑色

-1

您需要编辑以下2个文件。

app/design/frontend/default/default/layout/checkout.xml

app/design/frontend/default/default/layout/customer.xml

在这些文件中,链接添加在中name="top.links"。只是将它们注释掉。


2
欢迎来到Magento SE。尽管此答案有效,但问题明确地是关于最佳实践的,而编辑核心文件绝不是Magento中的最佳实践。
Fabian Schmengler,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.