Drupal views: Access to this page has been denied.

8.9. Темизация Views Drupal 8. Создаем owl carousel слайдшоу с thumbnails.

levmyshkin 6 августа 2019 в 13:37

Очень часто нас не устраивает шаблон Views, поэтому мы можем переопределить шаблоны для Views. К сожалению пока нет UI для поиска нужного шаблона во Views, но мы можем использовать паттерны для переопределения шаблонов.

Подробнее про темизацию Views смотрите в этом видео:

Подробнее о паттернах в этой статье:

8.6. Работа с шаблонами в Drupal 8. Какие есть шаблоны в ядре Drupal 8.

В частности нас интересует вот это:

Ниже возможные имена шаблонов для переопределения.
 
Имя вьюса — foobar (машинное имя)
Формат отображения — unformatted (неформатированный список, добавить возможные варианты)
Стиль отображения записи — fields
Имя дисплея — page
 
views-view—foobar—page. html.twig
views-view—page.html.twig

views-view—foobar.html.twig
views-view.html.twig
 
views-view-unformatted—foobar—page.html.twig
views-view-unformatted—page.html.twig
views-view-unformatted—foobar.html.twig
views-view-unformatted.html.twig
 
views-view-fields—foobar—page.html.twig
views-view-fields—page.html.twig
views-view-fields—foobar.html.twig
views-view-fields.html.twig

Дело в том что у плагина Owl Carousel 1.x нет возможности выводить thumbnail’ы к галереи. Поэтому мы будем использовать Owl Carousel версии 2.x, там есть поддержка thumbnail’ов. Если вы не хотите разбираться в переопределение шаблонов, написание CSS, Javascript кода, то можете просто поставить модуль Views Slideshow:

https://www.drupal.org/project/views_slideshow

Или модуль Flex Slider:

https://www.drupal.org/project/flexslider

На них вы сможете быстро настроить слайдшоу без знания CSS, jQuery.

Мы же будем практиковаться в переопределение шаблонов Views и подключение jQuery библиотек.

Для начала скачаем и подключим библиотеку Owl Carousel 2.x:

https://github.com/OwlCarousel2/OwlCarousel2

Возможно вы нашли версию Owl Carousel 1.x:

https://github.com/OwlFonk/OwlCarousel

Она нам не подойдет, в ней нет поддержки thumbnail’ов, для нее нужно писать дополнительный код.

Скопируем папку owl-carousel (где лежит файл owl.carousel.min.js) в папку с нашей темой, теперь давайте подключим файлы карусели css и js. В файл .libraries.yml темы мы добавляем следующие строчки:

global-styling:
  version: 1.x
  css:
    theme:
      owl-carousel/owl.carousel.css: {}
      owl-carousel/owl.theme.css: {}    
      owl-carousel/owl.transitions.css: {}
      css/style.css: {}
      css/print.css: { media: print }
  js:
    js/custom.js: {}
    owl-carousel/owl.carousel.min.js: {}
  dependencies:

    — core/jquery

Я не стал переносить js файлы в папке /js, css в папку /css, но вы можете это сделать, не забудьте тогда поправить пути в css файлах на картинки, которые я так полагаю вы положили в папку images.

Чтобы изменения применились нужно почистить кеш.

Теперь давайте создадим тип материала галерея и добавим в него поле изображение.

Создаем новый view, где выводим одно поле изображение из нового типа материала.

Обзор модуля Views в Drupal

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

Первое на что стоит обратить внимание это размер модуля оба модуля Views, Views UI занимают 808 и 3.6 мегабайт это примерно как 4 тома романа «Война и Мир». Просто огромный модуль, но вам не нужно знать как он работает, чтобы использовать его. Во Views есть довольно большой интерфейс, с которым при желение можно разобраться без знания программирования.

В меню друпала Views находится в Структура — Представления (Views):

Как видите уже из коробки Views выводит главную страницу, новые комментарии, пользователей которые зашли недавно на сайт и многие другие списки.

