Magento从集合中返回类别列表

时间:2015-02-19 12:26:19

标签: php magento collections product

我已经编辑了这个问题,希望更有意义......

我们的商店有产品类型的类别,例如“前灯”,“雾灯”等。

我为每个车辆品牌和型号创建了新类别,例如“Audi”> “奥迪A3”。从这些子类别中,我将加载属于该特定品牌和型号的产品集合,因此make =“audi”model =“a3”。

以下代码为每个品牌和型号加载产品集合。

<?php
// get current category name
$_catname = Mage::getSingleton('catalog/layer')->getCurrentCategory()->getName();
// Instantiate a category collection object
$_products = Mage::getModel('catalog/product')->getCollection();
// Select which fields to load into the category
// select fields to load
$_products->addAttributeToSelect('name');
$_products->addAttributeToSelect('sku');
$_products->addAttributeToSelect('model');
$_products->addAttributeToSelect('small_image');
$_products->addAttributeToFilter('model',$_catname);

// Load the collection
$_products->load();

foreach($_products as $product){
echo 'Name:'.$product->name.' sku:'.$product->sku.' Model:'.$product-    >model.;
}

?> 

这将打印我们商店中所有产品的列表,其中的模型等于类别名称。因此,对于奥迪A3,它会返回一个model =“a3”

的产品列表

从这个集合中,我想获得通过该集合加载的每个产品所属的类别列表。

因此,产品可能存在于不同的类别中。例如,集合显示了与“Audi A3”相关的所有产品。这可能包括前灯,雾灯和尾灯。所有3种产品都存在于各自的类别中,但正被加载到新类别“Audi A3”的集合中。

我想获得这些产品所在类别的列表。

也许这是不可能的,因为集合是在一个新类别中加载的,这是我不确定的。

2 个答案:

答案 0 :(得分:1)

希望你做得很好。

获取特定产品的产品

$categoryIds = array(2,4);//category id

$collection = Mage::getModel('catalog/product')
                             ->getCollection()
                             ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
                             ->addAttributeToSelect('*')
                             ->addAttributeToFilter('category_id', array('in' => $categoryIds))

获取特定产品标识的产品

$productids = array(52,62);//product ids
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addFieldToFilter('entity_id',array( 'in' => $productids));

希望这将成为你的一天!!

干杯!!! :P:)

答案 1 :(得分:0)

您需要遍历集合并执行以下操作:

$categories = array();
foreach ($_products as $_product){
   $categoryIds = $_product->getCategoryIds();
   foreach ($categoryIds as $categoryId){
       $categories[]=$categoryId;
   }
}
$categoriesIds = array_unique($categories);

我没有测试,但我相信它可以在没有或经过一些修改的情况下工作。

相关问题