Magento возвращает список категорий из коллекции

Я отредактировал вопрос, чтобы, надеюсь, иметь больше смысла …

В нашем магазине есть категории для таких товаров, как «фары», «противотуманные фары» и т. Д.

Я создал новые категории для каждой марки и модели автомобиля, например, «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».

Я хотел бы получить список категорий, в которых существуют эти продукты.

Возможно, это невозможно, поскольку коллекция загружается в новую категорию, в этом я не уверен.

0

Решение

Надеюсь у тебя все хорошо.

Для получения продукта из определенной категории

$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));

Надеюсь, что это сделает ваш день!

Ура !!! :П 🙂

1

Другие решения

Вы должны пройтись по коллекции и сделать что-то вроде:

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

Я не тестировал, но считаю, что он работает без или с некоторыми изменениями.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector