Drupal → Программно удалить отдельные строки из результатов Views

17.07.2015

Пример удаления двух строк из представления myview дисплея page:

Drupal 8+

// MODULENAME.module

use Drupal\views\ResultRow;
use Drupal\views\ViewExecutable;

/**
 * Implements hook_views_post_execute().
 */
function MODULENAME_views_post_execute(ViewExecutable $view): void {
  if ($view->id() == 'myview' && $view->current_display == 'page') {
    unset($view->result[2]);
    unset($view->result[5]);
  }
}

Drupal 7

// MODULENAME.module

/**
 * Implements hook_views_post_execute().
 */
function MODULENAME_views_post_execute(&$view) {
  if ($view->name == 'myview' && $view->current_display == 'page') {
    unset($view->result[2]);
    unset($view->result[5]);
  }
}

Вместо hook_views_post_execute() можно использовать hook_views_pre_render() если какие-то данные доступны только там.

Написанное актуально для
Drupal 7, Drupal 8+
Похожие записи

Комментарии

А пейджер как себя будет чувствовать?

Гость
20.07.2015, 14:48

Pager будет чувствовать себя печально, потому что меняются данные только текущей страницы.

пейджер ориентируется на $view->total_rows, что творится в $view->result его не беспокоит

Гость
20.07.2015, 15:14

Да и в результате пейджер после обработки таким хуком ведет на пустую страницу.

Добавить комментарий