Oggi ho eliminato un'opzione di navigazione a più livelli che non si basa su un attributo. È per le valutazioni, quindi il front-end può mostrare belle stelle luccicanti.
Per fare questo ho:
- Creato un modulo
Riscrivi catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Creata una classe chiamata Bob_Catalog_Block_Layer_View che estende Mage_Catalog_Block_Layer_View
- Creato _initBlocks (), getFilters () e _prepareLayout () per sovrascrivere i metodi delle classi parent. Tutti questi chiamano la classe genitrice ad un certo punto e quindi antepongono o aggiungono dati extra a ciò che viene restituito.
- Crea un blocco filtro Bob_Catalog_Block_Layer_Filter_Rating che estende Mage_Catalog_Block_Layer_Filter_Abstract con un costruttore che imposta filterModelName e chiama il suo genitore e quindi imposta un modello personalizzato come sembra Mage_Catalog_Block_Layer_Filter nel nome del modello hardcod.
- Crea un modello Bob_Catalog_Model_Layer_Filter_Rating che estende Mage_Catalog_Model_Layer_Filter_Abstract e implementa apply (), getName (), _getItemsData ().
Funziona tutto bene. Le belle stelle lucenti mostrano nel nav a strati.
Ho la sensazione che mi manchi qualcosa perché quando si tratta di template di stato layer ho dovuto mettere un condizionale lì dentro per raccogliere il filtro di valutazione personalizzato e modificare il layout. Anche alcune delle cose che ho dovuto fare (clonare la raccolta di prodotti in modo che l'evento load non rovini i conteggi della raccolta sulla paginazione) mi fanno sentire come se stessi nuotando su per la collina.
Quindi la domanda è se qualcuno di voi ha qualche suggerimento migliore (o forse un wink per un post sul blog ) su come costruire un filtro di navigazione a livelli personalizzato senza attributi?
Grazie per aver letto,
Si