Aujourd'hui, j'ai créé une option de navigation en couches qui n'est pas basée sur un attribut. C'est pour les cotes, donc l'avant peut montrer de belles étoiles brillantes.
Pour ce faire, j'ai:
- Créé un module
Réécriture de catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Création d'une classe appelée Bob_Catalog_Block_Layer_View qui étend Mage_Catalog_Block_Layer_View
- _InitBlocks (), getFilters () et _prepareLayout () créés pour remplacer les méthodes des classes parentes. Ceux-ci appellent tous la classe parent à un moment donné, puis ajoutent ou ajoutent des données supplémentaires à ce qui est retourné.
- Créez un bloc de filtre Bob_Catalog_Block_Layer_Filter_Rating qui étend Mage_Catalog_Block_Layer_Filter_Abstract avec un constructeur qui définit le filterModelName et appelle son parent puis définit un modèle personnalisé comme il semble que Mage_Catalog_Block_Layer_Filter_Abstract a le nom du modèle codé en dur.
- Créez un modèle Bob_Catalog_Model_Layer_Filter_Rating qui étend Mage_Catalog_Model_Layer_Filter_Abstract et implémente apply (), getName (), _getItemsData ().
Tout cela fonctionne bien. Les belles étoiles brillantes apparaissent dans le nav en couches.
J'ai l'impression de manquer quelque chose, car en ce qui concerne le modèle d'état de calque, j'ai dû y mettre une condition pour récupérer le filtre de notation personnalisé et modifier la mise en page. De plus, certaines des choses que je devais faire (cloner la collection de produits pour que l'événement de chargement ne gâche pas la collecte comptent sur la pagination) me donnent l'impression d'avoir nagé en haut de la colline.
Donc, la question est de savoir si l'un de vous a de meilleures suggestions (ou peut-être un clin d'œil de blog ) sur la façon de créer un filtre de navigation en couches personnalisé sans attribut?
Merci d'avoir lu,
Si