Давайте зайдем Views для главной страницы, для этого нажмите кнопку Правка в строке вьюса Frontpage (Главная). Не пугайтесь обилию настроек, со временем мы разберем каждую из них.

 Ниже я буду приводить описание каждого из блоков и ссылку на соответствующую статью описывающий этот блок.

В первую очередь нужно обратить внимание на что выводить  Views:

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

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

Ниже идет блок формат и здесь уже начинается интересное. Views можно расширять другими модулями и тем самым расширять возможности выводить информацию. Например если вы поставите модуль Views Slideshow, то можно будет выводить слайдеры:

https://www.drupal.org/project/views_slideshow

Если добавить модуль Calendar,  то будет выводиться календарь:

https://www.drupal.org/project/calendar

Подобных модулей очень много, вы без труда сможете найти то что нужно пользуясь поиском google и вбивая Drupal views (название того что хотите вывести)

По умолчанию мы можем выводить блоками (Неформатированный список), HTML списком (теги <ul>, <li>), Сетка (таблица без заголовков), Таблица (с заголовками и возможностью сортировки).

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

Поля

В полях мы можем выбирать поля из нод, например заголовок и содержимое. Мы можем обрабатывать вывод полей, группировать их здесь.

Критерии фильтрации

Нам не всегда нужно выводить все ноды, все комментарии, иногда нужно вывести только новости за неделю, только пользователей с ролью Администратор, только свежие комментарии. Для этого мы можем использовать фильтры.

Критерии сортировки

После того как мы отфильтровали нужные нам данные, неплохо бы еще их и отсортировать. Например, выводить новые новости сверху.

Настройки страницы

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

Шапка и Подвал

Позволяет выводить данные вверху или снизу вьюса. Причем мы можем не ограничиваться простым HTML, но и вставлять поля из вью или даже вставить другой вью, в наш вью.

Поведение при отсутствие результатов

Функционал этого блока такой же как и у Шапки, только здесь он срабатывает когда вью не получает на вывод никаких данных.

Постраничный навигатор

Пагинатор нужем нам когда списки очень большие и нам нужно их разбить на чати. Например у нас 100 новостей и было бы неплохо выводить их по 10 штук на странице.

Язык

Позволяет выбрать язык для вью. Обычно это используется на мультиязычных сайтах.

Начало работы с Views в Drupal

Не забудьте подписаться на наш канал YouTube, чтобы быть в курсе последних новостей.

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

В этом уроке мы объясним, что такое представления Drupal и как их создать. Мы также продемонстрируем некоторые простые настройки, такие как параметры страницы, фильтры, сортировка, параметры отображения, открытые фильтры, разрешения, создание блока представления и создание страницы администрирования с использованием представлений. К концу этого руководства вы будете знать, как создать и настроить Drupal View.

Drupal Views Series

Содержание

Начало работы

Начиная с Drupal 8, Views поставляется вместе с ядром Drupal, поэтому загружать ничего не нужно. Если вы установили Drupal, используя стандартный профиль установки, то он уже будет установлен.

Перейдите к расширению и убедитесь, что установлены Views и Views UI.

Как создать представление

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

Во-первых, убедитесь, что на вашем веб-сайте достаточно статей, и убедитесь, что вы вошли в систему как администратор. Теперь давайте создадим представление.

1. Перейдите в Структура -> Представления (admin/structure/views) и нажмите «Добавить представление».

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

— рис. 1

Вот и все! Вы успешно создали свое представление. Если вы перейдете к « /latest-articles », вы увидите результат просмотра.

Теперь мы объясним основные части экрана конфигурации Views. Мы выделили различные разделы экрана конфигурации представлений на снимке экрана ниже и пометили каждый раздел номером для удобства поиска и объяснения.

Экран конфигурации представлений — рис. 2

Метка 1 — Как следует из названия, это название представления. Это текст, который будет отображаться в качестве заголовка страницы /latest-articles  .

Метка 2 — определяет стиль вывода представления. Темы внешнего интерфейса могут использовать это для стилизации вывода, переопределяя шаблоны по умолчанию, предоставляемые представлениями. Существуют также дополнительные модули, которые могут расширять и предоставлять дополнительные параметры, такие как просмотры слайд-шоу.

