正在寻找在Magento中添加按评级排序的帮助。我在toolbar.php中添加了一些代码片段,这些代码片段似乎添加了按评级排序,但当试图选择它时,它会被卡住,直到我重新加载页面。如有任何帮助,我们将不胜感激。代码如下:这是Toolbar.php文件。
//开始新代码
$this->getCollection()->joinField('rating',
'review/review_aggregate',
'rating_summary',
'entity_pk_value=entity_id',
'{{table}}.store_id=1',
'left');
// End new Code
和
//将评级添加到"排序依据"
$_availableOrder = $this->_availableOrder;
$_availableOrder['rating'] = 'Rating';
return $_availableOrder;
$this->_availableOrder = array(
‘rating_summary’ => Mage::helper(’catalog’)->__(’Rating’),
‘price’ => Mage::helper(’catalog’)->__(’Price’),
‘newest’ => Mage::helper(’catalog’)->__(’Newest’),
‘name’ => Mage::helper(’catalog’)->__(’Name’)
);
最好是在模块中实现这一点,但现在开始:
首先,我们将改变从数据库中检索产品的方式,将整体评级(显示为产品上的星数)以及其他产品属性包括在内。将文件app/code/core/Mage/Catalog/Block/Product/List.php复制到app/code/local/Mage/Coatalog/Bock/Product/LList.php并打开进行编辑。
在新的List.php文件中,找到以下行(第86行附近):
$this->_productCollection = $layer->getProductCollection();
之后添加以下内容:
$this->_productCollection->joinField('rating_summary', 'review_entity_summary', 'rating_summary', 'entity_pk_value=entity_id', array('entity_type'=>1, 'store_id'=> Mage::app()->getStore()->getId()), 'left');
现在,我们需要添加一个选项,以便客户可以选择"评级"作为排序依据。将文件app/code/core/Mage/Coatalog/Model/Config.php复制到app/code/local/Mage/Catalog/Module/Config.php并进行编辑。
在新的Config.php文件中找到以下代码(应该从第298行开始):
$options = array(
'position' => Mage::helper('catalog')->__('Position')
);
用代码替换为:
$options = array(
'position' => Mage::helper('catalog')->__('Position'),
'rating_summary' => Mage::helper('catalog')->__('Rating')
);
现在,当你在网站上查看类别时,除了其他类别外,你还应该有一个"评级"选项。请注意,排序顺序默认为升序,因此将首先显示评级最低的产品。客户可以通过单击下拉框旁边的箭头来更改排序顺序。除了这个警告之外,新的排序相当容易实现,并扩展了评级的有用性。
学分:https://www.fontis.com.au/blog/sort-products-rating