Hiển thị sản phẩm trên trang chủ magento 1.9


23

Chỉ cần cài đặt magento 1.9 và đã rơi vào rào cản đầu tiên. Tôi đã tạo một sản phẩm và đã sử dụng các đề xuất từ ​​các phiên bản trước để hiển thị sản phẩm trên trang chủ nhưng đang nhận được thông báo sau

Lỗi nghiêm trọng: Gọi đến một hàm thành viên getSortedChildren()trên một đối tượng không phải app/design/frontend/rwd/default/template/catalog/product/list.phtmltrên dòng 180

Bất kỳ trợ giúp nhận được biết ơn.

Trong phần nội dung của trang chủ tôi có ...

<div class="page-title"> 
    <h2>Our Latest Products</h2> 
</div> 
<p>{{block type="catalog/product_list" category_id="3" template="catalog/product/list.phtml"}}</p>

Bạn có thể vui lòng cập nhật câu trả lời của mình với mã bạn đã sử dụng để thêm sản phẩm không?
Sander Mangel

Xin chào, tôi đã sử dụng giống như tôi làm cho phiên bản 8. Trong phần nội dung của trang chủ, tôi có ... <div class = "page-title"> <h2> Sản phẩm mới nhất của chúng tôi </ h2> </ div> < p> {{block type = "catalog / sản phẩm_list" category_id = "3" template = "catalog / sản phẩm / list.phtml"}} </ p>
rufus

Câu trả lời:


24

Vấn đề là thiết kế rwd mới có hai khối con cho danh sách sản phẩm:

<block type="core/text_list" name="product_list.name.after" as="name.after" />
<block type="core/text_list" name="product_list.after" as="after" />

Và trong bản thân mẫu, không có kiểm tra để xem nếu chúng có mặt trước khi chúng được tải và sử dụng.

Cách khắc phục nhanh sẽ là sử dụng một mẫu khác là bản sao của mẫu chính nhưng với các chỉnh sửa sau:

<?php
$_nameAfter = $this->getChild('name.after');
// New if here
if($_nameAfter):
    $_nameAfterChildren = $_nameAfter->getSortedChildren();
    foreach($_nameAfterChildren as $_nameAfterChildName):
        $_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
        $_nameAfterChild->setProduct($_product);
        ?>
        <?php echo $_nameAfterChild->toHtml(); ?>
    <?php endforeach; ?>
<?php endif; ?>

<?php
//set product collection on after blocks
$_afterChildren = $this->getChild('after');
if ($_afterChildren):
    $_afterChildren = $this->getChild('after')->getSortedChildren();
    foreach($_afterChildren as $_afterChildName):
        $_afterChild = $this->getChild('after')->getChild($_afterChildName);
        $_afterChild->setProductCollection($_productCollection);
    ?>
    <?php echo $_afterChild->toHtml(); ?>
<?php endforeach; ?>
<?php endif; ?>

Việc name.afterxảy ra hai lần trong mẫu nhưng afterchỉ xuất hiện một. Một điều cuối cùng cần lưu ý là rwd css mặc định ẩn phần hành động của danh sách sản phẩm trên các trang cms.


Bạn có thể vui lòng chỉ vào tập tin mà mã này phải được thêm vào trong chủ đề rwd không?
Bhargav Mehta

Thêm tập tin nào sẽ giúp, cũng như các dòng. Những điều trên không khớp với mã trong danh sách.phtml
Philip Deatherage

Xin chào philip có thể là phiên bản mới nhất của magento đã khắc phục vấn đề này.
David Manners

mẫu chính nào cần được sao chép? liệt kê.
Pixelomo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.