Метка 3 — определяет, как должен отображаться результат каждой строки представления. В настоящее время он установлен на «Контент», что позволяет нам выбирать различные режимы просмотра, такие как Тизер или Полный контент. Если вы хотите показывать только определенные поля ваших статей, вы можете изменить его с «Содержание» на «Поля». Затем вы можете выбрать поля, которые хотите отобразить на экране конфигурации представлений. Метка 4.

Метка 4 . В зависимости от того, какой стиль формата вы выбрали выше, этот раздел позволит вам выбрать конкретные поля для отображения.

Ярлык 5 . В этом разделе можно определить критерии фильтрации результатов просмотра. В настоящее время мы показываем только опубликованные статьи.

Метка 6 — Как следует из названия, мы можем определить, как сортировать результаты просмотра. Вы также можете отсортировать поля типа контента, добавив их сюда.

Метка 7 — это путь к вашей странице просмотра.

Ярлык 8 — Если вы хотите добавить страницу просмотра в любое из меню Drupal, вы можете сделать это здесь.

Ярлык 9 — в этом разделе вы можете определить конкретные разрешения для тех, кому разрешен доступ к вашему представлению.

Настройка вашего представления

Допустим, мы хотим настроить наше текущее представление для отображения макета таблицы только с полями «Заголовок» и «Тело» типа контента «Статья». Но мы также хотели позволить пользователю вводить текстовую строку, которая будет фильтровать результаты по заголовку. Мы обратимся к маркировке на рисунке 2, чтобы помочь с нашим объяснением.

1. Обновите формат (метка 2 экрана конфигурации Views). Установите его в таблице. Вы можете оставить настройки таблицы по умолчанию.

2. Выполняя шаг 1, вы можете заметить, что представления автоматически добавили поле «Заголовок» в раздел «Поля» (метка 4). Давайте также добавим поле Body.

Нажмите «Добавить» в разделе «Поле»:


Во всплывающем окне «Добавить поля» найдите «тело» и нажмите «Добавить и настроить поля».

В поле «Настроить поле: основной текст» вы можете оставить все значения по умолчанию и просто нажать «Применить».

3. Теперь давайте продемонстрируем, как разрешить пользователю вводить текст в поле, которое будет автоматически выполнять поиск по полю Заголовок. В Drupal Views это называется «открытый фильтр».

Чтобы создать открытый фильтр, нажмите «Добавить» в разделе «Критерии фильтра» (метка 5).

Затем на следующем экране найдите заголовок и нажмите «Добавить и настроить критерии фильтра».

На следующем экране установите флажок «Открыть этот фильтр для посетителей, чтобы они могли его изменить». Дополнительные параметры станут доступны автоматически. Обязательно установите для оператора значение «Содержит», а затем нажмите «Применить».

Совет: «Содержит» означает, что представления будут использовать строку, введенную пользователем, и выполнять поиск SQL в базе данных для любой строки, содержащей символы, введенные в указанном порядке, т. е. « ...LIKE %usertext%... ” в SQL.

4. Теперь, когда мы установили формат таблицы, поля заголовка/текста и открытые фильтры, пришло время сохранить представление. Этот шаг можно легко пропустить, поэтому не забывайте об этом!

Теперь, если вы просматриваете реальную страницу View, вывод View должен выглядеть следующим образом:

Создать блок с помощью Views

Блок View — это обычный блок Drupal, за исключением того, что он происходит из Views.

В демонстрационных целях предположим, что мы хотим создать блочную версию созданной выше страницы просмотра.

Это можно сделать двумя способами. Вы можете либо нажать «+Добавить», либо нажать «Дублировать как блок». Оба варианта показаны ниже:

После того, как вы это сделаете, вы заметите, что теперь у вас есть «Настройки блока» вместо «Настройки страницы». Это имеет смысл, поскольку сейчас мы имеем дело с блоком Drupal.

Сохраните свое представление. После сохранения представления автоматически создается блок Drupal, который будет указан вместе со всеми другими блоками Drupal.

