今天,我已经提出了一个不基于属性的分层导航选项。它用于评级,因此前端可以显示漂亮的闪亮星星。
为此,我有:
- 创建一个模块
重写catalog_block_layer_view
<blocks> <catalog> <rewrite> <layer_view>Bob_Catalog_Block_Layer_View</layer_view> </rewrite> </catalog> </blocks>
创建了一个名为Bob_Catalog_Block_Layer_View的类,该类扩展了Mage_Catalog_Block_Layer_View
- 创建了_initBlocks(),getFilters()和_prepareLayout()来覆盖父类方法。这些都在某个时刻调用父类,然后在返回的数据之前添加或附加额外的数据。
- 创建一个过滤器块Bob_Catalog_Block_Layer_Filter_Rating,它使用构造函数扩展Mage_Catalog_Block_Layer_Filter_Abstract,该构造函数设置filterModelName并调用其父对象,然后设置一个自定义模板,因为Mage_Catalog_Block_Layer_Filter_Abstract似乎在其构造函数中硬编码了模板名称。
- 创建一个模型Bob_Catalog_Model_Layer_Filter_Rating,该模型扩展了Mage_Catalog_Model_Layer_Filter_Abstract并实现了apply(),getName(),_ getItemsData()。
这一切都很好。分层导航中显示出漂亮的闪亮星星。
我有种直觉,我想念一些东西,因为当涉及到图层状态模板时,我必须在其中放置一个条件来拾取自定义评分过滤器并更改布局。另外,我需要做的一些事情(克隆产品集合,以便装入事件不会增加分页中的集合数量)使我感到自己一直在爬山。
因此,问题是,关于如何构建自定义的非属性支持的分层导航过滤器,您有任何更好的建议(或者是博客文章wink)吗?
谢谢阅读,
硅