2013-02-01 44 views
1

我只需要在類別頁面中僅顯示簡單的產品,但我無法將「不可見」設置爲可配置,因爲我需要可配置的活動產品頁面。如何從類別列表中僅刪除可配置產品

我發現這個代碼從列表中移除配置屬性:

$_productCollection=$this->getLoadedProductCollection(); 
    $_productCollection = clone $this->getLoadedProductCollection(); 
    $_productCollection->clear() 
        ->addAttributeToFilter('type_id', 'simple') 
        ->load(); 

    $_helper = $this->helper('catalog/output'); 

它的工作原理,但是,在分層導航的配置產品仍在計算。它像「顏色:紅色(2)」,但我只有1個紅色(簡單)。 如何完全刪除可配置產品?

+1

爲什麼這些產品在這個類別中,如果你不想讓他們在那裏開始? – clockworkgeek

+0

因爲當用戶在產品頁面(可配置)時,我需要完整的麪包屑(主頁>分類>子菜單>產品) 使用顏色色板模塊。我想在類別頁面中顯示所有簡單的產品,並且當用戶點擊某個產品時,他會轉到該簡單產品的可配置產品,使用完整面包屑 – Paulo

回答

2

分層導航使用單獨加載的集合對象。

一種可能的方式,以確保未來的導航過濾器正確的計數是覆蓋模型Mage_Catalog_Model_Layer和你的過濾器添加到其功能Mage_Catalog_Model_Layer::prepareProductCollection

public function prepareProductCollection($collection) 
    { 
     $collection 
      ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) 
      ->addMinimalPrice() 
      ->addFinalPrice() 
      ->addTaxPercents() 
      ->addUrlRewrite($this->getCurrentCategory()->getId()) 
      ->addAttributeToFilter('type_id', 'simple'); 

     Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); 
     Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); 

     return $this; 
    } 

要做到這一點你當地代碼庫創建一個模塊。在​​3210文件中添加以下節點到節點global

<models> 
     <catalog> 
      <rewrite> 
       <layer>YourPackage_YourModule_Model_Rewrite_Layer</layer> 
      </rewrite> 
     </catalog> 
</models> 

在你的模塊添加目錄「重寫」文件夾下的「樣板」,並在其上創建文件Layer.php。在創建的文件Model/Rewrite/Layer.php添加一個類,定義如下:

class YourPackage_YourModule_Model_Rewrite_Layer extends Mage_Catalog_Model_Layer { 
} 

添加功能上面這個類,清除緩存。

+0

謝謝!但你能更具體地說我該怎麼做?女巫的核心文件,我需要複製到'本地'? – Paulo

+0

不要將任何核心文件複製到本地,使用模型重寫作爲Magento中的首選。看到我的回答更新 –

+0

好吧,明白了。我創建了模塊,Magento正在加載重寫。它解決了部分問題,因爲在此之前,我使用的無限ajax加載也試圖加載可配置的,現在它不是。但是,分層導航仍在計算可配置(即使用magento 1.7.2) – Paulo

相關問題