我已经安装了Magento CE 1.9版本,并在主页上调用Catalog后收到错误。问题似乎与 list.phtml 有关。
错误:致命错误:调用成员函数 getSortedChildren() on 一个非对象 mageinc \程序\设计\前台\ RWD \ DEFAULT \模板\目录\产品\ list.phtml 第74行
安装后我没有改变任何东西,看来这个问题出现在Magento 1.9版本中。
目录页面上的列表和网格视图都出现问题,因为它正在为两个视图调用。
有没有解决此问题的最佳解决方案?
答案 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; ?>
答案 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
/布局
/本地
/模板