Najlepsze praktyki Sposób edycji najlepszych linków Magento

22

Powiedzmy, że chcemy dodać ikonę koszyka na zakupy tuż przed linkiem „Mój koszyk” na najlepszych linkach Magento (patrz górne linki poniżej).

wprowadź opis zdjęcia tutaj

Jak najlepiej to zrobić?

  1. Zrób coś z toplinks.php?
  2. Zrób coś z links.phtml?
  3. Plik XML?
  4. Jakieś inne opcje?

Rozumiem, że można to zrobić za pomocą CSS, ale w miarę wzrostu moich potrzeb w zakresie dostosowywania chcę wiedzieć, jak można to zrobić bez CSS, dzięki czemu mogę dostosowywać trudniejsze rzeczy.

Raphael Rafatpanah
źródło

Odpowiedzi:

12

W każdym razie nie edytuj pliku szablonu ( links.phtml). Służy to jako ogólny szablon dla wszystkich list linków. Na przykład służy również do linków w stopce.
Dzięki toplinks.phpniemu możesz robić, co chcesz, ponieważ jest przestarzałe od wersji CE 1.4.0.1.
Polecam użycie plików xml, które dodają linki do górnego kontenera, aby osiągnąć to, czego potrzebujesz. Metoda, która jest wywoływana, gdy dodanie nowego linku obsługuje pewne parametry, które pozwalają na dodawanie klas i inne atrybuty i znaczniki w linkach i tekstem przed i po linku link.
addLinklia

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

Jeśli chcesz dodać ikonę do menu mojego konta, możesz ustawić $beforeTextopcję <span class="icon"></span>i dodać style w klasie ikon.
W przypadku linków do koszyka i kasy jest to trochę trudniejsze, ponieważ są one dodawane przez obiekt bloku, a nie bezpośrednio z pliku układu.
Jeśli potrzebujesz czegoś innego do koszyka lub linii kasy, wszystko, co musisz zrobić, to zastąpić metody Mage_Checkout_Block_Links::addCartLink()lub Mage_Checkout_Block_Links::addCheckoutLink(). Te 2 wywołują to samo addLink()i możesz przekazać do niego różne parametry.

Marius
źródło
1
Właśnie takiego wyjaśnienia szukałem. Zdecydowanie mam przed sobą dużo nauki, ale teraz mam pomysł, od czego zacząć. Spróbuję dodać moją ikonę (z paska startowego) następującym tekstem $ beforeText = '<i class = "icon-shopping-cart"> </i>' - Dziękuję!
Raphael Rafatpanah
Którego pliku XML chciałbym do tego użyć?
Raphael Rafatpanah
Wyjaśniłem, że w przypadku linków do koszyka i kasy nie można tego zrobić z pliku układu. Musisz zastąpić tę metodęMage_Checkout_Block_Links::addCartLink()
Marius
1
Dobrze. Zakładam, że zastąpię metodę, którą muszę dodać plik do niestandardowych plików motywu i wywołać tam metodę, która zastąpi poprzednią instancję. Czy mógłbyś skierować mnie we właściwym kierunku, na przykład, który plik zawierałby metodę Mage_Checkout_Block_Links. Czy to links.php?
Raphael Rafatpanah
Jeśli wybierzesz ścieżkę XML (którą zdecydowanie powinieneś), zwróć uwagę, że aby użyć jej <span class="icon"></span>jako tekstu przedtem, musisz ją tak otoczyć <![CDATA[<span class="icon"></span>]]>. Parser XML również pobiera nowe wiersze, więc musisz umieścić go zaraz po tagu otwierającym:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk
9

Jeśli chcesz zastosować szablon niestandardowy tylko do Górnych linków, możesz to zrobić w następujący sposób w pliku local.xml swojego motywu:

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

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

    </reference>
<default>

Następnie skopiuj page / template / links.phtml i zmień jego nazwę na page / template / my_links.phtml i zrób wszystko, czego potrzebujesz w nowym pliku szablonu.

Aby dodać niestandardowy link do Top Links za pośrednictwem 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>

Zobacz także tę stronę: http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way

zitix
źródło
Czy korzystając z tej metody mogę dodać HTML między każdym linkiem?
Raphael Rafatpanah
@RaphaelRafatpanah Tak, w links.phtml jest pętla <?php foreach($_links as $_link): ?>. Możesz dodać dowolny kod HTML do tej pętli.
zitix 16.04.13
Ale wtedy byłby dodawany do każdego linku, tak? Chcę dodać dostosowany HTML między każdym linkiem. Sądzę też, że pętla foreach zostanie użyta dla linków stopki, a także linków nagłówka, więc jeśli dodam html między linkami, zostaną one również zastosowane do linków stopki.
Raphael Rafatpanah
1
To jest sztuczka: po utworzeniu page / template / my_links.phtml (który jest kopią oryginalnych links.phtml ) i po dodaniu kodu, który opublikowałem na pliku local.xml , szablon ten będzie używany tylko do renderowania Top Links. Żadnych stopek ani żadnych innych linków.
zitix 16.04.13
0

Znajdź tę ścieżkę, aby zmienić najlepsze linki:

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

i wyszukaj: Zaloguj się (w moim przypadku).

Teraz zmień tytuł i etykietę na żądany tekst.

Jayank Chopra
źródło
Nie powinieneś edytować podstawowych plików!
Czarny
-1

Musisz edytować następujące 2 pliki.

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

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

W tych plikach łącza są dodawane name="top.links". Po prostu je skomentuj.

Henry Roger
źródło
2
Witamy w Magento SE. Chociaż ta odpowiedź działa, pytanie było wyraźnie na temat najlepszych praktyk, a edytowanie podstawowych plików nie jest najlepszą praktyką w Magento.
Fabian Schmengler,