Ich bin nicht sicher, was ich hier falsch mache. Der Block, in dem sich die Kategorielinks befinden, wird als navigation.sections bezeichnet. Ich dachte, indem ich die folgenden Argumente auf den Container richtete, könnte ich einen neuen Link darunter erstellen. Jede Hilfe wird geschätzt.
<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>
Antworten:
[EDIT]
Anscheinend funktioniert dies in den neuesten Versionen von M2 nicht mehr.
Vielen Dank an Max für diesen Hinweis.
Für eine spätere Version müssen Sie
Magento\Theme\Block\Html\Topmenu
anstelle eines Beobachters ein Plugin für hinzufügen .Fügen Sie dies zu
etc/frontend/di.xml
und erstellen Sie die Plugin-Klassendatei
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDIT]
Ursprüngliche Antwort:
Sie können dem Hauptmenü mithilfe des Ereignisses Elemente hinzufügen
page_block_html_topmenu_gethtml_before
.Sie müssen also ein Modul mit diesen Dateien erstellen (alle Dateien sollten sich in befinden
app/code/[Namespace]/[Module]
):etc/module.xml
- die Moduldeklarationsdateiregistration.php
- die Registrierungsdateietc/frontend/events.xml
- die EreignisdeklarationsdateiObserver/Topmenu.php
- der tatsächliche BeobachterFühren Sie nun das CLI aus
php bin/magento setup:upgrade
, um das Modul zu installieren, und Sie können loslegen .quelle
'is_active'
. Bitte fügen Sie ein Beispiel hinzu. Ich möchte einen aktiven Link auf dieser Seite.$menu->addChild($node)
mehr als einmal benutze , überschreibt der letzte die anderen. Es wird nur ein Menü angezeigt (das letzte).Warum wollen alle immer ein Modul schreiben? Ich habe das in meinem gemacht
layout.xml
und es hat wie ein Zauber funktioniert:quelle
Eine andere Lösung außerhalb des Erstellens eines Moduls ist das Überschreiben von topmenu.phtml. Ich werde bemerken, dass die von @Marius bereitgestellte Lösung der beste Weg ist, dies zu tun, wenn Sie beabsichtigen, dass Ihre Links die Navigationsklassen erben. Dies wird im mobilen Menü von Magento angezeigt, nur ohne das richtige CSS. Sie können das Argument css_class verwenden, um eine entsprechende Formatierung vorzunehmen.
YourTheme / Magento_Theme / templates / html / topmenu.phtml
YourTheme / Magento_Theme / layout / default.xml
quelle
Diese Antwort wurde von Marius bereitgestellt. ♦ Ich habe sie soeben geändert, dass sie eine untergeordnete Kategorie im Menü der Registerkarte Kategorie hinzufügt. Sie können auf die Antwort von Marius verweisen. Ich habe gerade die untergeordnete Datei Topmenu.php geändert, um eine untergeordnete Kategorie in der Hauptkategorie hinzuzufügen
Sie müssen einen Knoten für die übergeordnete Kategorie und die untergeordnete Kategorie erstellen. Anschließend können Sie der übergeordneten Kategorie eine untergeordnete Kategorie zuweisen, indem Sie die Methode addChild verwenden. Dies ist ein Beispiel
quelle
Topmenu
. Wie wenn ich mit der Maus über den Link schwebe, dann zeigt er meine benutzerdefinierte DivUnter Verwendung der obigen Antwort von Marius habe ich Untermenüpunkte hinzugefügt. Ich zeige auch, wie Sie den Baum bearbeiten können, bevor der HTML-Code erstellt wird, und wie Sie den HTML-Code direkt bearbeiten, sobald er erstellt wurde. Es funktioniert in Magento 2.1. Aktualisiere Topmenu.php mit:
quelle
Möchten Sie einen Link zur oberen Navigation in hinzufügen
<header>
Hinzufügen eines Links zur CMS-Seite Galerie ?
Bearbeiten / Platzieren Sie default.xml hier:
Fügen Sie den folgenden Code hinzu:
Dies fügt einen Link zur CMS-Seite Galerie mit den folgenden Einstellungen hinzu:
Fügen Sie den folgenden Stil hinzu, um sicherzustellen, dass der neue Link korrekt ausgerichtet ist:
(Produkte ist als Kategorie für ein Beispiel eingerichtet)
quelle
Wenn Sie CMS-Seiten oder andere hinzufügen möchten, ist dies am besten
https://github.com/Mestrona/Mestrona_CategoryRedirect
Arbeitete für mich :)
quelle
Für diejenigen, die hinzufügen möchten
is_active
Ausdruck möchten, insbesondere @zed Blackbeard, der oben gefragt hat.Ich habe verwendet, um den Kontakt zu verknüpfen, und es wird mit benutzerdefinierten Modul auch funktionieren, wie ich zu einem verknüpfe.
Hoffe es hilft jedem.
quelle
Dies ist auch eine gute Option:
quelle
Nur für einen Navigationsmenü-Link sind nicht viele Schritte zu erledigen. Ich habe ein kurzes Tutorial dazu gefunden. Es impliziert ein Thema, das die
topmenu.phtml
Datei aus demMagento_Theme
Modul überschreibt : https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Ich habe es erfolgreich getestet und teile es mit euch.quelle