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

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等工作。。!!

你可能感兴趣的:(产品)