Я отредактировал вопрос, чтобы, надеюсь, иметь больше смысла …
В нашем магазине есть категории для таких товаров, как «фары», «противотуманные фары» и т. Д.
Я создал новые категории для каждой марки и модели автомобиля, например, «Audi»> «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.;
}
?>
Это распечатывает список всех товаров нашего магазина, модель которых соответствует названию категории. Таким образом, для Audi A3, он возвращает список продуктов с моделью = «a3»
Из этой коллекции я хотел бы получить список категорий, к которым относится каждый продукт, загруженный через коллекцию.
Следовательно, продукты могут существовать в разных категориях. Например, коллекция показывает все товары, относящиеся к «Audi A3». Это может включать в себя фару, противотуманные фары и задний фонарь. Все 3 продукта существуют в своих отдельных категориях, но загружаются в коллекцию для новой категории «Audi A3».
Я хотел бы получить список категорий, в которых существуют эти продукты.
Возможно, это невозможно, поскольку коллекция загружается в новую категорию, в этом я не уверен.
Надеюсь у тебя все хорошо.
Для получения продукта из определенной категории
$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));
Надеюсь, что это сделает ваш день!
Ура !!! :П 🙂
Вы должны пройтись по коллекции и сделать что-то вроде:
$categories = array();
foreach ($_products as $_product){
$categoryIds = $_product->getCategoryIds();
foreach ($categoryIds as $categoryId){
$categories[]=$categoryId;
}
}
$categoriesIds = array_unique($categories);
Я не тестировал, но считаю, что он работает без или с некоторыми изменениями.