我尝试使用<aParams>class="class-name"</aParams>
添加类到顶部链接
例如:
<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/><aParams>class="top-link-myaccount"</aParams><position>10</position></action>
</reference>
至少在1.7.0.0版本上,上面的技巧对我不起作用 有什么想法吗?
修改
我想我用<li/><a>class="top-links-register"</a>
修正了它:
<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/><aParams/><position>10</position><li/><a>class="top-link-myaccount"</a></action>
</reference>
请注意,您必须添加<li/>
答案 0 :(得分:14)
要通过示例完成Lee的答案,要将一个类添加到顶部链接(<li>
元素本身),您可以通过<liParams>
下面的新节点(或字符串)来完成这样:
<action method="addLink">
<label/>
<url/>
<title/>
<prepare/>
<urlParams/>
<position/>
<liParams>
<class>myclassname</class>
</liParams>
<aParams/>
<beforeText/>
<afterText/>
</action>
但正如李指出的那样,你需要保留这些子元素的顺序。
如果您想将课程放在列表中的<a>
内,那么语法类似,您只需定位该节点:
<action method="addLink">
<label/>
<url/>
<title/>
<prepare/>
<urlParams/>
<position/>
<liParams/>
<aParams>
<class>myclassname</class>
</aParams>
<beforeText/>
<afterText/>
</action>
如果您需要更多对链接文本和格式的灵活性,另一种方法是在块中生成链接,然后添加该块而不是使用“addLink”节点。
这是添加购物车和结账链接的方式,而不是在XML中添加链接,他们直接从块中调用addLink方法,这样他们就可以计算出为每个客户显示的相应文本。
有关此示例,请参阅Mage_Checkout_Block_Links
课程与base\default\layout\checkout.xml
的组合。
答案 1 :(得分:12)
正如您所发现的,addLink的方法签名是:
public function addLink($label, $url='', $title='', $prepare=false, $urlParams=array(), $position=null, $liParams=null, $aParams=null, $beforeText='', $afterText='')
因此,使用所有参数在布局中进行适当的调用将是:
<action method="addLink">
<label/>
<url/>
<title/>
<prepare/>
<urlParams/>
<position/>
<liParams/>
<aParams/>
<beforeText/>
<afterText/>
</action>
不幸的是,Magento没有使用反射将action元素子元素映射到方法的命名参数,而是取决于位置。
另外一个注释,liParams和aParams可以是字符串或一系列表示键/值对的子元素。