Ich habe eine geschichtete Navigation, und der Kunde möchte <select/>
Felder anstelle einer langen Liste von Links haben.
Ich dachte nur daran, die Vorlage mit einem Beobachter zu ändern, wenn der Name / die ID des Filters übereinstimmt.
Bessere Ideen oder Empfehlungen? Alternativen zum Ändern der Vorlage, vielleicht den Block überschreiben / neu schreiben oder nur die Blockklasse für die beiden Filter ändern?
Welches Ereignis zum Ändern der Vorlage verwenden?
Ich habe dann das gleiche Problem wie hier /programming/14524791/magento-enable-or-disable-a-module-in-code/14529629, weil ich einen Beobachter habe, der Layout-Dinge ändert. Dies ist nur themenrelevant. Es ist also eine gute Idee, das Thema vor dem Ausführen der Updates zu überprüfen.
magento-1
event-observer
layered-navigation
Fabian Blechschmidt
quelle
quelle
catalog/layer/filter.phtml
Vorlage und ändere, was du brauchst. Es wird auch themenspezifisch sein. Das einzige, was Sie zu tun haben, ist das ausgewählte Filterbit. Ich nehme an, Sie möchten alle in ausgewählten Filter anzeigen, für die<select>
möglicherweise einige Blockfunktionen hinzugefügt werden müssen, da nach Auswahl eines Filters die anderen Optionen nicht mehr angezeigt werden.Antworten:
Ok, Dinge, die Sie tun müssen: 1. Überschreiben Sie den Block 'catalog / layer_view', um Ihre eigene Vorlage festzulegen. Ich habe meine geschichtete Navigation als Teil eines 1-Spalten-Layouts in den Kopfbereich eingefügt
In dieser Vorlagendatei müssen Sie die überschriebene Vorlage für Ihre einzelnen Elemente angeben.
Zum Schluss müssen Sie noch die Dropdown-Datei filter.phtml erstellen. Das sollte einfach sein. Dies ist schlecht formatiert, da ich Probleme mit diesem Editor habe, aber die allgemeine Idee ist hier. Etwas Javascript wird ebenfalls benötigt.
quelle
Sie können
core_block_abstract_prepare_layout_after
event onMage_Catalog_Block_Layer_View
block verwenden, um die Vorlage Ihres bestimmten Attributfilters zu ändern.Es könnte so etwas sein:
Zusammenfassung:
Jeder untergeordnete Filterblock verfügt über einen Alias im geschichteten Navigationsblock als
[attribute_code]_filter
und alle werden in einer_prepareLayout()
Methode erstellt, sodass Sie die Vorlage bei einemcore_block_abstract_prepare_layout_after
Ereignis problemlos ändern können .Sie können auch in Ihrem Beobachter überprüfen, ob das aktuelle Thema dem erwarteten entspricht, indem Sie Folgendes aufrufen:
Mit freundlichen Grüßen Ivan
quelle
attribute_code_filter
Alias zugewiesen wird , warum können Sie die Vorlage nicht einfach in einer Layout-XML festlegen?getNameInLayout()
Sie feststellen, dass jeder dieser Blöcke einen eindeutigen Namen wie ANNONYMOUS_30, ANNONYMOUS_23 usw. hat. Sie können sich also nicht darauf verlassen.