Modo di buone pratiche per modificare i collegamenti principali di Magento


22

Supponiamo di voler aggiungere un'icona del carrello subito prima del collegamento "Carrello" sui collegamenti principali di Magento (vedere i collegamenti principali di seguito).

inserisci qui la descrizione dell'immagine

Qual è il modo migliore per farlo?

  1. Fare qualcosa per toplinks.php?
  2. Fare qualcosa per links.phtml?
  3. Un file XML?
  4. Altre opzioni?

Capisco che questo può essere fatto con i CSS, ma man mano che le mie esigenze di personalizzazione crescono, voglio sapere come farlo senza CSS, quindi sono in grado di personalizzare le cose più difficili.

Risposte:


12

In ogni caso non modificare il file modello ( links.phtml). Questo funge da modello generale per tutti gli elenchi di collegamenti. Ad esempio, viene utilizzato anche per i collegamenti nel piè di pagina.
Con toplinks.phpte puoi fare quello che vuoi perché è deprecato da CE v1.4.0.1.
Consiglio di utilizzare i file XML che aggiungono i collegamenti al contenitore superiore per ottenere ciò di cui hai bisogno.
Il addLinkmetodo chiamato quando si aggiunge un nuovo collegamento supporta alcuni parametri che consentono di aggiungere classi e altri attributi lie atag nei collegamenti e del testo prima del collegamento e dopo il collegamento.

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

Se si desidera aggiungere un'icona per il mio menu account è possibile impostare l' $beforeTextad <span class="icon"></span>e aggiungere alcuni stili sulla classe icona.
Per i link carrello e checkout è un po 'più complicato perché vengono aggiunti tramite un oggetto blocco non direttamente dal file di layout.
Se hai bisogno di qualcosa di diverso per il carrello o per i checkout, tutto ciò che devi fare è ignorare i metodi Mage_Checkout_Block_Links::addCartLink()o Mage_Checkout_Block_Links::addCheckoutLink(). Questi 2 chiamano lo stesso addLink()e puoi passarci diversi parametri.


1
Questo è esattamente il tipo di spiegazione che stavo cercando. Ho sicuramente molto da imparare di fronte a me, ma ora ho un'idea da dove cominciare. Proverò ad aggiungere la mia icona (da bootstrap) con il seguente testo $ beforeText = '<i class = "icon-shopping-cart"> </i>' - Grazie!
Raphael Rafatpanah,

Quale file XML dovrei usare per questo?
Raphael Rafatpanah,

Ho spiegato che per i link carrello e checkout non è possibile farlo dal file di layout. Devi scavalcare il metodoMage_Checkout_Block_Links::addCartLink()
Marius

1
Ok. Sto assumendo di ignorare il metodo di cui ho bisogno per aggiungere un file ai miei file di temi personalizzati e chiamare lì il metodo, che sostituirà la sua istanza precedente. Ti dispiacerebbe indicarmi nella giusta direzione, ad esempio, quale file conterrebbe il metodo Mage_Checkout_Block_Links. Si tratta di links.php?
Raphael Rafatpanah,

Se <span class="icon"></span>segui il percorso XML (che sicuramente dovresti) prendi nota, che per usare come il testo precedente devi racchiuderlo in questo modo <![CDATA[<span class="icon"></span>]]>. Il parser XML raccoglie anche nuove righe, quindi devi metterlo subito dopo il tag di apertura:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk

9

Nel caso in cui sia necessario applicare un modello personalizzato solo per i collegamenti principali, è possibile farlo in questo modo nel local.xml del tema:

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

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

    </reference>
<default>

Quindi copia page / template / links.phtml e rinominalo in page / template / my_links.phtml e fai tutto ciò di cui hai bisogno all'interno di quel nuovo file modello.

Per aggiungere un collegamento personalizzato ai collegamenti principali tramite 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>

Vedi anche questa pagina: http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way


Utilizzando questo metodo, sarei in grado di aggiungere html tra ciascun collegamento?
Raphael Rafatpanah,

@RaphaelRafatpanah Sì, in links.phtml c'è un loop <?php foreach($_links as $_link): ?>. Puoi aggiungere qualsiasi HTML all'interno di quel ciclo.
zitix,

Ma poi verrebbe aggiunto ad ogni link, sì? Sto cercando di aggiungere HTML personalizzato tra ogni collegamento. Inoltre, credo che il ciclo foreach venga utilizzato sia per i collegamenti a piè di pagina che per quelli di intestazione, quindi se aggiungo html tra i collegamenti, verranno applicati anche ai collegamenti a piè di pagina.
Raphael Rafatpanah,

1
Questo è il trucco: dopo aver creato page / template / my_links.phtml (che è una copia di links.phtml originale ) e dopo aver aggiunto il codice che ho pubblicato nel tuo local.xml , quel modello verrà utilizzato solo per il rendering di Top Links. Non collegamenti a piè di pagina o altri collegamenti.
zitix,


0

Trova questo percorso per modificare i collegamenti principali:

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

e cerca: Accedi (Nel mio caso).

Ora cambia titolo ed etichetta con il testo desiderato.


Non dovresti modificare i file core!
Nero

-1

Devi modificare i seguenti 2 file.

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

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

In questi file, vengono aggiunti i collegamenti name="top.links". Commentali e basta.


2
Benvenuti in Magento SE. Mentre questa risposta funziona, la domanda era esplicitamente sulle migliori pratiche e la modifica dei file core è tutt'altro che una buona pratica in Magento.
Fabian Schmengler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.