Разместите блок в любом месте вашего сайта Drupal, как обычно вы размещаете любой блок Drupal в регионе. Вот короткое видео о том, как разместить блок Drupal в регионе. Мы разместили наш на левой боковой панели, и он выглядит так:

Вы заметите, что наш открытый фильтр не отображается в нашем Блоке. Есть один дополнительный шаг, если вы хотите, чтобы открытые фильтры работали в блоках просмотра. На экране конфигурации представления в разделе «Дополнительно» установите для параметра «Использовать AJAX» значение «да» и сохраните представление. Вот как это выглядит:

Теперь наш блок представлений имеет открытый фильтр, который выглядит следующим образом:

Создать страницу администратора с помощью представлений

Допустим, мы хотели использовать страницу просмотра, созданную выше, но поместили ее в пользовательский интерфейс администратора и доступ только для человека с повышенными разрешениями (другими словами, не анонимных пользователей). Это скриншот конечного результата, которого мы пытаемся достичь:

Для этого нам нужно отредактировать несколько вещей в нашем существующем представлении. Все изменения, которые мы должны внести, будут в настройках страницы нашего экрана конфигурации просмотра (см. рис. 2). Нам нужно обновить три вещи:

  1. Метка 7 — Обновить путь
  2. Метка 8 — Обновить меню
  3. Метка 9 — Обновить разрешение на доступ

1. Обновление пути. Путь к « admin/content/latest-articles ».

2. Обновите меню: на экране конфигурации представлений обновите меню. Нажав «Нет меню», вы перейдете к экрану конфигурации ввода пункта меню. На этом экране выберите вкладку «Меню» для «Тип», введите заголовок ссылки «Меню» и установите «Родитель» на «<Администрирование>», а затем нажмите «Применить».


3. Обновите доступ: мы можем сделать это либо путем определения разрешения, либо путем определения роли. В этом уроке мы определим разрешение. На экране конфигурации представлений нажмите «Просмотреть опубликованный контент» и измените его на «Доступ к странице обзора контента».

4. Сохраните просмотр!

Теперь, если вы перейдете на « admin/content/latest-articles » как авторизованный пользователь, вы должны увидеть свою страницу просмотра. Если вы попытаетесь зайти на эту же страницу в качестве анонимного пользователя, вы должны получить отказ в доступе.

Резюме

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

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

Что такое представление в Drupal? Как они работают?

В Drupal представление представляет собой список информации. Это может быть список узлов, пользователей, комментариев, терминов таксономии, файлов и т. д. Представление сканирует ваш веб-сайт, используя любые указанные вами критерии, и представляет результаты в выбранном вами формате. Примеры форматов включают таблицу HTML, RSS-канал, документ PDF, документ CSV, интерактивную карту, слайд-шоу изображений или представление JSON для использования в качестве конечной точки REST. Один и тот же контент может быть представлен в нескольких форматах одновременно. Например, вы можете представить таблицу с информацией о пользователе и на той же странице ссылку для загрузки данных в формате CSV.

Давайте продолжим наше путешествие, чтобы лучше понять концепции Drupal. Как вы могли уже заметить, они строятся друг на друге. Сегодня вы узнаете, как узлов , типов контента и полей можно использовать как часть конфигураций представлений. Кроме того, вы найдете примеры блоков , созданных с использованием представлений.

Понимание терминологии Views

Необходимо знать три ключевых термина: модуль Views , модуль Views UI  модуль и  view  экземпляр. Модуль Views — это двигатель всей системы. Часто описываемый как конструктор SQL-запросов, он позволяет извлекать данные, хранящиеся в базе данных Drupal, составлять список результатов и представлять их в различных выходных форматах. Одним из его больших преимуществ является то, что создателям сайтов не нужно знать SQL или подробности о базовой структуре базы данных. В большинстве случаев достаточно базового понимания таких концепций Drupal, как узлы, типы контента и поля. Использование  Views UI  модуль позволяет создавать view экземпляры, которые инкапсулируют конфигурацию того, какие элементы отображать и как.

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

