我已经编辑了这个问题,希望它更有意义。。。
我们的商店有产品类型的分类,例如"前灯"、"雾灯"等。
我为每种车型创建了新的类别,例如"奥迪">"奥迪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,它返回一个型号为"A3"的产品列表
从这个集合中,我想获得通过集合加载的每个产品所属的类别列表。
因此,这些产品可能存在于不同的类别中。例如,该系列展示了与"奥迪A3"相关的所有产品。这可能包括前照灯、雾灯和尾灯。所有这三款产品都属于各自的类别,但正在被加载到一个新类别"奥迪A3"的集合中。
我想得到这些产品所属类别的列表。
也许这是不可能的,因为收藏正在加载到一个新的类别中,这是我不确定的。
您需要遍历集合并执行以下操作:
$categories = array();
foreach ($_products as $_product){
$categoryIds = $_product->getCategoryIds();
foreach ($categoryIds as $categoryId){
$categories[]=$categoryId;
}
}
$categoriesIds = array_unique($categories);
我没有测试,但我相信它可以在没有或经过一些修改的情况下工作。
希望你一切顺利。
对于获取特定类别的产品
$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))
获取特定产品Id的产品
$productids = array(52,62);//product ids
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addFieldToFilter('entity_id',array( 'in' => $productids));
希望这将成为你的一天!!
干杯!!:P:)