2.9. Views - конструктор вывода материала. Новостная лента на Drupal 8.

Модуль Views один из самых популярных модулей. Он позволяет выводить какие угодно данные Новости, Статьи, Комментарии, Термины таксономии в виде блоков, страниц, лент RSS, CSV-файлов, XML-файлов, да и во многих других форматах. И вот наконец-то в Drupal 8 Views в ядре! Теперь его не нужно устанавливать, Views идет в стандартной сборке.

Давайте включим Views и начнем выводить данные.

Создадим тип материала Новость.

друпал 8 новость

 

Теперь мы можем создавать новости на сайте.

Добавим картинку к типу материалу Новость. Для этого зайдем во вкладку Управление полями. Можно использовать уже существующее поле field_image, которое уже используется в Статьях.

 

Добавляем поле

 

Создадим несколько новостей, чтобы было что выводить через Views:

Добавляем материал

 

Теперь мы можем создать наш первый View (в дальнейшем буду писать вью). Заходим в Меню — Структура — Views (возможно у вас слова Views будет переведен как «просмотры», «представления», «виды» или по другому):

 

меню структура

 

На странице Views мы создаем новый вью:

 

views создание

 

Давайте теперь по порядку заполнять форму создания нового вью. Сначала пишем имя вью, также можно указать и машинное имя вью. Машинное имя пишется только латиницей с использованием символа нижнего подчеркивания. Пишем имя вью Новости, выбираем что будем выводить материалы типа Новости. Также оставим чтобы выводились Newest first (сначала новые):

 

Views добавление вью

Дальше выбираем создание страницы, ставим галочку. Дальше вводим заголовок новой страницы Новости. Дальше вводим адрес по которому будет страница новостей, я написал novosti, вы можете написать new, news или другой путь как вам нравится. Выводить будем стандартным образом Unformatted list (то есть дивами, тегами div), выводить будем тизерами (кратким содержимым нод, об этом мы говорили в прошлых уроках). Выводим with links (allow users to add comments, etc.) , то есть с ссылками на добавление комментариев и читать далее, но без комментариев (without comments).

Если новостей будет много, больше 10, скажем 14 или 15, тогда нам понадобится навигатор по страниц, у нас по умолчанию стоит выводить на странице по 10 штук, а остальные новости мы можем посмотреть пройдя по ссылкам навигатора. Так что настройки навигатора оставим как есть Use a pager.

 

вьюс использование pager

 

Дальше мы можем выбрать в каком меню выводить ссылку на нашу новую страницу новостей. Я выбрал main navigation, это главное меню в шапке сайта. И вводим название ссылки Новости. Все! Сохраняем.

views сохранение

 

После этого у нас появится страница дальнейшего редактирования вью. Здесь мы можем уже ничего не редактировать и выйти посмотреть нашу страницу новостей.

 

views новости

 

 

Новости на то и новости, что они должны постоянно быть на виду, поэтому помимо страницы, давайте сделаем и блок новостей с 3 последними новостями и ссылкой на страницу новостей.

Создадим еще один вью. Назовем его Новости блок, выберем вывод новостей.

 

views блок

 

В этот раз мы будем выводить не страницу, а блок. Выводить будем не форматированным списком (unformatted list), выводить будем поля (fields), по 3 новости. Теперь сохраняем наш вью. В блоке мы не будем использовать pager.

Теперь мы можем продолжить редактировать наш вью.

Views поля

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

 

views добавляем поля

 

Теперь нужно найти нужное поле, а именно дату публикации (post date). Для этого пишем в поиске полей post (или дата публикации, если поле переведено) и ставим галочку, чтобы вывести поле. После этого сохраняем изменения.

 

Views поле posted

Дальше нужно выставить формат даты, также я снял флажок с вывода лейбла:

drupal views убираем label

Дата публикации это не дата когда материал был создан, вы можете вывести дату создания отдельно.

Дата публикации это время когда материал был сохранен с галочкой «опубликовано».

Комментарии

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

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

В 8 друпале немного по

В 8 друпале немного по другому сделали с javascript'ом, вроде бы drupal_add_js() убирают и будут добавляться javascript файлы через свойство #attached и библиотеки.

В файле seven.theme темы seven можете посмотреть:

/**
 * @file
 * Functions to support theming in the Seven theme.
 */

use Drupal\Core\Template\RenderWrapper;

/**
 * Implements hook_library_info().
 */
function seven_library_info() {
  $path = drupal_get_path('theme', 'seven');

  $libraries['install-page'] = array(
    'version' => VERSION,
    'js' => array(
      $path . '/js/mobile.install.js' => array(
        'group' => JS_THEME,
      ),
    ),
    'css' => array(
      $path . '/install-page.css' => array(
        'group' => CSS_AGGREGATE_THEME,
      ),
    ),
  );

  return $libraries;
}

Я так и поняла, что

Я так и поняла, что подключать нужно через библиотеки. У меня получилось подключить с помощью hook_library_info + drupal_add_library. Я разместила папку js с js-файлом в корне своего модуля (там же, где и инфо.юмл файл). Но правильно ли это? Может нужно размещать по тому же пути, что и контроллер, форму и т.д. (my_module/lib/Drupal/my_module/js)?

Здравствуйте.

Здравствуйте.

Подскажите я создал представление, которое представляет из себя раскрытие фильтры таксономии для пользователя. Как мне сделать, что бы пред этими фильтрами появился абзац текста для пользователей. Необходимо, что бы в нем было разъяснение пользователям как пользоваться фильтрами и гиперссылки в тексте для перехода на ноды описания терминов?

Текст можно добавить через

Текст можно добавить через hook_form_alter(), добавить элемент #markup:
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7.x/#markup 

Вот здесь есть описание как работать с hook_form_alter():
http://drupalbook.ru/comment/3526
http://drupalbook.ru/comment/2258
 

Еще у меня к вам такой вопрос

Еще у меня к вам такой вопрос. Если в представлениии имеется фильтр, по которому пользователь указывая теги может сделать выборку по терминам таксономии. Теги находятся в древовидной иерархии, то по логике выбирая вехний уровень иерархии, должни выбираться и все нижние ему соподчиненные, но этого не происходит и фильтр срабатывает только если руками накликать все соподчиненные теги. Можно ли это как то сделать автомотически? Тоесть выбирая ствол, автоматически выбирались и все ветки?