Экземпляр view  – это набор конфигураций, описывающих, как данные в Drupal будут собираться и представляться посетителю сайта. Одно представление может иметь несколько дисплеев . Возможные виды отображения включают страницу , доступную по определенному URL-адресу пути , блок , который нужно поместить в тематический регион , или канал , который нужно экспортировать в OP RSS 1 или 9 ML 1 или 9. Каждый тип отображения позволит вам указать презентацию  формат . Возможные значения зависят от типа дисплея . В случае отображения страниц допустимые альтернативы включают неформатированных списков , таблиц , HTML-списков и сеток . Форматы отображения и вывода предоставляются модулями. По мере того, как вы включаете больше основных модулей или устанавливаете новые дополнительные модули, вы можете получить больше возможностей. Посетите эту страницу, чтобы просмотреть список модулей, расширяющих функциональные возможности представлений.

Совет:  В пользовательском интерфейсе Views есть некоторые несоответствия, которые могут сбить вас с толку, если вы с ним не знакомы. Во-первых, в нем используется слово «Содержание»  для ссылки на узлов , как на первой странице мастера создания представлений. Во-вторых, в отличие от параметра «Псевдоним URL» на странице редактирования узла, параметр path внутри представления не приводит к ошибке проверки, если он не начинается со знака / (косая черта). Эти и другие тонкие различия существуют, но они незначительны по сравнению со всеми преимуществами, которые мы получаем от использования системы.

Техническое примечание: Можно увидеть SQL-запрос, который Drupal выполняет для получения списка результатов. Перейдите на страницу «Настройки представлений» в разделе /admin/structure/views/settings и установите флажок «Показать SQL-запрос» в «Настройках предварительного просмотра в реальном времени». Затем вы можете перейти к любому представлению, и после нажатия кнопки «Обновить предварительный просмотр» вы увидите SQL-запрос, выданный Drupal. В качестве примера взгляните на представление, которое показывает главную страницу, настроенную в /admin/structure/views/view/frontpage. Обратите внимание, что имена таблиц заключены в фигурные скобки ( {} ). Это связано с тем, что Drupal позволяет вам определять префиксы таблиц, чтобы совместно использовать базу данных с другими приложениями. Хотя они редко бывают полезны, их можно настроить. Чтобы приспособиться к этому, Views API использует фигурные скобки, чтобы указать, что имена таблиц должны быть обработаны для добавления префиксов таблиц при их установке.

Как работают представления Drupal?

В этом разделе предполагается, что модуль Views UI включен. Чтобы создать представление, посетите страницу «Добавить представление» в разделе /admin/structure/views/add. Для «Настройки просмотра > Показать» вам нужно указать, какой тип списка вы хотите создать: контент (узлы), пользователи, комментарии, файлы и т. д. Вы также можете указать, как вы хотите представить результаты: страницу с необязательным RSS-канал или блок. После этой начальной формы вы попадаете в полный интерфейс настройки, где параметры конфигурации практически безграничны. Первоначальный выбор того, что показывать (контент, пользователи и т. д.), нельзя изменить после установки, поскольку он служит базовой таблицей для сбора данных. За исключением этого и  имя машины  представления, каждый параметр можно изменить в любой момент с помощью этого интерфейса. Вместо того, чтобы создавать представление с нуля, давайте рассмотрим несколько примеров, которые поставляются со стандартным профилем установки в Drupal. Это позволит нам лучше понять интерфейс Views UI.

Представление frontpage  настраивается в разделе /admin/structure/views/view/frontpage. Он поставляется с двумя дисплеями : Page и Feed . Страница  отображается в пути /node  в формате   неформатированного списка   show ing Контент (узлы)  с использованием режима Teaser 6 0 90. Поскольку мы показываем узел представления, нет отдельных полей для представления. Использование режимов просмотра рекомендуется вместо полей рендеринга. Одна из причин заключается в том, что он выигрывает от кэширования на уровне объекта. В разделе критериев фильтрации указаны условия, которым должен соответствовать узел, чтобы он появился в окончательном списке результатов. В этом случае узел должен быть опубликовал  и  переместился на главную страницу . Обратите внимание, что критерии фильтрации для типа контента отсутствуют. Тем не менее, при установке Drupal по умолчанию все статей  отображаются на главной странице, а основных страниц там не отображаются. Причина в том, что по умолчанию статьи настроены на продвижение на главную страницу, а основные страницы — нет. Этот параметр можно изменить на основе узла, а значения по умолчанию можно установить на основе типа содержимого.

