2013-05-10 5 views
7

私は関連商品をコンテンツの商品ページで表示しています。 のcatalog.xmlでの私のコードは次のとおりです。Magentoの製品ビューページに関連製品を3つだけ表示する方法を教えてください。

<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

+3

ここでは、3つしか望みませんが、より大きなコレクションが得られます。これはより多くのリソースを消費します。あなたのコレクションコードに3のこの制限を加えてください。 – oscprofessionals

1

あなたはMage_Catalog_Block_Product_List_Relatedで製造した製品のコレクションを持って、それをテンプレートファイルcatalog/product/list/related.phtmlに繰り返されます。 コレクションを制限するために追加するルールがある場合は、_prepareData()メソッドをオーバーライドしてコレクションを変更できます。 そうでない場合、最も簡単な解決策は、3回の繰り返しの後にphtmlのループから抜け出すことです。

4

これは私のために働いた。 クエリを制限し、コレクションをロードする前にシャッフルする必要があります。ファイル\アプリケーション\コード\コア\のメイジ\カタログ\ブロック\製品\リスト\ Related.phpを開き、方法を探します。

Mage_Catalog_Block_Product_List_Related - > _ prepareData()

この行を追加します。 load()の前に呼び出します。

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

まだまだ、かわいいですか、!!あなたはコアコードを書くべきではありません!!ですが、それは良いスタートです。

+0

これは完璧な答えです。追加するだけで、クラスを書き直す必要があります –

+0

コアファイルを上書きするため、これは間違った方法です。コード変更ロジックが必要な場合は、このクラスを拡張するためのモデルを記述する必要があります。 – Nerjuz

+0

@Nerjuz翻訳: "それは私が欲しいものではないので、間違った方法です"。どこかに行って! – Deji

関連する問題