如何在Magento 1.7中将评级添加到排序列表中


How to add Rating to sort list in Magento 1.7

正在寻找在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