Heute habe ich eine mehrschichtige Navigationsoption aufgerufen, die nicht auf einem Attribut basiert. Es ist für Bewertungen, damit das Frontend schöne glänzende Sterne zeigen kann.
Dazu habe ich:
- Modul erstellt
Katalog_block_layer_view neu geschrieben
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Erstellt eine Klasse namens Bob_Catalog_Block_Layer_View, die Mage_Catalog_Block_Layer_View erweitert
- Erstellt _initBlocks (), getFilters () und _prepareLayout (), um die übergeordneten Klassenmethoden zu überschreiben. Diese alle rufen die übergeordnete Klasse irgendwann auf und stellen dann zusätzliche Daten entweder voran oder hängen sie an das zurück, was zurückgegeben wird.
- Erstellen Sie einen Filterblock Bob_Catalog_Block_Layer_Filter_Rating, der Mage_Catalog_Block_Layer_Filter_Abstract um einen Konstruktor erweitert, der den filterModelName festlegt und dessen übergeordnetes Element aufruft. Anschließend legt er eine benutzerdefinierte Vorlage fest, wie es scheint.
- Erstellen Sie ein Modell Bob_Catalog_Model_Layer_Filter_Rating, das Mage_Catalog_Model_Layer_Filter_Abstract erweitert und apply (), getName (), _getItemsData () implementiert.
Das alles funktioniert gut. Die schönen glänzenden Sterne zeigen sich im geschichteten Navi.
Ich habe das Gefühl, dass mir etwas fehlt, weil ich bei der Vorlage für den Ebenenstatus eine Bedingung einfügen musste, um den benutzerdefinierten Bewertungsfilter zu übernehmen und das Layout zu ändern. Auch einige der Dinge, die ich tun musste (Klonen der Produktkollektion, damit das Ladeereignis die Anzahl der Sammlungen bei der Paginierung nicht beeinträchtigt), geben mir das Gefühl, bergauf zu schwimmen.
Die Frage ist also, ob jemand von Ihnen bessere Vorschläge (oder vielleicht ein Augenzwinkern für einen Blog-Beitrag ) zum Erstellen eines benutzerdefinierten, nicht von Attributen unterstützten mehrschichtigen Navigationsfilters hat.
Danke fürs Lesen,
Si