2013-05-10 135 views
7

我在展示相关产品内容产品视图页面中的布局块。我在的catalog.xml代码:如何在产品查看页面上显示3种相关产品,Magento?

<reference name="content"> 
    <block type="catalog/product_list_related" name="catalog.product.related" after="-" template="catalog/product/list/related.phtml"/> 
</reference> 

现在,所有的相关产品将显示在我的产品视图页面,但我想只显示3个产品,我该怎么办?请,任何人都可以帮忙?

回答

9

您需要编辑模板文件catalog/product/list/related.phtml并将循环限制为仅遍历3个产品。

例如:

... 
    <?php $i = 0; ?> 
    <?php foreach($this->getItems() as $_item): ?> 
     <?php if($i++ == 3) break; ?> 
     ... 
+0

thnx @zitix,它为我工作。虽然它的静态,但现在工作。 :) – madzacky 2013-05-10 13:18:24

+3

在这里你会得到更大的收藏,而你只需要三个。所以这将是更多的资源密集型。在您的收藏代码中添加此限制3. – oscprofessionals 2013-05-10 19:14:50

1

,您已经对Mage_Catalog_Block_Product_List_Related准备产品的集合,它是在模板文件catalog/product/list/related.phtml迭代。 如果您有任何应添加的规则来限制您的集合,则可以覆盖_prepareData()方法并修改集合。 如果不是,最简单的解决方案是在三次迭代后从phtml中的循环中退出。

4

这对我有效。 您必须限制查询,并且可能在加载集合之前对其进行洗牌。打开文件\程序\代码\核心\法师\目录\块\产品\目录\ Related.php并寻找方法:

Mage_Catalog_Block_Product_List_Related - > _ prepareData()

添加此行在load()调用之前。

$this->_itemCollection->getSelect()->limit(3)->order(new Zend_Db_Expr('RAND()')); 

它仍然是不漂亮,!!你不应该在核心代码写!,但这是一个很好的开始。

+0

这是最完美的答案。只需添加一个,应该重写类 – 2014-12-09 09:04:59

+0

这是错误的方法,因为您覆盖了核心文件。如果需要更改代码逻辑,则必须编写模型来扩展此类。 – Nerjuz 2015-02-18 14:39:21

+0

@Nerjuz翻译:“这是错误的方法,因为它不是我想要的”。走开! – Deji 2015-10-08 14:39:48

相关问题