Nie jestem pewien, co robię źle tutaj. Blok, w którym znajdują się linki kategorii, jest nazywany sekcją navigation.section. Myślałem, kierując następujące argumenty w stronę kontenera, że będę mógł utworzyć pod nim nowy link. Każda pomoc jest mile widziana.
<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>
Odpowiedzi:
[EDYCJA]
Najwyraźniej w najnowszych wersjach M2 to już nie działa.
Dzięki Max za zwrócenie na to uwagi.
W nowszej wersji musisz dodać wtyczkę
Magento\Theme\Block\Html\Topmenu
zamiast obserwatora.Dodaj to do
etc/frontend/di.xml
i utwórz plik klasy wtyczki
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDYCJA]
Oryginalna odpowiedź:
Możesz dodać elementy do górnego menu za pomocą zdarzenia
page_block_html_topmenu_gethtml_before
.Musisz więc utworzyć moduł z tymi plikami (wszystkie pliki powinny znajdować się w
app/code/[Namespace]/[Module]
):etc/module.xml
- plik deklaracji modułuregistration.php
- plik rejestracyjnyetc/frontend/events.xml
- plik deklaracji zdarzeńObserver/Topmenu.php
- rzeczywisty obserwatorTeraz uruchom w cli,
php bin/magento setup:upgrade
aby zainstalować moduł i możesz zacząć.źródło
'is_active'
. Dodaj przykład. Chcę aktywny link na tej stronie.$menu->addChild($node)
więcej niż jeden raz, ostatni z nich zastąpi pozostałe. Pokazuje tylko jedno menu (ostatnie).Dlaczego wszyscy zawsze chcą napisać moduł. Zrobiłem to w sobie
layout.xml
i działało to jak urok:źródło
Innym rozwiązaniem poza tworzeniem modułu jest zastąpienie topmenu.phtml. Zauważę, że rozwiązanie dostarczone przez @Marius jest najlepszym sposobem na zrobienie tego, jeśli twoje linki mają odziedziczyć klasy nawigacyjne. To pokazuje się w mobilnym menu Magento, tylko bez odpowiedniego css. Możesz użyć argumentu css_class do odpowiedniego stylu.
YourTheme / Magento_Theme / templates / html / topmenu.phtml
YourTheme / Magento_Theme / layout / default.xml
źródło
Ta odpowiedź pochodzi od Mariusza ♦ Właśnie ją zmodyfikowałem, aby dodać kategorię podrzędną w menu zakładki kategorii, do której możesz odnieść odpowiedź Mariusa ♦. Właśnie zmodyfikowałem podrzędny plik Topmenu.php, aby dodać kategorię podrzędną do głównej kategorii
Musisz utworzyć węzeł dla kategorii nadrzędnej i kategorii podrzędnej, a następnie możesz przypisać kategorię podrzędną do kategorii nadrzędnej za pomocą metody addChild. Oto przykład
źródło
Topmenu
. Jak kiedy najecham myszką na link, pokazuje mój niestandardowy divKorzystając z powyższej odpowiedzi Mariusza, dodałem pozycje podmenu. Pokazuję także sposób edycji drzewa przed utworzeniem HTML, a następnie sposób edycji HTML bezpośrednio po jego utworzeniu. Działa w Magento 2.1. Zaktualizuj Topmenu.php o:
źródło
Chcesz dodać link do górnej nawigacji w sekcji
<header>
Dodawanie linku do strony CMS, Galeria
Edytuj / Umieść default.xml tutaj:
Dodaj następujący kod:
Dodaje to link do strony CMS, Galerii, z następującymi ustawieniami:
Dodaj następującą stylizację, aby zapewnić prawidłowe wyrównanie nowego łącza:
(Produkty są ustawione jako kategoria na przykład)
źródło
Jeśli chcesz dodać strony CMS lub inne, byłoby to najlepsze
https://github.com/Mestrona/Mestrona_CategoryRedirect
Pracował dla mnie :)
źródło
Dla tych, którzy chcą dodać
is_active
wyraz, szczególnie @zed Czarnobrody, który pytał powyżej.Kiedyś łączyłem kontakt i będzie on również działał z niestandardowym modułem, ponieważ łączę się z jednym.
Mam nadzieję, że to pomoże każdemu.
źródło
Jest to również dobra opcja:
źródło
Tylko dla łącza menu nawigacyjnego nie ma wiele kroków do osiągnięcia, znalazłem krótki samouczek na ten temat, sugeruje motyw, który zastępuje
topmenu.phtml
plik zMagento_Theme
modułu: https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Udało mi się to przetestować, więc udostępniam wam.źródło