Magento upsell_products引发错误"必须是Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection"的实例。

时间:2011-11-10 11:37:54

标签: php magento

将此行放入view.phtml ...

<?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核心,不兼容的模块。

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

2 个答案:

答案 0 :(得分: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 / *的内容并打开产品视图页面,它不会再记录任何错误。

亲切的问候

克里斯

答案 1 :(得分: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)

但这不是最佳解决方案。