แสดงผลิตภัณฑ์ในหน้าแรก magento 1.9


23

เพิ่งติดตั้งวีโอไอพี 1.9 และได้ลดลงในอุปสรรค์แรก ฉันได้สร้างผลิตภัณฑ์และใช้คำแนะนำจากรุ่นก่อนหน้าเพื่อแสดงผลิตภัณฑ์ในหน้าแรก แต่ได้รับข้อความต่อไปนี้

ข้อผิดพลาดร้ายแรง: การเรียกฟังก์ชันสมาชิกgetSortedChildren()บนวัตถุที่ไม่ใช่ในapp/design/frontend/rwd/default/template/catalog/product/list.phtmlบรรทัด 180

ความช่วยเหลือใด ๆ ที่ได้รับสุดซึ้ง

ในส่วนเนื้อหาของหน้าแรกฉันมี ...

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

คุณช่วยอัพเดทคำตอบของคุณด้วยรหัสที่คุณใช้ในการเพิ่มผลิตภัณฑ์ได้หรือไม่?
Sander Mangel

สวัสดีฉันเคยใช้เช่นเดียวกับที่ทำกับรุ่น 8 ในส่วนเนื้อหาของหน้าแรกฉันมี ... <div class = "page-title"> <h2> ผลิตภัณฑ์ล่าสุดของเรา </h2> </div> < p> {{block type = "catalog / product_list" category_id = "3" template = "catalog / product / list.phtml"}} </p>
rufus

คำตอบ:


24

ปัญหาคือการออกแบบ rwd ใหม่มีสองบล็อกลูกสำหรับรายการผลิตภัณฑ์:

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

และในเทมเพลตเองจะไม่มีการตรวจสอบเพื่อดูว่ามีสิ่งเหล่านี้อยู่ก่อนที่จะพยายามโหลดและใช้งานหรือไม่

การแก้ไขด่วนคือการใช้เทมเพลตอื่นที่เป็นสำเนาของเทมเพลตหลัก แต่ด้วยการแก้ไขต่อไปนี้:

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

name.afterเกิดขึ้นสองครั้งในแม่แบบ แต่afterปรากฏเพียงหนึ่ง สิ่งสุดท้ายที่ควรทราบคือค่าเริ่มต้น rwd css จะซ่อนส่วนการกระทำของรายการผลิตภัณฑ์ในหน้า cms


คุณช่วยชี้ไฟล์ที่จะต้องเพิ่มรหัสนี้ในธีม rwd ได้ไหม
Bhargav Mehta

การเพิ่มไฟล์ใดจะช่วยได้เช่นเดียวกับบรรทัด ด้านบนไม่ตรงกับรหัสใน list.phtml
Philip Deatherage

สวัสดี philip อาจเป็นไปได้ว่าเวอร์ชันล่าสุดของ magento ได้แก้ไขปัญหานี้แล้ว
David Manners

เทมเพลตหลักใดที่ต้องคัดลอก list.phtml?
Pixelomo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.