2012-05-26 16 views
5

Ich habe versucht, mithilfe von <aParams>class="class-name"</aParams>
Zum Beispiel Klasse nach oben Links hinzuzufügen:Wie Klasse in den oberen Links hinzufügen?

<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> 

Above Trick nicht zumindest für 1.7.0.0 Version für mich zu arbeiten.
Irgendeine Idee?

Edit:
Ich glaube, ich es fest <li/><a>class="top-links-register"</a> mit:

<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> 

Beachten Sie, dass <li/>

Antwort

12

prepend müssen Wie Sie entdeckt haben, die Methodensignatur für addlink ist:

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

Also ein richtiger Anruf in einem Layout, mit al l die Parameter, wäre:

<action method="addLink"> 
    <label/> 
    <url/> 
    <title/> 
    <prepare/> 
    <urlParams/> 
    <position/> 
    <liParams/> 
    <aParams/> 
    <beforeText/> 
    <afterText/> 
</action> 

Leider Magento ist nicht Reflexion über die Aktion Element Kinder benannte Parameter des Verfahrens zur Karte und stattdessen wird je nach Position.

Eine zusätzliche Anmerkung, liParams und aParams können entweder eine Zeichenfolge oder eine Reihe untergeordneter Elemente sein, die Schlüssel/Wert-Paare darstellen.

14

Zur Vervollständigung Lee Antwort mit einem Beispiel, eine Klasse nach oben Link hinzuzufügen (das <li> Element selbst) Sie es durch einen neuen Knoten (oder eine Zeichenfolge) unterhalb die <liParams> wie dies tun können:

<action method="addLink"> 
    <label/> 
    <url/> 
    <title/> 
    <prepare/> 
    <urlParams/> 
    <position/> 
    <liParams> 
     <class>myclassname</class> 
    </liParams> 
    <aParams/> 
    <beforeText/> 
    <afterText/> 
</action> 

Aber wie Lee betont, müssen Sie die Reihenfolge dieser untergeordneten Elemente beibehalten.

Wenn Sie die Klasse auf die <a>innerhalb die Liste setzen wollen, dann ist die Syntax ähnlich ist, zielen Sie einfach den Knoten:

<action method="addLink"> 
    <label/> 
    <url/> 
    <title/> 
    <prepare/> 
    <urlParams/> 
    <position/> 
    <liParams/> 
    <aParams> 
     <class>myclassname</class> 
    </aParams> 
    <beforeText/> 
    <afterText/> 
</action> 

Wenn Sie mehr Flexibilität über den Link-Text Bei der Formatierung besteht eine alternative Methode darin, die Verknüpfung in einem Block zu generieren und diesen Block dann hinzuzufügen, anstatt den Knoten "addLink" zu verwenden.

So werden die Cart- und Checkout-Links hinzugefügt, anstatt einen Link im XML zu den Top-Links hinzuzufügen, rufen sie die addLink-Methode direkt innerhalb eines Blocks auf. Auf diese Weise können sie den für jeden Kunden anzuzeigenden Text berechnen .

Siehe die Mage_Checkout_Block_Links Klasse in Kombination mit base\default\layout\checkout.xml für ein Beispiel dafür.

Verwandte Themen