在产品分类页面,数据的加载过程!!

Magento产品列表加载流程
本文详细解析了Magento中产品列表从list到collection的加载过程,包括关键步骤如获取产品集合、设置商店ID、添加类别过滤等,并介绍了核心文件如catalog/block/product/list.php及涉及的主要模型。

list-->layer-->category-->collection
1
catalog/block/product/list.php ---->_getProductCollection()
$layer = Mage::getSingleton('catalog/layer');
$category = Mage::getModel('catalog/category')->load($this->getCategoryId());
$layer->setCurrentCategory($category);
$layer->getProductCollection();
prepareSortableFieldsByCategory
//得到layer,category,然后layer赋值,然后prepareSortableFieldsByCategory

2
mage/catalog/model/layer.php ---->getProductCollection()
$this->getCurrentCategory()->getProductCollection();
prepareProductCollection($collection);
//得到category-
3
mage/catalog/model/category.php --->getProductCollection()
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);

4
Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection

setStoreId()
addCategoryFilter()

5
在list.phtml中得到
<?php
$_productCollection=$this->getLoadedProductCollection();
$_helper = $this->helper('catalog/output');
?>
$_productCollection就是
Mage_Eav_Model_Entity_Collection_Abstract类型!!!

过程本质是:Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
其余的过程是为这个语句准备数据,和一起其他,,譬如,prepare,prepareSortableFieldsByCategory等工作。。!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值