Задняя часть пользовательского интерфейса Views для просмотра главной страницы в  критерии сортировки В разделе мы видим два значения. Первый поместит любой узел, отмеченный как sticky , в начало списка. Второй упорядочивает узлы на основе их даты создания . При наличии нескольких критериев сортировки важен порядок их определения. Любые критерии, которые появляются первыми в списке, будут иметь приоритет над последующими. Это представление используется главной страницей Drupal по умолчанию. Обратите внимание, что его путь /node указан как главная страница в /admin/config/system/site-information при стандартной установке. Второй дисплей представления – это  Feed , конфигурация которого в основном такая же, как и Page  дисплей. Существенными отличиями являются путь, формат и настройка режима просмотра: /rss.xml, формат RSS-канала и режим просмотра RSS соответственно.

Иногда нам нужно создать представление для представления списка элементов, но мы хотим, чтобы конечный пользователь дополнительно отфильтровал этот список или изменил способ его сортировки. Это можно сделать с помощью открытых фильтров и экспортных сортировок . Хорошим примером является интерфейс администрирования для всех узлов Drupal, находящихся в /admin/content. Конфигурация этого представления доступна в /admin/structure/views/view/content. В этом представлении представлены семь  полей  в формате таблицы: массовая форма операций узла, название, тип контента, автор, статус публикации, обновленная метка времени и операции. В разделе критериев фильтрации  четыре элемента были раскрыты  , что позволяет редактору контента фильтровать список на основе заголовка узла, типа контента, статуса публикации и языка. В этом представлении нет открытых критериев сортировки , но его функциональность и представление аналогичны открытым фильтрам. Однако, поскольку он использует табличный формат, некоторые заголовки были сделаны кликабельными, что позволяет изменять порядок по возрастанию или убыванию для этого конкретного поля. Это еще один способ разрешить конечному пользователю переопределить способ представления результатов по умолчанию.

В предыдущем примере важно отметить четыре момента. Во-первых, поле просмотра не всегда является полем , прикрепленным к типу контента , подобно тому, которое предоставляет столбец «операции» в таблице. Повторное использование слова « field » в этом контексте немного неудачно. Во-вторых, список полей в разделе fields и разделе критериев фильтрации не обязательно должен совпадать. В-третьих, виджет (ввод текста, раскрывающийся список и т. д.), который позволит пользователю отфильтровать список, зависит от типа обрабатываемого поля. В-четвертых, когда пользователь фильтрует список, исходный формат представления сохраняется, в данном случае это таблица с семью столбцами.

Совет:  Ядро Drupal поставляется с не менее чем 14 представлениями по умолчанию. Их изучение — хороший способ узнать больше о том, как работает система Views. Для любознательных читателей взгляните на представления «Кто новый» и «Кто в онлайн-блоке» для примеров  блоков, отображающих . Оба доступны в /admin/structure/views. Если вы хотите поиграть с ними без необходимости настраивать локальную среду разработки, я рекомендую использовать https://simplytest.me/. На этом веб-сайте вы можете протестировать ядро ​​Drupal и дополнительные модули, темы и дистрибутивы в течение нескольких минут.

