J'ai une navigation en couches et le client souhaite avoir des <select/>
champs au lieu d'une longue liste de liens.
J'ai pensé à changer simplement le modèle avec un observateur si le nom / id du filtre correspond.
De meilleures idées ou recommandations? Des alternatives à la modification du modèle, peut-être écraser / réécrire le bloc ou seulement changer la classe de bloc pour les deux filtres?
Quel événement utiliser pour changer le modèle?
J'ai alors le même problème qu'ici /programming/14524791/magento-enable-or-disable-a-module-in-code/14529629 car j'ai un observateur qui change les choses de mise en page. Ce n'est qu'un thème pertinent. Donc, vérifier le thème avant d'exécuter les mises à jour pourrait être une bonne idée?
magento-1
event-observer
layered-navigation
Fabian Blechschmidt
la source
la source
catalog/layer/filter.phtml
modèle et changer ce dont vous avez besoin, il sera également spécifique au thème. La seule chose à laquelle vous devez faire face est le bit de filtres sélectionné. Je suppose que vous souhaitez afficher tous les filtres sélectionnés dans le<select>
qui pourraient nécessiter l'ajout de certaines fonctions de bloc, car une fois qu'un filtre est sélectionné, les autres options disparaissent.Réponses:
Ok, ce que vous devez faire: 1. Remplacez le bloc 'catalog / layer_view' pour définir votre propre modèle. Je mets ma navigation en couches dans la zone d'en-tête dans le cadre d'une disposition à 1 colonne
Dans ce fichier de modèle, vous devez spécifier le modèle remplacé pour vos éléments individuels.
Enfin, vous devez créer le menu déroulant filter.phtml. Cela devrait être simple. Ceci est mal formaté car j'ai des problèmes avec cet éditeur, mais l'idée générale est là. Un peu de Javascript sera également nécessaire.
la source
Vous pouvez utiliser l'
core_block_abstract_prepare_layout_after
événement surMage_Catalog_Block_Layer_View
bloc pour modifier le modèle de votre filtre d'attribut particulier.Cela pourrait être quelque chose comme ça:
Sommaire:
Chaque bloc de filtre enfant possède un alias dans le bloc de navigation en couches as
[attribute_code]_filter
, et tous créés dans la_prepareLayout()
méthode afin que vous puissiez facilement modifier son modèle lors d'uncore_block_abstract_prepare_layout_after
événement.Vous pouvez également vérifier auprès de votre observateur que le thème actuel est le même que celui attendu en appelant:
Cordialement, Ivan
la source
attribute_code_filter
alias attribué , pourquoi ne pouvez-vous pas simplement définir le modèle dans un XML de mise en page?getNameInLayout()
vous verrez que chacun de ces blocs a un nom unique comme ANNONYMOUS_30, ANNONYMOUS_23, etc. Vous ne pouvez donc pas vous y fier.