Написание своего Style plugin для Views 3

Процесс написания своего 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
Теги:
views api
Добавлено: 30 Июля 2018 08:00:21 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...