Tampilkan produk di beranda magento 1.9

23

Baru saja menginstal magento 1.9 dan telah jatuh pada rintangan pertama. Saya telah membuat produk dan telah menggunakan saran dari versi sebelumnya untuk menampilkan produk di beranda tetapi saya mendapatkan pesan berikut

Kesalahan fatal: Memanggil ke fungsi anggota getSortedChildren()pada objek non-di app/design/frontend/rwd/default/template/catalog/product/list.phtmljalur 180

Setiap bantuan dengan penuh terima kasih diterima.

Di bagian konten beranda saya punya ...

<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>
rufus
sumber
Bisakah Anda memperbarui jawaban Anda dengan kode yang Anda gunakan untuk menambahkan produk?
Sander Mangel
Hai, saya telah menggunakan yang sama seperti yang saya lakukan untuk versi 8. Di bagian konten beranda saya punya ... <div class = "page-title"> <h2> Produk Terbaru Kami </h2> </div> < p> {{block type = "catalog / product_list" category_id = "3" template = "catalog / product / list.phtml"}} </p>
rufus

Jawaban:

24

Masalahnya adalah desain rwd baru memiliki dua blok anak untuk daftar produk:

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

Dan dalam template itu sendiri tidak ada pemeriksaan untuk melihat apakah ini ada sebelum mereka dicoba untuk dimuat dan digunakan.

Perbaikan cepat adalah dengan menggunakan templat yang berbeda yang merupakan salinan templat utama tetapi dengan suntingan berikut:

<?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; ?>

The name.afterterjadi dua kali dalam template tapi aftermuncul hanya satu. Satu hal terakhir yang perlu diperhatikan adalah bahwa rwd css default menyembunyikan bagian tindakan dari daftar produk pada halaman cms.

David Manners
sumber
Bisakah Anda menunjukkan di file mana kode ini harus ditambahkan dalam tema rwd?
Bhargav Mehta
Menambahkan file apa yang akan membantu, serta baris. Kode di atas tidak cocok dengan kode di list.phtml
Philip Deatherage
Hai philip bisa jadi bahwa versi terbaru dari Magento telah memperbaiki masalah ini.
David Manners
templat utama mana yang perlu disalin? list.phtml?
Pixelomo