Ta bort footer länkar

I Magento har vi footerlänkar som vi enkelt kan ta bort i vår local.xml fil som finns i temat.

app/design/frontend/default/default/layout/local.xml

Vi lägger till följande för att ta bort länken till avancerad sökning

<layout>
  <default>
    [...]
    <reference name="footer_links">
      <action method="removeLinkByUrl">
        <url helper="catalogsearch/getAdvancedSearchUrl" />
      </action>
    </reference>
    [...]
  </default>
</layout>

Vad vi nu egentligen gjorde skulle kunna liknas med följande

<action method="removeLinkByUrl">
  <url>http://www.domain.com/catalogsearch/advanced/</url>
</action>

Dock vill vi inte skriva ut hela adressen på detta viset. Vi kan ju kanske vilja återanvända koden på andra ställen. Produktion och utvecklings servern skiljer sig ofta i adresser o.s.v.. det är helt enkelt inte lika stabilt. Så för att få adressen använder vi en hjälpare som finns i modulerna. Följande attribut i det första exemplet:

helper="catalogsearch/getAdvancedSearchUrl"

..kallar på funktionen ”getAdvancedSearchUrl” som finns i ”Data” hjälparen i modulen ”catalogsearch”. Man skulle alltså också kunna skriva:

helper="catalogsearch/data/getAdvancedSearchUrl"

Kanske att man även kan lägga till namnrymden innan modulen. Ej beprövat men troligt.

Contact us

Alltid är det ju något som ska sticka ut från mängden och inte riktigt funka som vi vill. Contact us länken är en sådan i detta sammanhanget. Den har ingen sådan funktion i sin hjälpare. Därför behöver vi göra en om vi vill hålla oss stabila. Men vi vill ju inte ändra i kärnan. Därför skapar vi en modul med denna funktionen i sin hjälpare.

Du kan läsa om hur man skapar en modul här:
Hur man skapar en modul i Magento

OBS! Du behöver inte klydda med controllers och dylikt. Modulen behöver bara en configfil och hjälparen.

Jag döpte min modul till ”ContactUsFix” och la till funktionen ”getContactUsUrl” i hjälparen.

public function getContactUsUrl()
{
  return Mage::getBaseUrl() . 'contacts/';
}

Jag tar sen bort länken i local.xml filen på följande vis:

<action method="removeLinkByUrl">
  <url helper="contactusfix/getContactUsUrl" />
</action>

Sjukt drygt men stabilt! En kan ju dock argumentera att temat blir beroende av modulen men det kommer vi i mina ögon aldrig komma ifrån med Magentos arkitektur.

Länkar

http://classyllama.com/
http://www.magentocommerce.com/