2012-05-16 146 views
0

我正試圖調整一個模塊,以給我特定產品的特定類別。我認爲其接近但沒有雪茄呢。顯然,我不能在這裏使用getSingleton(「catalog/layer」)來獲取當前的類別ID。目前該模塊吐出特色產品,但它們與您所在的特定類別無關。Magento按類別推薦產品

獲取當前類別的任何提示嗎?你會看到我在下面的/ *這是我的附加* /評論,以當前類別拉動產品。

class Adodis_Featuredproducts_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract 
{ 

     protected $_priceBlockDefaultTemplate = 'catalog/product/price_fix.phtml'; 


     public $totproduct,$opt; 
     public function __construct() 
     { 
      $totproduct=Mage::getStoreConfig("adodis_featuredproducts/adodis_block/adodis_featuredproduct_block_product_number"); 
      $opt=Mage::getStoreConfig('adodis_featuredproducts/adodis_general/adodis_featuredproducts_display_type'); 
      parent::__construct(); 

      /* THIS IS MY ADDITION */ 
     $layer = Mage::getSingleton(‘catalog/layer’); 
      var_dump($layer); 
      $_category = $layer->getCurrentCategory(); 
      /* END MY ADDITION */ 

      $currentCategoryId= $_category->getId(); 
      $storeId = Mage::app()->getStore()->getId(); 
      $product = Mage::getModel('catalog/product'); 
      /* @var $product Mage_Catalog_Model_Product */ 
      $todayDate = $product->getResource()->formatDate(time()); 
      $products = $product->setStoreId($storeId)->getCollection() 
       ->addAttributeToSelect('status') 
       ->addAttributeToFilter('featured_products', array('Yes'=>true)) 

       /* THIS IS MY ADDITION */ 
       ->addAttributeToFilter('category_id', array('in' => $currentCategoryId)) 
       /* END MY ADDITION */ 

       ->addAttributeToSelect(array('name', 'price', 'small_image'), 'inner') 
       ->addAttributeToSelect(array('special_price', 'special_from_date', 'special_to_date'), 'left'); 
      /* @var $products Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */ 
      Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); 
      Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); 
      if($opt=='block'){ 
      $products->setOrder('hot_deals')->setPageSize($totproduct)->setCurPage(1); 
      } 
      else{ 
      $products->setOrder('hot_deals')->setPageSize(4)->setCurPage(1); 
      } 
      $this->setProductCollection($products); 
     } 

    } 
+0

爲什麼要使用IN時,你只需要匹配一個值? –

+0

不確定,還沒有到那麼遠,但主要問題是$ _category = $ layer-> getCurrentCategory();是NULL,所以由於某種原因,當前類別沒有得到正確檢索 – bonez

+0

你試過'法師::登記冊('current_category')'?在您瀏覽網站時,該值由Magento自動設置。 – BrianVPS

回答

0

發佈的解決方案在這裏:

 /* THIS IS MY ADDITION */ 
     $_category = Mage::registry('current_category'); 
     /* END MY ADDITION */ 

     $currentCategoryId= $_category->getId(); 
     $storeId = Mage::app()->getStore()->getId(); 
     $product = Mage::getModel('catalog/product'); 
     /* @var $product Mage_Catalog_Model_Product */ 
     $todayDate = $product->getResource()->formatDate(time()); 
     $products = $product->setStoreId($storeId)->getCollection() 
      ->addAttributeToSelect('status') 
      ->addAttributeToFilter('featured_products', array('Yes'=>true)) 
      /* THIS IS MY ADDITION */ 
      ->addCategoryFilter($_category) 
      /* END MY ADDITION */