Magento possui uma forma diferenciada de incluir menus em qualquer lugar da loja que é através dos arquivos de layout ou arquivos XML, neste artigo você vai aprender como controlar esses links em poucas linhas.

Comandos para inserir ou remover links no Magento pelo XML

Inserir link no Magento

Pra simplificar todos os arquivos que mostrarei estão na pasta app/design/frontend/base/layout, com isso muito provavelmente você pode acompanhar este artigo sem problemas.

Novos links devem ser inseridos dentro de um bloco do tipo page/template_links, qualquer bloco que tenha type=”page/template_links” irá comportar links inseridos através de uma action, por exemplo o top menu:

<block type="page/template_links" name="top.links" as="topLinks"/>

O código acima é a criação do bloco dos links que ficam no topo da loja no aruivo page.xml, através do controlador <reference> podemos aproveitar este bloco para inserir um link como podemos ver no arquivo customer.xml

<reference name="top.links">
    <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action>
</reference>

O link é inserido através de uma action com method=”addLink”, dentro desse nó (ou controlador, como preferir chamar) temos vários parâmetros, veja o codigo abaixo com cada parâmetro comentado:

<action method="addLink" translate="label title"> <!-- action em si, aqui ele indica que o label e title podem ser traduzidos pela loja -->
    <label>About Us</label> <!-- texto do link -->
    <url>about</url> <!-- a url destito pode-se usar url completa ou parte -->
    <title>About Us</title> <!-- atribudo title do link -->
    <prepare>true</prepare> <!-- deixe como true se badcionar base url param -->
    <urlParams /> <!-- parâmetros da url -->
    <position>1</position> <!-- posição do link dentro do bloco -->
    <liParams/> <!-- propriedades da li que envolve o link, usado para inserir uma classe -->
    <aParams>class="top-link-about-us"</aParams> <!-- parâmetros do link, no caso inseino uma classe -->
    <beforeText></beforeText><!-- inserido antes do texto do link -->
    <afterText></afterText><!-- inserido depois do texto do link -->
</action>

Além de inserir links, podemos incluir outros blocos, assim mantemos um melhor controle dos links dentro da loja Magento, veja:

<reference name="top.links">
    <block type="checkout/links" name="checkout_cart_link">
        <action method="addCartLink"></action>
        <action method="addCheckoutLink"></action>
    </block>
</reference>

Este código foi tirado do arquivo checkout.xml, cria um novo bloco do tipo checkout/links para acomodar os links ligados ao checkout, você pode criar um bloco do tipo page/template_links dentro de outro bloco e assim ter mais controle dos seus links.

Remover link no Magento

Em alguns casos você pode querer que um determinado link não apareça em uma página espedífica, caso este link esteja separado por um bloco você pode usar o controlador <remove>, por exemplo

<remove name=" top.links" />

Esse comando irá remover todo o bloco top.links, mas caso você queira remover um único link e não o bloco inteiro use action method=”removeLinkByUrl” veja os exemplos:

Remove o link about (sobre nós) de todo o site:

<devault>
    <action method="removeLinkByUrl"><url>about</url></action>
</default>

Remove o link minha conta de todas as páginas cms:

<cms_index_index>
    <action method="removeLinkByUrl"><url helper="customer/getAccountUrl"/></action>
</cms_index_index>

Remove o link minha conta de todas as páginas cms do bloco top.links:

<cms_index_index>
    <reference name="top.links">
        <action method="removeLinkByUrl"><url helper="customer/getAccountUrl"/></action>
    </reference>
</cms_index_index>

Pronto é isso, espero que este artigo tenha ajudado você a entender um pouco mais como o Magento trabalha com links dentro de seus arquivos de XML de layout, duvidas e sugestões comente aqui embaixo

Um abraço e até a próxima