我已经编辑了这个问题,希望更有意义......
我们的商店有产品类型的类别,例如“前灯”,“雾灯”等。
我为每个车辆品牌和型号创建了新类别,例如“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”的集合中。
我想获得这些产品所在类别的列表。
也许这是不可能的,因为集合是在一个新类别中加载的,这是我不确定的。
答案 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);
我没有测试,但我相信它可以在没有或经过一些修改的情况下工作。