magento 中的产品分类列表中的分层导航layer是如何工作的

magento 中的产品分类列表中的分层导航layer是如何工作的

1、点击layer中的导航后会对Mage_Catalog_CategoryController的viewAction做请求,并把当前categoryID和过滤条件作为参数发过去

2、在viewAction中会调用自己的_initCatagory()方法并把当前category注册为全局变量

Mage::register('current_category', $category);

3、加载布局配置文件,这其中要想使layer起作用必须要配置(可以删掉这个配置,再用同样的url去请求发现不能起到layer过滤的作用)

<block type="catalog/layer_view" name="catalog.leftnav" after="cart_sidebar" template="catalog/layer/view.phtml"/>

来实例化Mage_Catalog_Block_Layer_View类,这个类中的方法_prepareLayout()会在布局前自动调用,其中有一句$this->getLayer()->apply();是调用Mage_Catalog_Model_Layer的apply()方法,该方法的作用是把request中的过滤条件存储在layer实例中

4、在catalog/product/list.phtml中通过调用Mage_Catalog_Block_Product_List类的getLoadedProductCollection()方法加载layer,并调用layer的getProductCollection()方法,由于之前已经把request的过滤条件存储在layer中了,所以能把条件作为数据库select的条件从而达到过滤的效果

参考其他文章内容。

发表评论

发表评论

*

沙发空缺中,还不快抢~