Agregar enlaces en el bloque header y top links en Magento 2

Si está buscando cómo agregar un enlace en el bloque top links en su tienda de Magento 2, este artículo lo ayudará a hacerlo.

La mejor práctica es hacerlo sobre un nuevo módulo, pero también se puede hacer desde el tema activo.

Para agregar un enlace en el bloque de header y top links, crearemos o modificaremos el archivo default.xml ubicado en: app/design/frontend/<package>/<theme>/Magento_Theme/layout/

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
    	<referenceBlock name="header.links">
        	<block class="Magento\Framework\View\Element\Html\Link" name="custom-header-link">
            	<arguments>
                	<argument name="label" xsi:type="string" translate="true">Custom Header Link</argument>
                	<argument name="path" xsi:type="string">*/*/*</argument>
            	</arguments>
        	</block>
    	</referenceBlock>
    	<referenceBlock name="top.links">
        	<block class="Magento\Framework\View\Element\Html\Link" name="custom-top-link">
            	<arguments>
                	<argument name="label" xsi:type="string" translate="true">Custom Top Link</argument>
                	<argument name="path" xsi:type="string">*/*/*</argument>
            	</arguments>
        	</block>
    	</referenceBlock>
    </body>
</page>

Como verán, hay una referencia al bloque header.links y otra a top.links, esa es la manera de agregar enlaces a Magento 2 desde un archivo de layout xml.

El bloque Magento\Framework\View\Element\Html\Link acepta dos parámetros:

  • label: El texto que mostrará del enlace
  • path: la ruta que tendrá el enlace. definen la ruta relativa de la página. Ejemplo: route/controller/index
  • Luego deben eliminar la caché

Si el cliente no está logueado, el invitado verá solo el custom header link.

También se puede crear un módulo específico para hacerlo pero esta es la forma más simple de llevarlo a cabo desde mi punto de vista.