Техническое примечание:  Так как это построитель запросов SQL, некоторые элементы пользовательского интерфейса представлений могут быть сопоставлены с концепциями SQL. Раздел fields  сопоставляется со столбцами таблицы для включения в оператор SELECT  . Отношения  добавить JOIN предложений к запросу. Критерии фильтра и разделы контекстных фильтров соответствуют предложению WHERE . Раздел критериев сортировки соответствует предложению ORDER BY . пейджер добавляет пункты LIMIT и OFFSET . При использовании агрегации в запрос добавляется предложение GROUP BY . А параметр запроса «Отличное» добавляет предложение DISTINCT . Имейте в виду, что элементы интерфейса не сопоставляются один к одному с элементами SQL-запроса. Пользовательский интерфейс представлений стремится скрыть сложность базовой структуры данных от создателей сайтов. Хотя это и не обязательно, понимание этого сопоставления полезно, особенно когда конфигурация представления не дает ожидаемого результата.

Динамические результаты

Views — одна из многих систем, позволяющих создавать динамические сайты с помощью Drupal. Эти сайты, которые после настройки автоматически обновляют свой контент с течением времени. Например, если у вас есть веб-сайт, содержащий информацию о событиях, вы можете захотеть иметь страницу со списком только будущих событий. Для этого вы можете создать тип контента «Событие» с полем «Дата». Затем вы создаете представление с критериями фильтра, использующими это поле, чтобы в окончательный список появлялись только события, дата которых «сегодня» или более поздняя. Обратите внимание, что в качестве значений фильтра можно использовать смещения даты. После того, как вся конфигурация настроена, редакторам контента нужно только добавить узлы и установить значение для поля «дата». Когда Drupal показывает страницу для этого представления, он будет учитывать исходную конфигурацию и показывать только те результаты, которые соответствуют условию  с сегодняшнего дня . Это иллюстрирует необходимость хранения данных узлов в отдельных полях. Таким образом, вы можете использовать их в качестве полей (для отображения), критериев фильтрации, критериев сортировки и т. д. Если бы у вас была эта информация внутри поля «тело», использовать ее для этих целей было бы практически невозможно.

Представления только с одним результатом

Мы сказали, что представления используются для создания списка элементов. Говоря о списках, принято думать о результатах, содержащих более одного элемента, обычно много. Но есть случаи, когда создание представлений одного элемента имеет смысл: когда вы хотите показать «большую часть», «лучшую часть» или другие превосходные степени. Например, самая посещаемая статья за последний месяц, самое посещаемое событие в прошлом году, самый последний продукт, добавленный в магазин, и т. д. Еще один вариант использования представления одного элемента — когда вы хотите показать что-то случайное. Для этого вы добавляете один критерий сортировки с метким названием «Случайный». Во всех этих случаях пейджер будет настроен на отображение только одного элемента.

Другие варианты использования

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

  • Интерактивная карта, подобная той, что на Drupical.com.
  • Представление некоторого контента в формате JSON или CSV, который вы хотите перенести из Drupal 7 в Drupal 8 с помощью Migrate API.
  • Страница поиска с открытыми фильтрами и фасетами, использующая Search API.
  • Аудио- или видеоплеер с функцией списка воспроизведения.
  • Карусель (изображение), хотя, скорее всего, это ужасная идея.

Сила в ваших руках

Views — чрезвычайно мощная система и ключевое отличие Drupal от других систем управления контентом (CMS) и фреймворков. Мы только коснулись того, что возможно в этом блоге. В Core Views есть много других концепций, таких как контекстные фильтры и отношения, которые не были объяснены. Используя предоставленные модули или пользовательский код, вы можете сгибать представления в соответствии с конкретными потребностями. Например, вы можете расширить представления с помощью плагинов для создания собственных полей, критериев фильтрации, критериев сортировки и т. д. Вы также можете использовать хуки для изменения самого SQL-запроса. Кроме того, вы можете переписать результаты и оформить вывод. С таким количеством движущихся частей изучение представлений может быть пугающим. Я рекомендую изучать одну концепцию за раз и экспериментировать с существующими представлениями, такими как те, которые поставляются с ядром Drupal, чтобы узнать, как они работают.

Около 8 лет назад Йохан Фальк создал один из лучших ресурсов для изучения представлений , которые я когда-либо видел. Подобно концепциям Drupal, которые мы изучали до сих пор, концепции представлений не претерпели существенных изменений с момента выпуска этой серии видеороликов.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *