2013-11-11 1 views
2

Здравствуйте, у меня есть Идентификаторы категорий подкатегорий определенной категории, поэтому я хочу получить все Продукты всей подкатегории этой родительской категории. так как получить эту продукцию.Magento Как показать все продукты подкатегорий одной коллекцией

Suppose I have parent category 4 and it's having 5,6,7,8,9,10,11 as a child category so i Then I want all the products of 5,6,7,8,9,10,11's category using single query. 

ответ

0
$categories = Mage::getModel('catalog/category')->load('4')->getChildrenCategories(); 

foreach ($categories as $category) { 
    $collection = $category->getProductCollection(); 
    foreach ($collection as $product) { 
     $result[] = $product; 
    } 
} 

Это должно работать, даже если вы не знаете, корочки подкатегорий.

0

Вы должны присоединиться к коллекции продуктов с помощью каталога catalog_category_product_index. См. Mage_Catalog_Model_Resource_Product_Collection, метод _applyProductLimitations().

Готовое решение будет что-то вроде этого (просто идея, может быть какие-то изменения или должны быть необходимы фильтры):

$productCollection = Mage::getModel('catalog/product')->getCollection(); 
$productCollection 
    ->getSelect()->join(
      array('cat_index' => $this->getTable('catalog/category_product_index')), 
      'cat_index.product_id=e.entity_id', 
      array() 
     ) 
    ->where('cat_index.category_id in (?)', $categoryIds);