Здравствуйте.
Модуль DrupalIt позволяет создать Digg-подобный сайт в несколько кликов. Если бы не одно но: требуется возможность для того, чтобы на главную отправлялись только материалы с достаточным количеством голосов.
В комлекте с модулем есть фильтр для Views, но он проверяет только лишь наличие голосов, а не их количество. Одного голоса (при том, что автор сам может его отдать своему материалу) явно маловато.
Прилагаю часть кода DrupalIt, где описываются фильры и критерии сортировки.
Буду признателен, если поможете решить задачу или отправите к статье, разъясняющей на русском как это дело устроено.
function drupalit_views_tables() {
...
'filters' => array(
'nid' => array(
'name' => t('Drupalit: Has drupalit votes'),
'operator' => array('=' => t('Exists')),
'list' => 'views_handler_operator_yesno',
'list-type' => 'select',
'handler' => '_drupalit_views_handler_votes_exist',
'help' => t('Filter whether the node has drupalit votes or not.'),
),
),
...
}
...
function _drupalit_views_handler_votes_exist($op, $filter, $filterdata, &$query) {
switch ($op) {
case 'handler':
$query->ensure_table('drupalit_votes');
if ($filter['value']) {
$query->set_distinct();
$table_data = _views_get_tables();
$joins = array('type' => 'inner');
$joins = array_merge($joins, $table_data['drupalit_votes']['join']);
$query->joins['drupalit_votes'][1] = $joins;
}
else {
$query->add_where('ISNULL(drupalit_votes.id)');
}
}
}
Комментарии
Аналогичная проблема. Хотелось бы решить.