Список 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; } } 

После этого я получил опцию Best Seller в поле выбора. Но я не знаю, как заставить его работать. Любая помощь будет оценена по достоинству.

Вам также нужно расширить 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->__() является ярлыком для текущего метода хелпера данных __ (). Но если кто-то расширит ваш блок в другом модуле – этот хелпер данных модуля будет использован для перевода строки «Лучший продавец» на другие языки. Очевидно, что в его модуле у него может не быть перевода для строки «Лучший продавец». Вот почему вы всегда должны использовать Mage::helper('your_module/data')->__() для перевода.