2012-12-01 91 views
0

我想隨機在我的類別在Magento社區版上市的產品在每個會話的基礎上 - 給的「新鮮度」在我的類別,而不是每一樣陳舊上市的幻覺或改變時間。隨機化上市產品類別在Magento

我的意思是,我想用戶看到不同順序的產品時,他們訪問網站上的範疇,但在每個會話的基礎上。所以,讓我們說,用戶正在訪問的A類,第一次,用戶將屬於該類別的產品隨機排序列表中。現在當他們去拜訪另一個類別時,比如B類,然後回到A類,這個列表就像前面看到的那樣,而不是隨機的。所以隨機化只在每個類別的會話中進行一次。現在當用戶回來幾小時後,在新的會話中,隨機化會再次啓動。

這可能嗎?如果是這樣,任何幫助或方向將不勝感激。 非常感謝。

回答

0

是的,它是可能的,但你要在運行問題,當您嘗試應用過濾器(如按價格從低到高等排序)

我認爲更好的方法是按日期進行隨機這樣每個人在特定的一天都會得到相同的產品訂單。

下面是我用來從標籤頁面中的特定類別隨機顯示產品的僞代碼示例。 (你可以改變$seed來完成你想要的)

public function _getProductCollection() 
{ 

    if(is_null($this->_productCollection)) { 
     $category = Mage::getModel('catalog/category')->load($this->getCategoryId()); 

     $seed = $this->getCategoryId() . date("W"); 

     $this->_productCollection = Mage::getResourceModel('catalog/product_collection'); 
     Mage::getModel('catalog/layer')->prepareProductCollection($this->_productCollection); 
     $this->_productCollection->getSelect()->order("rand($seed)"); 
     $this->_productCollection->addStoreFilter(); 
     $this->_productCollection->addCategoryFilter($category); 

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


    return $this->_productCollection; 
} 
+0

謝謝你,原諒我的瘋狂響應延遲 - 你的答案逃過了我莫名其妙! :S你能告訴我哪些文件(S)我應該修改和哪些部分爲了得到這個工作?該過濾器功能(即按價格從低到高排序等)不是我們反正用的東西,所以它目前並不對我們那麼重要。 –

+0

請看'Mage_Catalog_Block_Product_List'中的'_getProductCollection'(/app/code/core/Mage/Catalog/Block/Product/List.php) –

+0

您應該也可以使用觀察者查看'catalog_block_product_list_collection' –