Здравствуйте!
Первый раз залез так глубоко в views.
Есть свой модуль и своя таблица в которую заносятся данные голосования за материал пользователями.
Главные поля: nid_node и points.
nid_node не уникальный столбец и nid_ы могут повторяться.
Хочу сделать сортировку виевса по поинтам (столбец points), но чтобы они были изначально просуммированы.
Что делаю:
В своем модуле добавил поддержку своей таблицы через hook_views_api .. hook_views_data().
В hook_views_data ссылаюсь на свой класс mymodule_handler_sort_customsort:
<?php
#....
$data['mymodule_user_points']['points'] = array(
'title' => 'Поинты',
'help' => 'Поинты за ноду',
'group' => t('Custom'),
'sort' => array('handler' => 'mymodule_handler_sort_customsort'),
);
#...
?>
В файле скопировал кусок из базового класса, а как изменить под свой запрос не знаю.
<?php
class mymodule_handler_sort_customsort extends views_handler_sort {
function query() {
$this->ensure_my_table();
// Add the field.
$this->query->add_orderby($this->table_alias, $this->real_field, $this->options['order']);
}
}
?>
Может кто подскажет как переделать или где посмотреть?
P.S. Нашел такие варианты $this->query->add_where() и $this->query->add_where_expression() тут. А какие еще есть запросы, где можно найти по ним информацию для себя?
Комментарии
Фу-ты, ну-ты, ножки гнуты.
<?php
$this->query->add_orderby($this->table_alias, $this->real_field, $this->options['order'], NULL, array('function' => 'sum'));
?>
Это в функции add_orderby вызывается функция add_field с передачей ей параметров.