Não tenho certeza do que estou fazendo de errado aqui. O bloco que contém os links da categoria é mencionado como navigation.sections. Pensei em direcionar os seguintes argumentos para o contêiner que eu seria capaz de criar um novo link sob ele. Qualquer ajuda é apreciada.
<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>
Respostas:
[EDIT]
Aparentemente, nas versões mais recentes do M2 isso não funciona mais.
Obrigado a Max por apontar isso.
Para a versão posterior, você precisa adicionar um plugin para, em
Magento\Theme\Block\Html\Topmenu
vez de um observador.Adicione isto a
etc/frontend/di.xml
e crie o arquivo de classe do plug-in
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDIT]
Resposta original:
você pode adicionar elementos ao menu superior usando o evento
page_block_html_topmenu_gethtml_before
.Portanto, você precisa criar um módulo com esses arquivos (todos os arquivos devem estar dentro
app/code/[Namespace]/[Module]
):etc/module.xml
- o arquivo de declaração do móduloregistration.php
- o arquivo de registroetc/frontend/events.xml
- o arquivo de declaração de eventosObserver/Topmenu.php
- o observador realAgora execute o cli
php bin/magento setup:upgrade
para instalar o módulo e você estará pronto.fonte
'is_active'
. Por favor, adicione alguns exemplos. Quero link ativo nesta página.$menu->addChild($node)
mais de uma vez, o último substituirá os outros. Ele mostra apenas um menu (o último).Por que todo mundo sempre quer escrever um módulo. Eu fiz isso no meu
layout.xml
e funcionou como um encanto:fonte
Outra solução fora da criação de um módulo é substituir topmenu.phtml. Observarei que a solução fornecida pelo @Marius é a melhor maneira de fazer isso se você pretende que seus links herdem as classes de navegação. Isso aparece no menu móvel do Magento, apenas sem o css adequado. Você pode usar o argumento css_class para estilizar adequadamente.
YourTheme / Magento_Theme / templates / html / topmenu.phtml
YourTheme / Magento_Theme / layout / default.xml
fonte
Esta resposta é fornecida por Marius ♦ Acabei de modificá-la para adicionar categoria filho no menu da guia categoria. Você pode consultar a resposta de Marius ♦. Acabei de modificar o arquivo filho Topmenu.php para adicionar a categoria filho na categoria principal
Você precisa criar um nó para a categoria pai e para a categoria filho e, depois disso, pode atribuir a categoria filho à categoria pai usando o método addChild. Aqui está um exemplo
fonte
Topmenu
. Como quando passe o mouse sobre o link, ele mostra minha divUsando a resposta acima de Marius, adicionei itens de submenu. Também mostro uma maneira de editar a árvore antes da criação do html e, em seguida, como editar o html diretamente, uma vez criado. Funciona no Magento 2.1. Atualize o Topmenu.php com isso:
fonte
Deseja adicionar um link à navegação superior em
<header>
Adicionando um link à página do CMS, Galeria
Edite / coloque default.xml aqui:
Adicione o seguinte código:
Isso adiciona um link à página do CMS, Galeria, com as seguintes configurações:
Adicione o seguinte estilo para garantir que o novo link esteja alinhado corretamente:
(Os produtos são configurados como uma categoria, por exemplo)
fonte
Se você quiser adicionar páginas CMS ou outras, seria melhor
https://github.com/Mestrona/Mestrona_CategoryRedirect
Trabalhou para mim :)
fonte
Para aqueles que procuram adicionar
is_active
expressão, especialmente @zed Barba Negra, que perguntou acima.Eu costumava vincular o contato e ele também funcionará com o módulo personalizado, pois estou vinculando a um.
Espero que ajude alguém.
fonte
Esta também é uma boa opção:
fonte
Apenas para um link do menu de navegação, não há muito o que fazer, encontrei um breve tutorial sobre isso, implica um tema que substitui o
topmenu.phtml
arquivo doMagento_Theme
módulo: https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Eu testei com sucesso, então eu compartilho com vocês.fonte