Фильтры для кастомных полей в 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 в чт, 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'),
	);   
}

Тогда


Ссылки партнёров