Thomas Maier | Magento & WordPress Develover post@webzunft.de | +49 162 9313 708

Antworten auf die Fragen – nicht nur meiner Kunden 

RSS
Home Magento Magento für Entwickler Link zur Erweiterten Suche verschieben

Link zur Erweiterten Suche verschieben

Das Verschieben des Links für die Erweiterte Suche vom Footer (des base-Themes) in die Nähe des Suchfeldes ist eine häufige Frage in den Magento-Foren. Der folgende Beitrag zeigt, dass einen komplexen und einen einfachen Ansatz, das Problem zu lösen.

Hier ist der Link zur erweiterten Suche unter dem Suchfeld eingefügt worden

Hier ist der Link zur erweiterten Suche unter dem Suchfeld eingefügt worden

wie der Link eingebunden wird

Einen Ansatz für die Lösung finden wir, wenn wir uns anschauen, wo und wie der Link eingefügt ist. Die Lösung ist über mehrere Dateien verteilt und endet mit folgendem Eintrag in der catalogsearch.xml.

    

    
    
    Advanced Search

Der Aufruf iin der catalogsearch.xml befindet sich in einem Block mit Referenz zum bereits in der page.xml angelegten Block mit dem Namen footer_links. Dieser verweist widerrum auf das template in page/template/links.phtml und den Block Mage_Page_Block_Template_Links.

Ein Blick in core/Mage/Page/Block/Template/Links.phtml zeigt, dass hier die im oberen xml aufgerufene Methode addLink() definiert ist.

In der Template-Datei wird dann die Funktion getLinks() zum Abrufen der im Objekt angelegten Links aufgerufen. Die Links werden dann in einer Schleife nach und nach angezeigt.

Die Lösung im Magento-Style

Die gute Nachricht ist, dass wir den Quellcode nur gering umschreiben müssen und dennoch die Struktur von Magento berücksichtigen. Dabei geht man folgendermaßen vor:
Wir suchen in unserem Theme die Definition des Blockes top.search, die sich normalerweise ganz oben in der catalogsearch.xml-Datei befindet. Erben wir von einem Theme, das wir nicht verändern wollen oder können (z.B. das base-Theme) so sollten wir die folgenden Änderungen in einer layout-Datei eines Child-Themes eintragen, z.B. in der local.xml.


    
        
            
            
            Advanced Search
        
    

Was haben wir jetzt getan? Wir haben eine neue Instanz des Blocks erzeugt, der auch für die Links im Footer zuständig ist. Diese Definition ist ein Kindelement von top.search, was später von Bedeutung ist. Dann ergänzen wir einen Link mit der addLink() Methode. Bis auf die Attribute name und as ist das einfach eine Kopie der Anweisung, die sich schon in der catalogsearch.xml befindet (siehe oben).

Jetzt müssen wir den Block noch in ein Template einbinden.

Dazu öffnen wir die template/catalogsearch/form.mini.phtml bzw eine Kopie davon in unserem Child-Theme. Dort ergänzen wir am Ende folgende Zeile.

getChildHtml('advanced_link') ?>

Das führt dazu, dass unsere Anweisungen auch wirklich aufgerufen werden.

Im letzten Schritt entfernen wir noch den alten Link aus dem Footer. Dazu müssen wir folgenden Code in unsere local.xml einfügen.


    

Die schnelle Lösung

Zwar ist das Tutorial oben ein gutes Lehrbeispiel über das Zusammenspiel von Layouts, Blöcken und Templates, zum Verschieben von einzelnen Links in der Praxis aber etwas übertrieben. Alternativ ließe sich der neue Link auch direkt im Quellcode anlegen:

<a class="advanced-search-link" href="getAdvancedSearchUrl();?>" title="__('Advanced Search'); ?>">__('Advanced Search'); ?>

Matthias Zeis hat das Vorgehen beim Löschen von Top-Links in seinem Blog vor zwei Jahren beschrieben. Dabei holt er noch deutlich mehr aus, als ich es hier getan habe. Denen, die sich als Entwickler noch tiefer für das Thema interessieren, sei hier noch sein Artikel empfohlen.

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.