2013-05-10 17 views
7

Ürün ile ilgili ürünlerin görüntülenme listemize içeriğinde kutu yerleşim düzenini görüyorsunuz. Catalog.xml Benim kodudur:Ürün gösterme sayfasında 3 ilgili ürün gösteriliyor Magento?

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

, tüm ilgili ürünler ne yapmalıyım, benim ürün görünüm sayfasında görüntülenen, ama sadece 3 ürün görüntülemek istediğiniz edilir? Lütfen, kimse yardım edebilir mi? catalog/product/list/related.phtml şablon dosyasını düzenlemeniz ve döngüyü yalnızca 3 ürünle yinelemek üzere sınırlamanız gerekir.

cevap

9

Örneğin

:

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

thnx @zitix, benim için çalıştı. Statik olsa da, ama şimdilik çalıştı. :) – madzacky

+3

Burada sadece üç tane istediğinizde daha büyük bir koleksiyon alacaksınız. Bu yüzden daha fazla kaynak yoğun olacaktır. Koleksiyon kodunuzda bu sınırı ekleyin 3. – oscprofessionals

1

Sen Mage_Catalog_Block_Product_List_Related hazırlanan ürün koleksiyonu var ve bu şablon dosyasında catalog/product/list/related.phtml içinde tekrarlanır. Koleksiyonunuzu sınırlandırmak için eklemeniz gereken bir kural varsa, _prepareData() yöntemini geçersiz kılabilir ve koleksiyonu değiştirebilirsiniz. Değilse, en kolay çözüm üç yinelemeden sonra phtml'deki döngüden çıkmaktır.

4

Bu benim için çalıştı. Sorguyu sınırlamanız ve koleksiyonunuzu yüklemeden önce karıştırmanız gerekebilir. Dosya \ app \ kodu \ çekirdek \ Mage \ Katalog \ Blok \ Ürün \ Liste \ Related.php açın ve yönteme arayın:

Mage_Catalog_Block_Product_List_Related -> _ prepareData()

bu satırı ekleyin load() çağrısından önce. Hala güzel değil

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

, !! çekirdek kodunda yazmak gerekir !!, ama iyi bir başlangıç.

+0

Bu mükemmel bir cevaptır. Eklemek gerekirse, çekirdek dosyalarının üzerine yazdığınız için, bu –

+0

sınıfının yeniden yazılması gerekir. Kod mantığına ihtiyacınız varsa, bu sınıfı genişletmek için model yazmalısınız. – Nerjuz

+0

@Nerjuz Çeviri: "Bu yanlış bir yöntem çünkü istediğim şey değil". Çekip gitmek! – Deji

İlgili konular