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.