Je ne sais pas ce que je fais mal ici. Le bloc qui contient les liens de catégorie est appelé navigation.sections. J'ai pensé qu'en dirigeant les arguments suivants vers le conteneur, je pourrais créer un nouveau lien sous celui-ci. Toute aide est appréciée.
<referenceContainer name="navigation.sections">
<block class="Magento\Framework\View\Element\Html\Links" name="mylink">
<arguments>
<argument name="label" xsi:type="string">Mylink</argument>
<argument name="path" xsi:type="string">mypath</argument>
<argument name="css_class" xsi:type="string">mycss</argument>
</arguments>
</block>
</referenceContainer>
Réponses:
[EDIT]
Apparemment, dans les dernières versions de M2, cela ne fonctionne plus.
Merci à Max de l'avoir signalé.
Pour une version ultérieure, vous devez ajouter un plugin pour
Magento\Theme\Block\Html\Topmenu
au lieu d'un observateur.Ajoutez ceci à
etc/frontend/di.xml
et créer le fichier de classe de plugin
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDIT]
Réponse originale:
Vous pouvez ajouter des éléments au menu supérieur en utilisant l'événement
page_block_html_topmenu_gethtml_before
.Vous devez donc créer un module avec ces fichiers (tous les fichiers doivent être dedans
app/code/[Namespace]/[Module]
):etc/module.xml
- le fichier de déclaration du moduleregistration.php
- le dossier d'inscriptionetc/frontend/events.xml
- le fichier de déclaration des événementsObserver/Topmenu.php
- l'observateur réelMaintenant, exécutez dans le cli
php bin/magento setup:upgrade
pour installer le module et vous êtes prêt à partir.la source
'is_active'
. Veuillez ajouter un exemple. je veux un lien actif sur cette page.$menu->addChild($node)
plus d'une fois, la dernière remplace les autres. Il ne montre qu'un seul menu (le dernier).Pourquoi tout le monde veut toujours écrire un module. Je l'ai fait dans mon
layout.xml
et cela a fonctionné comme un charme:la source
Une autre solution en dehors de la création d'un module est d'écraser topmenu.phtml. Je noterai que la solution fournie par @Marius est la meilleure façon de le faire si vous souhaitez que vos liens héritent des classes de navigation. Cela apparaît dans le menu mobile de Magento, juste sans le bon CSS. Vous pouvez utiliser l'argument css_class pour styliser en conséquence.
YourTheme / Magento_Theme / templates / html / topmenu.phtml
YourTheme / Magento_Theme / layout / default.xml
la source
Cette réponse est fournie par Marius ♦ je viens de la modifier pour ajouter une catégorie enfant dans le menu de l'onglet catégorie, vous pouvez vous référer à la réponse de Marius ♦. Je viens de modifier le fichier enfant Topmenu.php pour ajouter une catégorie enfant dans la catégorie principale
Vous devez créer un nœud pour la catégorie parent et pour la catégorie enfant et après cela, vous pouvez affecter une catégorie enfant à la catégorie parent en utilisant la méthode addChild voici un exemple
la source
Topmenu
. Comme lorsque je passe la souris sur le lien, cela montre ma divEn utilisant la réponse ci-dessus de Marius, j'ai ajouté des éléments de sous-menu. Je montre également un moyen de modifier l'arborescence avant la création du HTML, puis comment modifier le HTML directement une fois qu'il est créé. Cela fonctionne dans Magento 2.1. Mettez à jour Topmenu.php avec ceci:
la source
Vous souhaitez ajouter un lien vers la navigation supérieure dans
<header>
Ajouter un lien vers la page CMS, Galerie
Editez / placez default.xml ici:
Ajoutez le code suivant:
Cela ajoute un lien vers la page CMS, Galerie, avec les paramètres suivants:
Ajoutez le style suivant pour vous assurer que le nouveau lien s'aligne correctement:
(Les produits sont configurés en tant que catégorie pour un exemple)
la source
Si vous souhaitez ajouter des pages CMS ou autres, ce serait mieux
https://github.com/Mestrona/Mestrona_CategoryRedirect
A travaillé pour moi :)
la source
Pour ceux qui cherchent à ajouter de l'
is_active
expression, en particulier @zed Blackbeard qui a demandé ci-dessus.J'ai l'habitude de lier le contact et cela fonctionnera également avec le module personnalisé car je le relie à un.
J'espère que cela aide n'importe qui.
la source
C'est aussi une bonne option:
la source
Juste pour un lien de menu de navigation, il n'y a pas beaucoup d'étapes à réaliser, j'ai trouvé un court tutoriel pour le faire, cela implique un thème qui remplace le
topmenu.phtml
fichier duMagento_Theme
module: https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Je l'ai testé avec succès, donc je le partage avec vous.la source