Фильтры для кастомных полей в Views API
Прислано: webtoucher
ср, 21/09/2011 - 08:16
Другие статьи по теме:
Пытаюсь вникнуть во все тонкости Views3 API в седьмом друпале. Вот наткнулся на небольшой тупичок и не знаю, как правильно сделать.
Например, есть некоторый тип контента с созданным полем field_class. Требуется написать для него простецкий фильтр.
Каким образом мне надо переписать вот это:
/** * Реализация хука hook_views_data(). */ function linker_views_data() { return array( 'node' => array( 'class' => array( 'group' => t('Custom'), 'title' => t('Class filter'), 'help' => t('Filter for classes'), 'filter' => array('handler' => 'linker_handler_class'), ), ), ); }
чтобы в linker_handler_class.inc заработало вот это:
function query() { $this->ensure_my_table(); $field = "$this->table_alias.$this->real_field"; $this->query->add_where(0, $field, 'B', '='); }
??
- webtoucher's blog
- Для комментирования войдите или зарегистрируйтесь
Опубликовано webtoucher в чт, 22/09/2011 - 08:03.
Собственно, сам и разобрался. Хотя толковых мануалов в данном направлении так и не нашёл.
Секрет был в том, что для таких фильтров лучше использовать другой хук:
/** * Реализация хука hook_views_data_alter(). */ function linker_views_data_alter(&$data) { $data['field_data_field_class']['class'] = array( // class - псевдоним для field_class 'real field' => 'field_class_value', // имя поля в таблице field_data_field_class 'title' => t('Class filter'), 'group' => t('Custom'), 'help' => t('Filter for classes'), 'filter' => array('handler' => 'linker_handler_filter_class'), ); }
Тогда
- Для комментирования войдите или зарегистрируйтесь

Комментарии