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

Шаг 1: Создание вьюхи

Для начала нам необходимо создать новую вьюху. Для этого выполните следующие действия:

  1. Зайдите в раздел «Структура — Вьюхи» в административной панели Drupal.
  2. Нажмите на кнопку «Добавить новую вьюху».
  3. Заполните необходимые поля, такие как «Название» и «Машиночитаемое имя».
  4. Выберите тип содержимого, к которому будут применяться фильтры.
  5. Установите необходимые фильтры. В данном случае нам понадобится фильтр «Дата окончания акции».
<pre>
<code>
function mymodule_views_pre_render(\Drupal\views\ViewExecutable $view) {
  if ($view->id() == 'my_view_id') {
    $results = &$view->result;
  
    foreach ($results as $key => $result) {
      $end_date = $result->_entity->get('field_end_date')->value;
  
      // Compare the end date with the current date
      if ($end_date < time()) {
        unset($results[$key]);
      }
    }
  }
}
</code>
</pre>

Шаг 2: Настройка вывода

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

  1. Перейдите на вкладку "Показ" в настройках вьюхи.
  2. Выберите "Список" или "Таблица" в качестве формата вывода.
  3. Установите необходимые поля для отображения и настройте их отображение.
  4. Нажмите на кнопку "Применить" для сохранения настроек.

Дополнительные вопросы и ответы:

1. Как вывести только активные акции на текущую дату?

Для того чтобы вывести только активные акции на текущую дату, вам понадобится настроить фильтр вьюхи:

<pre>
<code>
\[php\]
  $current_date = date('Y-m-d');
  
  // Add a filter to show only active promotions
  $view->setExposedInput([
    'field_end_date_value_min' => $current_date,
    'field_end_date_value_max' => $current_date,
  ]);
\[\/php\]
</code>
</pre>

2. Как вывести материалы только определенного типа во вьюхе?

Для того чтобы вывести материалы только определенного типа во вьюхе, вам понадобится настроить фильтр по типу содержимого:

<pre>
<code>
\[php\]
  // Add a filter to show only specific content type
  $view->setExposedInput([
    'type' => 'article',
  ]);
\[\/php\]
</code>
</pre>

3. Как отсортировать материалы по дате создания во вьюхе?

Для того чтобы отсортировать материалы по дате создания во вьюхе, вам понадобится настроить сортировку:

<pre>
<code>
\[php\]
  // Sort the results by creation date in descending order
  $view->setExposedInput([
    'sort_by' => 'created',
    'sort_order' => 'DESC',
  ]);
\[\/php\]
</code>
</pre>