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的条件从而达到过滤的效果
参考其他文章内容。
原创文章转载请注明:转载自:magento 中的产品分类列表中的分层导航layer是如何工作的
发表评论
沙发空缺中,还不快抢~