2012-05-26 21 views
5

Próbowałem dodać klasę do najlepszych linków za pomocą <aParams>class="class-name"</aParams>
na przykład:Jak dodać zajęcia do najlepszych linków?

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

Przede sztuczka nie działa dla mnie przynajmniej do wersji 1.7.0.0.
Każdy pomysł?

Edit:
myślę Naprawiłem go za pomocą <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> 

Pamiętaj, że musisz poprzedzić <li/>

Odpowiedz

12

Jak odkryli, podpis metoda AddLink jest:

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

Prawidłowe wywołanie w układzie, używając al l parametry, byłoby:

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

Niestety Magento nie jest przy użyciu odbicia do mapowania dzieci elementów działanie do nazwanych parametrów metody i zamiast w zależności od położenia.

Jedna dodatkowa uwaga, liParams i aParams mogą być ciągiem lub serią elementów potomnych reprezentujących pary klucz/wartość.

14

Aby zakończyć odpowiedź Lee z przykładu, aby dodać klasę na górę łącza (sam element <li>) można to zrobić poprzez nowy węzeł (lub ciąg) pod <liParams> jak ten:

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

Jednak Lee podkreśla, że ​​należy zachować kolejność tych elementów potomnych.

Jeśli chcesz umieścić klasę na <a>ciągu z listy, a następnie składnia jest podobna, wystarczy kierować węzeł:

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

Jeśli potrzebujesz więcej elastyczność w tekście łącza i formatowanie, alternatywną metodą jest wygenerowanie łącza w bloku, a następnie dodanie tego bloku zamiast korzystania z węzła "addLink".

W ten sposób dodaje się linki do koszyka i do kasy, zamiast dodawać odnośniki w pliku XML do górnych łączy, które bezpośrednio wywołują metodę addLink z poziomu bloku, w ten sposób mogą obliczyć odpowiedni tekst do wyświetlenia dla każdego klienta .

Zobacz klasę Mage_Checkout_Block_Links w połączeniu z base\default\layout\checkout.xml na przykład.