Вы здесь

DrupalIt: нужна помощь в создании фильтра для Views

Проект: 

Здравствуйте.

Модуль 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)');
      }
  }
}

Комментарии

Изображение пользователя Trimbombom

Аналогичная проблема. Хотелось бы решить.