如何随机和限制相关产品?
-
28-09-2020 - |
题
我一直在1.9.2.1的默认RWD上使用自己的主题。
我想限制相关产品,只能显示8个产品,而不是我目前为单一产品的说明139。
此外,我想随意在所有相关产品中随机8挑选。
我知道我可以简单地在循环中添加一个休息,所以当它已经停止了8次它会停止,但这相信可以浪费资源。我收集了下面的代码负责创建相关产品的集合。所以,我如何以正确的方式修改这一点来限制8个产品,随机选择?
$product = Mage::registry('product');
/* @var $product Mage_Catalog_Model_Product */
$this->_itemCollection = $product->getRelatedProductCollection()
->addAttributeToSelect('required_options')
->setPositionOrder()
->addStoreFilter()
;
if (Mage::helper('catalog')->isModuleEnabled('Mage_Checkout')) {
Mage::getResourceSingleton('checkout/cart')->addExcludeProductFilter($this->_itemCollection,
Mage::getSingleton('checkout/session')->getQuoteId()
);
$this->_addProductAttributesAndPrices($this->_itemCollection);
}
// Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
$this->_itemCollection->load();
foreach ($this->_itemCollection as $product) {
$product->setDoNotUseCategoryId(true);
}
return $this;
. 解决方案
在后面之似乎是一个很容易解决的问题:通过在intemcollection负载之上的_preparedata()函数中添加下面的两行。
然而,虽然我仍然是Magento世界的新手,但我知道你应该永远不应该编辑核心文件,而是应该扩展要更改的模块。但是,遗憾的是,如果有人可以纳入我的答案,那么这就是这样,所以它可以作为正确的方式是可靠的,然后我会很感激。
$this->_itemCollection->getSelect()->order('rand()');
$this->_itemCollection->setPage(1, 8);
.