2011-11-10 26 views
1

把此行view.phtml ...Magento的upsell_products引发错误 “必须是Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection的实例”

<?php echo $this->getChildHtml('upsell_products') ?> 

...引发此错误:

Recoverable Error: Argument 1 passed to Mage_Catalog_Block_Product_Abstract::_addProductAttributesAndPrices() must be an instance of Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection, instance of Mage_Catalog_Model_Resource_Product_Link_Product_Collection given, called in D:\active\***\src\app\code\core\Mage\Catalog\Block\Product\List\Upsell.php on line 65 and defined in D:\active\***\src\app\code\local\Mage\Catalog\Block\Product\Abstract.php on line 355 

#0 D:\active\***\src\app\code\local\Mage\Catalog\Block\Product\Abstract.php(355): mageCoreErrorHandler(4096, 'Argument 1 pass...', 'D:\active\***...', 355, Array) 
#1 D:\active\***\src\app\code\core\Mage\Catalog\Block\Product\List\Upsell.php(65): Mage_Catalog_Block_Product_Abstract->_addProductAttributesAndPrices(Object(Mage_Catalog_Model_Resource_Product_Link_Product_Collection)) 
#2 D:\active\***\src\app\code\core\Mage\Catalog\Block\Product\List\Upsell.php(94): Mage_Catalog_Block_Product_List_Upsell->_prepareData() 
#3 D:\active\***\src\app\code\core\Mage\Core\Block\Abstract.php(862): Mage_Catalog_Block_Product_List_Upsell->_beforeToHtml() 
#4 D:\active\***\src\app\code\core\Mage\Core\Block\Abstract.php(582): Mage_Core_Block_Abstract->toHtml() 
#5 D:\active\***\src\app\code\core\Mage\Core\Block\Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('upsell_products', true) 
#6 D:\active\***\src\app\design\frontend\default\***\template\catalog\product\view.phtml(163): Mage_Core_Block_Abstract->getChildHtml('upsell_products') 

我发现只有一个forum topic,它说,有不兼容模块的magento 1.6核心。

你能帮我解决这个问题吗?

回答

3

我有同样的问题,来自扩展名“Market Ready Germany 2.1.3”。 它来自不兼容的核心覆盖,打破了产品视图页面。这是如何从1.5解决它的Magento的。+

1.复制当前的核心文件

\app\code\core\Mage\Catalog\Block\Product\Abstract.php 

\app\code\local\Mage\Catalog\Block\Product\Abstract.php 

确保备份在本地存在的文件(只需重命名它)。

2.比较两个文件

打开旧的本地文件,然后搜索这个方法:

public function getPriceHtml(

应该有他们周围的两个部分,解说:

//begin: symmetrics code 
... 
//end: symmetrics code 

只需将第一个对称部分复制到方法开始处,然后将第二部分复制到返回值。而已。删除var/cache/*的内容并打开一个产品视图页面,它不会再记录任何错误。

亲切的问候

克里斯

+0

我刚刚删除\ app \ code \ local \ Mage \ Catalog \ Block \ Product \ Abstract.php,它的工作原理。谢谢! –

0

有一个快速的解决方案:编辑文件 \本地\法师\目录\块\产品\ Abstract.php

,改变

protected function _addProductAttributesAndPrices(Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $collection)

protected function _addProductAttributesAndPrices(Mage_Catalog_Model_Resource_Product_Link_Product_Collection $collection)

但这不是最好的解决方案。

相关问题