Best Practices Way to Edit Magento Top-Links

22

Supposons que nous souhaitons ajouter une icône de panier juste avant le lien "Mon panier" sur les principaux liens de Magento (voir les principaux liens ci-dessous).

entrez la description de l'image ici

Quelle est la meilleure façon de procéder?

  1. Faire quelque chose à toplinks.php?
  2. Faites quelque chose pour links.phtml?
  3. Un fichier xml?
  4. D'autres options?

Je comprends que cela peut être fait avec CSS, mais à mesure que mes besoins de personnalisation augmentent, je veux savoir comment cela peut se faire sans CSS, donc je suis en mesure de personnaliser des choses plus difficiles.

Raphael Rafatpanah
la source

Réponses:

12

Dans tous les cas, ne modifiez pas le fichier modèle ( links.phtml). Cela sert de modèle général pour toutes les listes de liens. Par exemple, il est également utilisé pour les liens dans le pied de page.
Avec toplinks.phpvous pouvez faire tout ce que vous voulez car est obsolète depuis CE v1.4.0.1.
Je recommande d'utiliser les fichiers xml qui ajoutent les liens vers le conteneur supérieur pour obtenir ce dont vous avez besoin.
La addLinkméthode qui est appelée lors de l'ajout d'un nouveau lien prend en charge certains paramètres qui vous permettent d'ajouter des classes et d'autres attributs liet abalises dans les liens et du texte avant le lien et après le lien.

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

Si vous souhaitez ajouter une icône à mon menu de compte , vous pouvez définir l' $beforeTextà <span class="icon"></span>et ajouter des styles sur la classe d'icônes.
Pour les liens de panier et de paiement, c'est un peu plus compliqué car ils sont ajoutés via un objet bloc pas directement à partir du fichier de mise en page.
Si vous avez besoin de quelque chose de différent pour le panier ou les caisses de caisse, tout ce que vous avez à faire est de remplacer les méthodes Mage_Checkout_Block_Links::addCartLink()ou Mage_Checkout_Block_Links::addCheckoutLink(). Ces 2 appellent le même addLink()et vous pouvez lui passer différents paramètres.

Marius
la source
1
C'est exactement le genre d'explication que je cherchais. J'ai certainement beaucoup d'apprentissage devant moi, mais maintenant j'ai une idée par où commencer. Je vais essayer d'ajouter mon icône (de bootstrap) avec le texte suivant $ beforeText = '<i class = "icon-shopping-cart"> </i>' - Merci!
Raphael Rafatpanah
Quel fichier XML devrais-je utiliser pour cela?
Raphael Rafatpanah
J'ai expliqué que pour le panier et les liens de paiement, vous ne pouvez pas le faire à partir du fichier de mise en page. Vous devez remplacer la méthodeMage_Checkout_Block_Links::addCartLink()
Marius
1
D'accord. Je suppose que pour remplacer la méthode, j'ai besoin d'ajouter un fichier à mes fichiers de thème personnalisés et d'y appeler la méthode, qui remplacera son instance précédente. Pourriez-vous me diriger dans la bonne direction, par exemple, quel fichier contiendrait la méthode Mage_Checkout_Block_Links. Est-ce links.php?
Raphael Rafatpanah
Si vous optez pour la route XML (que vous devriez certainement), notez que pour l'utiliser <span class="icon"></span>comme texte avant, vous devez l'enfermer ainsi <![CDATA[<span class="icon"></span>]]>. L'analyseur XML récupère également de nouvelles lignes, vous devez donc le mettre juste après la balise d'ouverture:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk
9

Dans le cas où vous devez appliquer un modèle personnalisé uniquement pour Top Links, vous pouvez le faire comme ceci dans le fichier local.xml de votre thème:

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

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

    </reference>
<default>

Copiez ensuite page / template / links.phtml et renommez-le page / template / my_links.phtml et faites tout ce dont vous avez besoin dans ce nouveau fichier de modèle.

Pour ajouter un lien personnalisé vers Top Links via 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>

Voir également cette page: http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way

zitix
la source
En utilisant cette méthode, pourrais-je ajouter du HTML entre chaque lien?
Raphael Rafatpanah
@RaphaelRafatpanah Oui, dans links.phtml il y a une boucle <?php foreach($_links as $_link): ?>. Vous pouvez ajouter n'importe quel code HTML à l'intérieur de cette boucle.
zitix
Mais alors il serait ajouté à chaque lien, oui? Je cherche à ajouter du HTML personnalisé entre chaque lien. De plus, je crois que la boucle foreach est utilisée pour les liens de pied de page ainsi que les liens d'en-tête, donc si j'ajoute du HTML entre les liens, ils seront également appliqués aux liens de pied de page.
Raphael Rafatpanah
1
C'est l'astuce: après avoir créé page / modèle / my_links.phtml (qui est une copie de links.phtml d' origine ) et après avoir ajouté le code que j'ai publié dans votre local.xml , ce modèle sera utilisé uniquement pour afficher les liens principaux. Pas de liens de pied de page ou tout autre lien.
zitix
0

Veuillez trouver ce chemin pour changer les principaux liens:

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

et recherchez: Connexion (dans mon cas).

Maintenant, changez le titre et l'étiquette avec le texte souhaité.

Jayank Chopra
la source
Vous ne devez pas modifier les fichiers principaux!
Black
-1

Vous devez modifier les 2 fichiers suivants.

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

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

Dans ces fichiers, les liens sont ajoutés name="top.links". Il suffit de les commenter.

Henry Roger
la source
2
Bienvenue dans Magento SE. Bien que cette réponse fonctionne, la question portait explicitement sur les meilleures pratiques et la modification des fichiers de base est tout sauf la meilleure pratique dans Magento.
Fabian Schmengler