Costumbre no atributo de navegación basado en capas. ¿Es esta la única manera de hacerlo?

magento.stackexchange https://magento.stackexchange.com/questions/328

  •  16-10-2019
  •  | 
  •  

Pregunta

Hoy he estado golpeando una opción de navegación en capas que no se basa en un atributo. Es por valoración hasta el extremo frontal puede mostrar agradable estrellas brillantes.

Para ello tengo:

  1. Creado un módulo
  2. Reescribir catalog_block_layer_view

    <blocks>        
      <catalog>
        <rewrite>
          <layer_view>Bob_Catalog_Block_Layer_View</layer_view>
         </rewrite>                
       </catalog>
    </blocks>
    
  3. Se creó una clase llamada Bob_Catalog_Block_Layer_View que se extiende Mage_Catalog_Block_Layer_View

  4. Creado _initBlocks (), getFilters () y _prepareLayout () para anular los métodos de las clases padre. Todos ellos llamada la clase padre en algún momento y luego anteponerse o datos adicionales adjuntas a lo que se devuelve.
  5. Crea un Bob_Catalog_Block_Layer_Filter_Rating bloque de filtro que se extiende Mage_Catalog_Block_Layer_Filter_Abstract con un constructor que establece el filterModelName y llama a su padre y luego establece una nueva plantilla, ya que parece Mage_Catalog_Block_Layer_Filter_Abstract tiene el nombre de la plantilla hardcoded en su constructor.
  6. Crea un Bob_Catalog_Model_Layer_Filter_Rating modelo que se extiende Mage_Catalog_Model_Layer_Filter_Abstract e implementos aplicar (), getName (), _getItemsData ().

Todo esto funciona bien. El agradable estrellas brillantes muestran en la navegación por capas.

Tengo un presentimiento que me falta algo, porque cuando se trata de la plantilla estado de capa que he tenido que poner un condicional en allí para recoger el filtro de clasificación personalizada y alterar el diseño. Además, algunas de las cosas que he necesitado hacer (clon de la colección de productos para que el evento de carga no arruine el recuento de recogida en la paginación) me hace sentir como si hubiera estado nadando hasta la colina.

Así que la pregunta es ¿Alguno de ustedes tiene alguna sugerencia mejor (o tal vez un blog guiño ) sobre cómo construir un no-atributo personalizado respaldado filtro de navegación por capas?

Gracias por leer,

Si

¿Fue útil?

Solución

There's another way of doing it, you could add a normal attribute to your product which would be the rating. Then use an observer (I don't know how this rating is formed) to update the product's attribute. Or, if an observer is no option, perhaps use a cronjob which updates that attribute for every product every x minutes depending on how heavy the script is.

This way there is no Magento rewriting and altering involved, all navigation modules will still work and it's easier to maintain.

Of course the question is, is this an option for you? Where do the ratings come from?

EDIT You would have to style the stars using javascript or check on the attribute name in the template.

Otros consejos

I digged into the code and found no event. Without adding extra attributes there is nothing to make without <rewrite>

You have to add your block in \Mage_Catalog_Block_Layer_View::_prepareLayout() before the apply() (if not you could use core_block_abstract_prepare_layout_after.

And you need to add it to \Mage_Catalog_Block_Layer_View::getFilters() and there is no event too.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top