2012-03-19 132 views
3

我有問題。我想在產品頁面顯示4個相關產品。這很簡單,我已經做到了。但是,如果產品沒有任何或少於4種產品,我希望剩餘的產品隨機出現在頁面中。如何獲得隨機產品,如果我沒有在magento的相關產品

+0

隨機出現,但隨機出現哪些產品?在您指定的同一類別或另一類別中? – 2012-03-19 08:18:47

+1

abnab附加列表的標準是什麼? 快速解決方案:檢查條件,然後使用標準magento收集裝載更多產品。 – Sergey 2012-03-19 10:11:29

+0

我會說,如果它沒有找到任何相關的產品...列出同類產品..如果這還不夠。清單產品的任何catetory – abnab 2012-03-19 23:10:33

回答

2

先選擇4級隨機的產品,你需要重寫返回集合類似下面的代碼類,負責相關的塊(或只是移動這個文件到本地文件夾)和功能的變化邏輯:

$productsCollection = Mage::getResourceModel('catalog/product_collection'); 
$productsCollection->getSelect()->order('rand()'); 
$productsCollection->getSelect()->limit(4); 

希望這會有幫助

1

如果您只想在產品頁面上創建此功能,您可以在Mage_Catalog_Block_Product_List_Related::_prepareData()中找到大部分魔術。

要用隨機產品填寫您的相關產品,我們首先需要知道我們需要多少隨機產品。在這種情況下,它是(4 - 找到相關的產品):

// Existing Magento code near end of method 
$this->_itemCollection->load(); 

// Our code 
$numRandomsToGet = 4 - count($this->_itemCollection); 

然後,我們可以獲取隨機產品的適當數量,並將它們添加到集合:

// Our code 
$randCollection = Mage::getResourceModel('catalog/product_collection'); 
Mage::getModel('catalog/layer')->prepareProductCollection($randCollection); 
$randCollection->getSelect()->order('rand()'); 
$randCollection->addStoreFilter(); 
$randCollection->setPage(1, $numRandomsToGet); 
$randCollection->addIdFilter($this->_itemCollection->getAllIds(), true); 

foreach($randCollection as $randProduct) 
{ 
    $this->_itemCollection->addItem($randProduct); 
} 

// Existing Magento code 
foreach ($this->_itemCollection as $product) { 
    $product->setDoNotUseCategoryId(true); 
} 

return $this; 

買者/插頭:我拉這個代碼來自Related Products Manager extension for Magento,所以這個方法可能有一些擺脫外部的方法需要完成,但我不這麼認爲。如果您遇到困難,您可以嘗試下載擴展程序並全面檢查代碼。或者,當然,您可以直接使用擴展名。

相關問題