我正在类别产品列表的选择框中尝试获得畅销商品选项。
我已经扩展了
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;
}
}
之后,我在选择框中获得了畅销书选项。 但是,我不知道如何让它发挥作用。 任何帮助将不胜感激。
答案 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')->__()
进行翻译。