Процесс написания своего style плагина для Views 3:
1. Реализуем хук hook_views_api(), в котором возвращаем версию Views API:
/**
* Implements hook_views_api()
*/
function views_style_example_views_api() {
return array('api' => 3);
}
2. В файле modulename.views.inc реализуем хук hook_views_plugins(), в котором возвращаем информацию о плагине:
/**
* Implementation of hook_views_plugins().
*/
function views_style_example_views_plugins() {
return array(
'module' => 'views_style_example',
'style' => array(
// Системное название стиля.
'example_style' => array(
// Человекопонятное название стиля.
'title' => t('Example style'),
// Имя класса. Классы именуются по шаблону [modulename]_plugin_style_[stylename].
'handler' => 'views_style_example_plugin_style_example_style',
// Путь к папке с файлом класса. Необязательно, если файл лежит в корне модуля.
'path' => drupal_get_path('module', 'views_style_example'),
// Имя хука темизации для вывода контента.
// Необязательно, если переопределён метод views_plugin_style::render().
'theme' => 'views_style_example',
// Список js файлов, которые необходимо подключить при выводе представления.
// Пути указываются относительно корня Drupal. Необязательно.
'js' => array(),
// Тип плагина.
'type' => 'normal',
// TRUE если для этого стиля можно выбирать row plugin (Content, Fields и т.д.).
'uses row plugin' => FALSE,
// TRUE если можно использовать поля.
'uses fields' => TRUE,
// TRUE если у стиля есть настройки.
'uses options' => TRUE,
// TRUE если строки можно группировать.
'uses grouping' => FALSE,
// TRUE если нужно рендерить представление, даже при отсутствии данных.
'even empty' => FALSE,
),
),
);
}
3. В файле с именем, указанным в параметре handler и расширением .inc, реализуем логику хэндлера:
class views_style_example_plugin_style_example_style extends views_plugin_style {
/**
* Дефолтные настройки.
*/
function option_definition() {
$options = parent::option_definition();
$options['example_option'] = array('default' => '');
return $options;
}
/**
* Форма настроек.
*/
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
$form['example_option'] = array(
'#title' => t('Example option'),
'#type' => 'textfield',
'#default_value' => $this->options['example_option'],
);
}
}
4. Добавляем в файл .info информацию о новом хэндлере:
files[] = views_style_example_plugin_style_example_style.inc
5. Создаём файл шаблона с именем, указанным в параметр theme и расширением .tpl.php (нижние подчёркивания заменяются на тире), и выводим в нём данные задуманным способом:
<?php dsm($options['example_option'], 'example_option'); ?>
<?php dsm($rows, 'raw rows'); ?>
<?php dsm($view->style_plugin->render_fields($rows), 'rendered rows'); ?>
Написанное актуально для
Views 3