Magento致命错误:在非对象上调用成员函数getSortedChildren()

时间:2014-05-14 11:59:08

标签: magento magento-1.9

我已经安装了Magento CE 1.9版本,并在主页上调用Catalog后收到错误。问题似乎与 list.phtml 有关。

  

错误:致命错误:调用成员函数 getSortedChildren() on   一个非对象   mageinc \程序\设计\前台\ RWD \ DEFAULT \模板\目录\产品\ list.phtml   第74行

安装后我没有改变任何东西,看来这个问题出现在Magento 1.9版本中。

目录页面上的列表和网格视图都出现问题,因为它正在为两个视图调用。

有没有解决此问题的最佳解决方案?

6 个答案:

答案 0 :(得分:5)

您只需在第134行删除方法->getSortedChildren();

$_nameAfterChildren = $this->getChild('name.after')->getSortedChildren();

所以你有

$_nameAfterChildren = $this->getChild('name.after');

答案 1 :(得分:2)

在块部分布局文件

中添加这些行
     <block type="core/text_list" name="product_list.name.after" as="name.after"/>
     <block type="core/text_list" name="product_list.after" as="after"/>

答案 2 :(得分:1)

将代码替换为:

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

见:https://magento.stackexchange.com/questions/20984/show-products-on-homepage-magento-1-9/20996#20996?newreg=c5c83466c28d45259ed36642cfe0a382

答案 3 :(得分:0)

编辑此文件app / design / frontend / rwd / default / template / catalog / product / list.phtml 在73和135行添加此代码

                <?php if(!empty($nameAfter = $this->getChild('name.after'))): ?>

就在之前:

                    $_nameAfterChildren = $nameAfter->getSortedChildren();

并在82和144行添加此代码

                <?php endif; ?>

之后

                <?php endforeach; ?>

答案 4 :(得分:0)

Pass TeT的解决方案将抛出PHP错误&#34; PHP致命错误:在写上下文中不能使用方法返回值&#34;因为PHP没有空洞的概念。最好使用<?php if($this->getChild('name.after')): ?>什么不会引发错误。

答案 5 :(得分:-1)

嘿伙计我有同样的问题 - 但是因为我没有复制app / default / default的所有文件

     应用程序/ yourTheme /默认

我在默认目录中丢失了文件。根据我的理解 - 所有文件都需要复制     在/ etc
    /布局
    /本地
    /模板