Создание кастомной сортировки во вьюс
В модуле
/**
* Реализация hook_views_api()
*/
function mymodule_views_api() {
return array('api' => 3);
}
Создаем файл с именем mymodule.views.inc в папке с модулем. Внутри файла
/**
* Реализация hook_views_data()
*/
function mymodule_views_data() {
return array(
'views' => array(
'discount' => array(
'title' => 'Сортировка по скидке',
'group' => t('Global'),
'help' => 'Описание сортировки',
'sort' => array(
'handler' => 'mymodule_handler_sort_discount',
),
),
//.....
),
);
}
Создаем файл с хендлером mymodule_handler_sort_discount.inc внутри которого создаем обработчик наследованный от класса views_handler_sort
class mymodule_handler_sort_discount extends views_handler_sort {
function query() {
$this->ensure_my_table();
// делаем join таблиц, нужных для сортировки
$this->query->add_table('table1');
$this->query->add_table('table2');
// добавляем свое хитрое поле, по которому будет осуществляться сортировка
$this->query->add_orderby(NULL, 'field1 - field2', $this->options['order'], 'formula_result');
}
}
В файле mymodule.info подключаем файл с хендлером
files[] = mymodule_handler_sort_discount.inc
Усё
- Log in to post comments