No estoy seguro de qué estoy haciendo mal aquí. Se hace referencia al bloque que contiene los enlaces de categoría como navigation.sections. Pensé que si dirigía los siguientes argumentos hacia el contenedor, podría crear un nuevo enlace debajo de él. Cualquier ayuda es 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>
Respuestas:
[EDITAR]
Aparentemente, en las últimas versiones de M2 esto ya no funciona.
Gracias a Max por señalar esto.
Para la versión posterior, debe agregar un complemento en
Magento\Theme\Block\Html\Topmenu
lugar de un observador.Agregue esto a
etc/frontend/di.xml
y crea el archivo de clase de complemento
[Namespace]/[Module]/Plugin/Block/Topmenu.php
[/ EDITAR]
Respuesta original:
puede agregar elementos al menú superior utilizando el evento
page_block_html_topmenu_gethtml_before
.Por lo tanto, debe crear un módulo con estos archivos (todos los archivos deben estar en
app/code/[Namespace]/[Module]
):etc/module.xml
- el archivo de declaración del móduloregistration.php
- el archivo de registroetc/frontend/events.xml
- el archivo de declaración de eventosObserver/Topmenu.php
- el observador realAhora ejecute en el cli
php bin/magento setup:upgrade
para instalar el módulo y ya está listo.fuente
'is_active'
. Por favor agregue algún ejemplo. Quiero un enlace activo en esta página.$menu->addChild($node)
más de una vez, el último anula a los otros. Solo muestra un menú (el último).¿Por qué todo el mundo siempre quiere escribir un módulo? Hice esto en mi
layout.xml
y funcionó a las mil maravillas:fuente
Otra solución fuera de crear un módulo es sobrescribir topmenu.phtml. Notaré que la solución provista por @Marius es la mejor manera de hacer esto si desea que sus enlaces hereden las clases de navegación. Esto se muestra en el menú móvil de Magento, solo que sin el CSS apropiado. Podría usar el argumento css_class para diseñar en consecuencia.
YourTheme / Magento_Theme / templates / html / topmenu.phtml
YourTheme / Magento_Theme / layout / default.xml
fuente
Esta respuesta es proporcionada por Marius ♦. La acabo de modificar para agregar una categoría secundaria en el menú de pestaña de categoría. Puede consultar la respuesta de Marius ♦. Acabo de modificar el archivo infantil Topmenu.php para agregar una categoría infantil en la categoría principal
Debe crear un nodo para la categoría principal y para la categoría secundaria y, después de eso, puede asignar una categoría secundaria a la categoría principal mediante el método addChild. A continuación se muestra un ejemplo.
fuente
Topmenu
. Al igual que cuando paso el mouse sobre el Enlace, muestra mi divUsando la respuesta anterior de Marius, agregué elementos de submenú. También muestro una forma en que puede editar el árbol antes de que se cree el html y luego cómo editar el html directamente una vez que se crea. Funciona en Magento 2.1. Actualice Topmenu.php con esto:
fuente
Desea agregar un enlace a la navegación superior dentro de
<header>
Agregar un enlace a la página CMS, Galería
Editar / colocar default.xml aquí:
Agregue el siguiente código:
Esto agrega un enlace a la página CMS, Galería, con la siguiente configuración:
Agregue el siguiente estilo para asegurarse de que el nuevo enlace se alinee correctamente:
(Los productos se configuran como una categoría para un ejemplo)
fuente
Si desea agregar páginas CMS u otras, sería mejor
https://github.com/Mestrona/Mestrona_CategoryRedirect
Trabajó para mi :)
fuente
Para aquellos que buscan agregar
is_active
expresión, especialmente @zed Blackbeard que preguntó anteriormente.Solía vincular el contacto y también funcionará con un módulo personalizado, ya que estoy vinculando a uno.
Espero que ayude a cualquiera.
fuente
Esta también es una buena opción:
fuente
Solo para un enlace del menú de navegación, no hay muchos pasos para lograr, he encontrado un breve tutorial sobre cómo hacerlo, implica un tema que anula el
topmenu.phtml
archivo delMagento_Theme
módulo: https://linkstraffic.net/adding-custom- menu-item-inside-magento2 / Lo he probado con éxito, así que lo comparto con ustedes.fuente