Magento Enterprise Edition,版本1.13.1.0
无法通过管理屏幕添加新产品评论。在"管理"中单击"添加新评论"按钮时,菜单目录:评论和评级:客户评论:所有评论,并在Magento中生成异常,然后显示404页面。
这是一个干净的Magento安装,没有自定义。
关于如何解决这个问题的任何想法?
块
类app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php,在第74行调用setStoreFilter(),使用硬编码的存储代码"default",当Magento中没有代码为"default"的商店时,它会生成异常,当错误页面关闭时,将管理员用户转发到404页面。
要重现该问题,请在Magento中创建第二个商店和相关商店视图,将"默认"商店代码更改为"mystorecode",然后转到管理菜单"目录>评论和评级>客户评论>所有评论",然后按"添加新评论"按钮。
建议的修复如下:
--- a/app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php
+++ b/app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php
@@ -68,10 +68,13 @@ class Mage_Adminhtml_Block_Review_Rating_Detailed extends Mage_Adminhtml_Block_T
->addRatingOptions();
} elseif (!$this->getIsIndependentMode()) {
+ $default_store = Mage::app()->getWebsite()->getDefaultStore();
$ratingCollection = Mage::getModel('rating/rating')
->getResourceCollection()
->addEntityFilter('product')
- ->setStoreFilter(Mage::app()->getStore('default')->getId())
+ ->setStoreFilter( ($default_store)
+ ? $default_store->getId()
+ : Mage_Core_Model_App::ADMIN_STORE_ID )
->setPositionOrder()
->load()
->addOptionToItems();
只需替换:
$ratingCollection = Mage::getModel('rating/rating')
->getResourceCollection()
->addEntityFilter('product')
->setStoreFilter(Mage::app()->getStore('default')->getId())
->setPositionOrder()
->load()
->addOptionToItems();
跟:
$default_store = Mage::app()->getWebsite()->getDefaultStore();
$ratingCollection = Mage::getModel('rating/rating')
->getResourceCollection()
->addEntityFilter('product')
->setStoreFilter( ($default_store)
? $default_store->getId()
: Mage_Core_Model_App::ADMIN_STORE_ID )
->setPositionOrder()
->load()
->addOptionToItems();
希望这能解决问题。
Magento团队在较新版本中解决此问题,他们添加了此代码
->setStoreFilter(Mage::app()->getDefaultStoreView()->getId())
而不是
->setStoreFilter(Mage::app()->getStore('default')->getId())
我认为升级版本的最佳主意