Views

Создание DisplayExtender плагина для Views

Пример создания простейшего Display Extender плагина для Views.

Шаг 1. Создаем класс плагина в src/Plugin/views/display_extender/ExampleDisplayExtender.php:

<?php

namespace Drupal\MODULENAME\Plugin\views\display_extender;

use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Plugin\views\display_extender\DisplayExtenderPluginBase;

/**
 * Example display extender plugin.
 *
 * @ViewsDisplayExtender(
 *   id = "example_display_extender",
 *   title = @Translation("Example display extender"),
 *   help = @Translation("Example display extender description."),
 *   no_ui =...
Benya

JOIN таблицы в своем views field handler-е

Пример JOIN-а таблицы в своем views field handler:

/**
  * Called to add the field to a query.
  */
public function query() {
  $this->ensure_my_table();

  $join = new views_join();
  $join->definition = array(
    'table' => 'variable_store',
    'field' => 'name',
    'left_table' => $this->table_alias,
    'left_field' => 'name',
    'type' => 'INNER',
  );
  $join->construct();
  $join->adjusted = TRUE;

  // Присоединяем таблицу 'variable_store' по колонке 'name'.
  $this->table_alias = $this->query->add_table('variable_store', NULL, $join);

  // Добавляем к запросу...
Benya

Как программно изменить тип пейджера во Views

Пример кода, который позволяет программно изменить тип пейджера во Views:

/**
 * Implements hook_views_pre_build().
 */
function module_name_views_pre_build(&$view) {
  if ($view->name == 'view_name' && $view->current_display == 'display_name') {
    $pager = $view->display['display_name']->handler->get_option('pager');
    $pager['type'] = 'mini';
    $view->display['display_name']->handler->set_option('pager', $pager);
  }
}
Benya

Как связать сущность с модулем Views в Drupal

В предыдущем уроке я рассказал как создать свою сущность. Сегодня я покажу, как связать сущность с модулем Views. Не забываем скачать его, если еще не сделали этого. Для решения данной задачи существует два способа и сейчас мы их рассмотрим.

Способ 1

Сразу отмечу, что данный способ подходит только если сущность была создана с помощью модуля Entity API. В хуке hook_entity_info() для нашей сущности устанавливаем views controller class:

'views controller class' => 'EntityDefaultViewsController'

Хук стал выглядеть следующим образом:

/**
 * Implements hook_entity_info().
 */
function...
Benya

Как создать operation для Views Bulk Operations с помощью Rules

Сегодня в очередной раз пришлось поработать с модулем Views Bulk Operations (VBO). Суть задачи состояла в том, что необходимо было изменить стандартную страницу администрирования пользователей, расположенную по адресу "admin/people". Поставленную задачу я решил реализовывать с помощью модулей Views и Views Bulk Operations. И вроде бы все отлично получалось, но вот незадача, по умолчанию Views Bulk Operations предоставляет меньше операций над пользователями, чем доступно на стандартной странице.

В качестве примера приведу операцию Unblock the selected users, в модуле Views Bulk...

Benya

Как использовать модуль Views с модулем Panels

Модуль Views очень мощный инструмент, используемый при создании сайтов на Drupal. При связке с модулем Panels он обретает дополнительную гибкость, которой так не хватало. Например, можно без проблем вывести один вьюз несколько раз на одной странице с разными настройками и контекстными фильтрами, при этом не приходится тратить время на то, чтобы лезть в код.

Для сегодняшнего урока я поставлю задачу:
Имеется два типа материала (новости и статьи), они связаны друг с другом с помощью модуля References. Необходимо при просмотре новости вывести в левой колонке термины, которые относятся...

Benya