2013-05-10 18 views
7

Tôi đang hiển thị các sản phẩm có liên quan trong nội dung khối bố cục trong trang chế độ xem sản phẩm. Mã của tôi trong catalog.xml là:Cách chỉ hiển thị 3 sản phẩm có liên quan trên trang xem sản phẩm, Magento?

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

Bây giờ, tất cả các sản phẩm liên quan được hiển thị trong trang xem sản phẩm của tôi, nhưng tôi muốn chỉ hiển thị 3 sản phẩm, tôi nên làm gì? Xin vui lòng, ai cũng có thể giúp ??

Trả lời

9

Bạn cần chỉnh sửa tệp mẫu catalog/product/list/related.phtml và giới hạn vòng lặp để chỉ lặp qua 3 sản phẩm.

Ví dụ:

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

thnx @zitix, nó làm việc cho tôi. Mặc dù tĩnh của nó, nhưng làm việc cho bây giờ. :) – madzacky

+3

ở đây bạn sẽ nhận được một bộ sưu tập lớn hơn trong khi bạn muốn chỉ có ba. do đó, điều này sẽ được nhiều nguồn lực chuyên sâu.Trong mã bộ sưu tập của bạn thêm giới hạn này 3. – oscprofessionals

1

Bạn có một bộ sưu tập các sản phẩm chuẩn bị Mage_Catalog_Block_Product_List_Related và nó được lặp trong file template catalog/product/list/related.phtml. Nếu bạn có bất kỳ quy tắc nào cần thêm vào để giới hạn bộ sưu tập của mình, bạn có thể ghi đè phương thức _prepareData() và sửa đổi bộ sưu tập. Nếu không, giải pháp dễ nhất là thoát khỏi vòng lặp trong phtml sau ba lần lặp lại.

4

Điều này phù hợp với tôi. Bạn phải giới hạn truy vấn và có thể phát ngẫu nhiên trước khi tải bộ sưu tập. Mở tập tin \ ứng dụng \ đang \ core \ Mage \ Catalog \ Khối \ Sản phẩm \ Danh sách \ Related.php và tìm kiếm phương pháp:

Mage_Catalog_Block_Product_List_Related -> _ prepareData()

Thêm dòng này trước cuộc gọi load().

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

Nó vẫn không đẹp, !! bạn không nên viết mã lõi !!, nhưng đó là một khởi đầu tốt.

+0

Đây là câu trả lời hoàn hảo. Chỉ cần thêm, người ta nên viết lại lớp –

+0

đây là phương pháp sai vì bạn ghi đè lên các tệp lõi. Bạn phải viết mô hình để mở rộng lớp này nếu bạn cần thay đổi mã logic. – Nerjuz

+0

@Nerjuz Dịch: "Đó là phương pháp sai vì nó không phải là cái tôi muốn". Biến đi! – Deji