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;
 }