function getProductCollectionGroupedByCategory() { if (isset(self::$productCollectionGroupedByCategory)) { return self::$productCollectionGroupedByCategory; } $exclude = $this->getExcludeCategories(); $collection = $this->getProductCollection(); $return = array(); // get product's Ids $ids = array(); foreach ($collection as $product) { $ids[] = $product->getId(); $products[$product->getId()] = $product; } $productCategories = $this->productCategoryHashMap($ids); //// loop over products building formatted array foreach ($productCategories as $row) { $product = $products[$row['product_id']]; $category = $row['category_id']; if (!isset($return[$category])) { $return[$category] = array(); } if (in_array($product, $return[$category])) { continue; } $return[$category][] = $product; } self::$productCollectionGroupedByCategory = $return; return $return; }
function getProductCollectionGroupedByCategory() { if (isset(self::$productCollectionGroupedByCategory)) { return self::$productCollectionGroupedByCategory; } $exclude = $this->getExcludeCategories(); $collection = $this->getProductCollection(); $return = array(); // get product's Ids $ids = array(); foreach ($collection as $product) { $ids[] = $product->getId(); $products[$product->getId()] = $product; } // get product ID <-> category ID array $select = Elite_Vaf_Helper_Data::getInstance()->getReadAdapter()->select()->from('catalog_category_product_index', array('category_id', 'product_id'))->where('product_id IN (' . implode(',', $ids) . ')')->group('category_id', 'product_id'); $productCategories = $select->query()->fetchAll(); //// loop over products building formatted array foreach ($productCategories as $row) { $product = $products[$row['product_id']]; $category = $row['category_id']; // skip the root category IDs if ($category == Mage::app()->getStore()->getRootCategoryId()) { continue; } if (isset($return[$category]) && in_array($return[$category], $product)) { continue; } $return[$category][] = $product; } self::$productCollectionGroupedByCategory = $return; return $return; }