当前位置: 首页>>WEB开发>>正文


在主页magento 1.9上显示产品

webfans WEB开发 , , , , , 去评论

问题描述

刚刚安装了magento 1.9并且已经落在第一关。我已创建了一个产品,并使用了以前版本的建议在主页上显示产品,但收到以下消息

Fatal error: Call to a member function getSortedChildren() on a non-object in app/design/frontend/rwd/default/template/catalog/product/list.phtml on line 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>

最佳解决思路

问题是新的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页面上产品列表的actions部分。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/3017.html,转载请务必附带本地址声明。