Tengo una navegación en capas, y el cliente quiere tener <select/>
campos en lugar de una larga lista de enlaces.
Pensé en cambiar la plantilla con un observador si el nombre / id del filtro coincide.
¿Alguna mejor idea o recomendación? ¿Alternativas para cambiar la plantilla, tal vez sobrescribir / reescribir el bloque o solo cambiar la clase de bloque para los dos filtros?
¿Qué evento usar para cambiar la plantilla?
Entonces tengo el mismo problema que aquí /programming/14524791/magento-enable-or-disable-a-module-in-code/14529629 porque tengo un observador que cambia las cosas de diseño. Este es solo un tema relevante. Entonces, ¿revisar el tema antes de ejecutar las actualizaciones podría ser una buena idea?
magento-1
event-observer
layered-navigation
Fabian Blechschmidt
fuente
fuente
catalog/layer/filter.phtml
plantilla y cambie lo que necesita, también será un tema específico. Lo único con lo que tiene que lidiar es con el bit de filtros seleccionados. Supongo que desea mostrar todos los filtros seleccionados en el<select>
que podría requerir agregar algunas funciones de Bloque, porque una vez que se selecciona un filtro, las otras opciones desaparecen.Respuestas:
Ok, cosas que debes hacer: 1. Anular el bloque 'catalog / layer_view' para configurar tu propia plantilla. Puse mi navegador en capas en el área del encabezado como parte de un diseño de 1 columna
En ese archivo de plantilla, debe especificar la plantilla anulada para sus elementos individuales.
Finalmente, debe crear el menú desplegable filter.phtml. Eso debería ser sencillo. Esto está mal formateado ya que tengo problemas con este editor, pero la idea general está aquí. También se necesitará Javascript.
fuente
Puede usar
core_block_abstract_prepare_layout_after
evento enMage_Catalog_Block_Layer_View
bloque para cambiar la plantilla de su filtro de atributo particular.Podría ser algo como esto:
Resumen:
Cada bloque de filtro secundario tiene un alias en el bloque de navegación en capas como
[attribute_code]_filter
, y todos ellos creados en el_prepareLayout()
método para que pueda modificar fácilmente su plantilla encore_block_abstract_prepare_layout_after
caso de evento.También puede verificar dentro de su observador que el tema actual es el mismo que el esperado llamando:
Sinceramente, Ivan
fuente
attribute_code_filter
alias, ¿por qué no puede simplemente configurar la plantilla en un diseño xml?getNameInLayout()
, verá que cada uno de estos bloques tiene un nombre único como ANNONYMOUS_30, ANNONYMOUS_23, etc. Por lo tanto, no puede confiar en él.