Magento类别产品列表按畅销书选项排序

时间:2011-06-21 08:08:17

标签: php magento

我正在类别产品列表的选择框中尝试获得畅销商品选项。

我已经扩展了

class Mymodule_Catalog_Block_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar
{

    protected function _construct()
    {
        parent::_construct();
    }

    public function getAvailableOrders()
    {
        $this->_availableOrder['bestseller'] = $this->__('Best Seller');
        return $this->_availableOrder;
    }


}

之后,我在选择框中获得了畅销书选项。 但是,我不知道如何让它发挥作用。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你也需要扩展setCollection():

public function getAvailableOrders()
{
    $this->_availableOrder['bestseller'] = $this->__('Best Seller');
    return $this->_availableOrder;
}


public function setCollection($collection)
{
    // ...
    if ($this->getCurrentOrder()) {
        if ($this->getCurrentOrder() == 'bestseller') {
            // add needed joins to collection here to get 'bestseller' column in collection
        }
        $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
    }
    return $this;
}
是的,你知道$this->__('Best Seller');是不好的风格吗?如您所知,$this->__()是当前模块数据助手__()方法的快捷方式。但是如果有人将你的块扩展到另一个模块 - 那个模块数据助手将用于将'Best Seller'字符串翻译成其他语言。很明显,在他的模块中,他可能没有“畅销书”字符串的翻译。这就是为什么你必须始终使用Mage::helper('your_module/data')->__()进行翻译。