Magento - 加载根集合加载所有产品

时间:2011-03-21 19:19:38

标签: magento

关于使用具有不同根类别的多个商店:

我有2个商店设置,有不同的根。一个有14个产品,另外6个。

如果我在我的主页上使用以下内容(只是为了显示该商店的根类别中有多少产品 - 在这种情况下ID为8)我会收到20个产品 - 所以商店中的所有商品都来自所有商品根:

$_testproductCollection = Mage::getModel('catalog/category')->load(8)  
->getProductCollection()  
->addAttributeToSelect('*')->load();
echo "NO. OF PRODUCTS IS ".$_testproductCollection->count();

但是,如果我将ID更改为子类别,我会获得正确数量的产品。此根目录中只有6个产品:

roots

但计数显示20(因为整个商店中有20个 - 或两个根)。

任何人都知道怎么了?这是一个错误吗?

我还注意到,如果你去管理产品并使用商店视图过滤器,它什么都不做,仍然在商店视图中显示20个产品,其根目录只有6个产品:

filter

1 个答案:

答案 0 :(得分:0)

好吧,我认为这样做有效,没有经过太多测试,但似乎已经完成了诀窍。您需要首先获取商店根类别ID,然后加入一些字段,以便您可以访问产品“category_id”,然后使用以下内容进行过滤:

$_rootcatID = Mage::app()->getStore()->getRootCategoryId();

$_testproductCollection = Mage::getResourceModel('catalog/product_collection')
->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
->addAttributeToFilter('category_id', array('in' => $_rootcatID))
->addAttributeToSelect('*');
$_testproductCollection->load();

foreach($_testproductCollection as $_testproduct){ 
    echo $this->htmlEscape($_testproduct->getName())."<br/>"; 
};