Magento - 获取当前类别的所有产品

时间:2015-03-18 14:05:51

标签: php magento loops

我正在尝试在此处实现另一个问题:

Magento If product has attribute, get it's ID

基本上应该发生的是,对于当前类别,如果产品的属性具有三个值中的一个,那么它应该显示在页面顶部,位于描述之下。

虽然发生了什么,它只是在当前页面上循环产品。我认为问题在于,在list.phtml文件中:

foreach ($_productCollection as $_product);

所以有人知道如何在所有页面中获取和循环显示当前类别中的所有产品吗?

2 个答案:

答案 0 :(得分:2)

作为您的答案,您需要展示您在以下收集中获得的产品

$category_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$category = Mage::getModel('catalog/category')->load($category_id);
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addCategoryFilter($category)
->setOrder('price', 'ASC')
->load();

然后,您需要按照要求进行第二次产品收集,以获得其他产品:

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

答案 1 :(得分:0)

自己想出来。

$category_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$category = Mage::getModel('catalog/category')->load($category_id);
$products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addCategoryFilter($category)
    ->setOrder('price', 'ASC')
    ->load();