php - Magento upsell_products 引发错误 "must be an instance of Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection"

标签 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 核心,但模块不兼容。

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

最佳答案

我遇到了与扩展“Market Ready German 2.1.3”相同的问题。它来自不兼容的核心覆盖,破坏了产品 View 页面。

如何修复 Magento 1.5.+ 的问题

<强>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/* 的内容并打开产品查看页面,就不会再记录任何错误。

这应该可以解决问题。

关于php - Magento upsell_products 引发错误 "must be an instance of Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078913/

相关文章:

magento - 左侧导航不会扩展到 100% Magento

php - 需要有关我的项目的建议!

php - 错误 : git was not found - installing laravel with composer windows

php - NOT NULL 值的 SELECT 语句返回 NULL 值。

javascript - PHP 'check all' 中的 'while loop' 复选框 (JavaScript)

php - 如何在 Magento 的自定义产品网格中显示是/否属性?

php - MP4 在直接访问时播放,但在 iOS 上通过 PHP 读取时不播放

php - 如何在magento中显示价格后的增值税

java - 为什么选择 Broadleaf Commerce 而不是 Magento 或 ZenCart?

php - Magento 产品集合 : Output top 3 products per custom attribute