Hoje, estou selecionando uma opção de navegação em camadas que não é baseada em um atributo. É para classificações, portanto, o front end pode mostrar boas estrelas brilhantes.
Para fazer isso eu tenho:
- Criou um módulo
Reescrever catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
Criou uma classe chamada Bob_Catalog_Block_Layer_View que estende Mage_Catalog_Block_Layer_View
- Criou _initBlocks (), getFilters () e _prepareLayout () para substituir os métodos das classes pai. Todos eles chamam a classe pai em algum momento e, em seguida, acrescentam ou acrescentam dados extras ao que é retornado.
- Crie um bloco de filtro Bob_Catalog_Block_Layer_Filter_Rating que estenda Mage_Catalog_Block_Layer_Filter_Abstract com um construtor que define o filterModelName e chama seu pai e, em seguida, define um modelo personalizado, pois parece que Mage_Catalog_Block_Layer_Filter_Abstract tem o nome do modelo codificado no construtor.
- Crie um modelo Bob_Catalog_Model_Layer_Filter_Rating que estenda Mage_Catalog_Model_Layer_Filter_Abstract e implemente apply (), getName (), _getItemsData ().
Tudo isso funciona bem. As belas estrelas brilhantes aparecem na navegação em camadas.
Tenho a sensação de que estou perdendo alguma coisa porque, quando se trata de modelo de estado de camada, tive que colocar um condicional lá para pegar o filtro de classificação personalizado e alterar o layout. Além disso, algumas das coisas que eu precisava fazer (clonar a coleção de produtos para que o evento load não estragasse a contagem de coleções na paginação) me fizeram sentir como se estivesse nadando morro acima.
Portanto, a pergunta é: algum de vocês teve alguma sugestão melhor (ou talvez uma piscada no blog ) sobre como criar um filtro de navegação em camadas personalizado e sem atributos?
Obrigado pela leitura,
Si