2011-03-21 41 views
0

关于使用多个存储,与不同的根类: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 - 或两者根)。

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

我也注意到,如果你去管理产品和使用商店视图过滤器,它不会做任何事情,依然呈现在店里查看其根源只有6个产品20种产品:

filter

+0

我在Magento同样的问题。 您是否找到了解决此问题的解决方案? – 2011-06-03 11:44:18

+0

我只是使用子类别。据我所知,根类别仅用于多商店设置,不用于任何类型的类别/产品过滤。例如,即使我将某个商店的根类别设置为不活动,该子类别仍显示该商店。所以,只要使用该子类别,除非想要探索意大利面条代码,否则不要考虑它。 – 2011-06-06 04:23:22

+0

@dani不,仍然没有找到解决方案,虽然我已经向Magento提交了一个错误报告。如果我想出了一个解决方法,我一定会发布它。 @David,使用子类别并没有真正解决问题,因为您不能将子类别用作单独商店的根目录。 – 2011-06-12 16:40:29

回答

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/>"; 
};