Сортировка Virtuemart по цене
- Joomla /
- Virtuemart
- 23.11.2012
- job
- 11414
Епта, обновил Virtuemart до 2.0.14. Опа, а как же восстановить все хаки и ничего не пропустить?!
И так, первая заметка по Virtuemart. На сегодня - сортировка Как писалось в превью новой версии блога, начинаю серию заметок по оптимизации магазина на Virtuemart. Хотя речь сегодня пойдет не совсем об оптимизации, а о усовершенствовании кода.
Задача стояла в следующем: По умолчанию магазин virtuemart имеет сортировку товара по цене, но при этом стоимость возрастает, а необходимо сортировать от большей к меньшей цене.
К сожалению разработчики Virtuemart не предусмотрели возможность выбора в настройках "сортировка" - возрастание, убывание (ASC,DESC) и по умолчанию всегда алфавитная сортировка. Т.к. Virtuemart обновляется довольно часто, особого желания делать возможность администрирования сегодняшнего хака нет желания, поэтому лезем напрямую в код.
Ну что ж, не беда!
Открываем сайт.ру/administrator/components/com_virtuemart/helpers/vmmodel.php ищем функцию checkFilterDir, приблизительно 220 строка
После
if(empty($filter_order_Dir) or !in_array($filter_order_Dir, $this->_validFilterDir)){ // vmdebug('checkFilterDir: programmer choosed invalid ordering direction '.$filter_order_Dir,$this->_validFilterDir); // vmTrace('checkFilterDir'); $filter_order_Dir = $this->_selectedOrderingDir; $view = JRequest::getWord('view'); $app = JFactory::getApplication(); $app->setUserState( 'com_virtuemart.'.$view.'.filter_order_Dir',$filter_order_Dir); } // vmdebug('checkFilterDir '.$filter_order_Dir);
Вставляем код сортировки
if ( $this->_selectedOrdering == 'product_price' ) { if ($filter_order_Dir == 'ASC') { $filter_order_Dir = 'DESC'; } else { $filter_order_Dir = 'ASC'; } }
Собственно вот и все. Код определяет если выбрана сортировка по цене то он подменяет значения на противоположные.
Проверялось на Virtuemart 2.0.12-2.0.14
Я лентяй! Сообщите кто нибудь разработчикам, что бы расширили функционал, а я пока поваляюсь на диване попивая глинтвейн и предвкушая новый зимний сезон. Борд готов, жду снежных гор. ))))
P.S. Спасибо разработчикам наконец то сортировка virtuemart включена в настройки магазина.