Magento upsell_products вызывает ошибку "должен быть экземпляром Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection" - PullRequest
1 голос
/ 10 ноября 2011

Помещение этой строки в 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')

Я нашел только одну тему форума и там написано, что есть ядро ​​magento 1.6 с несовместимыми модулями.

Можете ли вы помочь мне решить эту проблему, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

У меня была такая же проблема, которая возникла из расширения "Market Ready Germany 2.1.3".Это произошло из-за несовместимой перезаписи ядра, которая сломала страницы просмотра продукта.Вот как это исправить для 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 / * и откройте страницу просмотра продукта, в которой больше не будет регистрироваться ошибок.

С уважением

Chris

0 голосов
/ 14 ноября 2011

Существует одно быстрое решение: отредактируйте файл \ local \ Mage \ Catalog \ Block \ Product \ Abstract.php

и измените

защищенную функцию _addProductAttributesAndPrices (Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $)

до

защищенная функция _addProductAttributesAndPrices (Mage_Catalog_Model_Resource_Product_Link_Product_Collection $ collection)

Но это не лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...