Использование представлений отношений, аргументов и вложений

Эта статья также доступно на французском языке от KolossalDrupal ,

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

Я собираюсь создать представление для примера музыкального сайта. На сайте у меня есть 3 связанных типа контента для узлов "Band" ("Black Eyed Peas", "Linkin Park" и т. Д.), Узлов "Album" ("Back in Black", "Bat Out of Hell" и т. д.) и «События» (концерты, телевизионные выступления и т. д.)

)

Каждый из этих типов контента имеет только минимальные поля для демонстрации функциональности представлений, которая является предметом этой статьи. Например, тип контента «Событие» не имеет полей местоположения или даты - их можно легко добавить позже.

Чтобы связать 3 типа контента, оба типа контента «Альбом» и «Событие» имеют поле «Ссылка на узел», которое позволяет их узлам указывать на узел «Полоса». Например, когда создается новый узел «Альбом», пользователь вынужден выбрать соответствующий «Band».

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

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


Информация о группе
[Название группы]

Альбомы
[Альбом 1]
[Альбом 2]
[Альбом 3]

События
[Событие 1]
[Событие 2]
[Событие 3]

Есть несколько способов сделать это - Панели (контекст) и блоки (видимость) приходят на ум - но я собираюсь использовать метод, который использует только вложения Views. Независимо от выбранного метода, почти гарантировано, что вам придется создавать некоторые представления, так почему бы не использовать дополнительные модули и / или код?

Вложение видов - это просто тип отображения видов, который присоединяется к другому виду просмотра (обычно это отображение страницы или отображение блока). Упрощая вещи, это можно представить так:

Упрощая вещи, это можно представить так:

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

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

Как обычно, вы можете скачать все типы CCK и просмотреть экспорт в конце этой статьи.

Для первого шага в создании представления я перешел на страницу admin / build / views / add и создал новое представление на основе узла под названием «band_info» со следующими значениями на экране «По умолчанию»:

Основные настройки Заголовок: Band Info Аргументы Узел: Nid («Действие, если аргумент отсутствует: Скрыть представление / Страница не найдена (404)») Узел полей: Фильтр заголовка Опубликовано: Да Тип: Band

Затем я создал новый экран «Страница», назвал его «Band Page» и установил путь к нему: «band /%». Помните, что «%» - это просто заполнитель для аргумента «Node: Nid», который я установил на экране «По умолчанию».

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

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

Первоначальная настройка нового дисплея проста:

Основные настройки Имя: Альбомы Вложение Настройки вложения Положение: После вложения на: полосу страницы

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

Как только настройка переопределена, я могу смело менять ее на «Альбом», не беспокоясь о том, что я испортил другие дисплеи. Легко определить, когда параметр переопределен: он больше не отображается курсивом в сводке отображения:

Здесь возникает сложная часть: теперь, когда на нашем дисплее будут отображаться только узлы альбома, как отфильтровать его по идентификатору узла группы? С "Отношением", конечно! Помните, что тип содержимого Band и Album связан через поле Node Reference. Мы можем использовать это отношение для фильтрации узлов Альбома. Первый шаг - добавить новое отношение к «Вложению альбомов». В этом случае я собираюсь добавить отношение «Content: Band». Однако прежде чем сделать это, я должен убедиться, что я добавляю это отношение только к вложению альбомов, а не ко всему представлению . Это распространенный источник ошибок. Обратите внимание на раздел «Отношения» - обратите внимание, как он выделен курсивом? Это означает, что все, что я добавляю к нему, фактически добавляется к дисплею по умолчанию - и ко всем дисплеям, которые наследуются от него. Сначала мне нужно нажать на ссылку «Отношения» и нажать кнопку «Переопределить».

Как только это будет сделано, я знаю, что безопасно добавляю связь только к экрану «Вложение альбомов». Я собираюсь добавить отношение, которое связывает узел «Альбом» с узлом «Band» - в данном случае это поле «Ссылка на узел Content: Band».

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

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

Последний фрагмент головоломки связан с аргументом «Node: Nid». Поскольку экран «Вложение альбомов» наследует аргумент из экрана «Страница группы», я должен убедиться, что он использует его правильно. В текущем состоянии дисплей попытается отфильтровать список альбомов с помощью входящего аргумента Node ID. Это ничего не даст, так как входящий аргумент - это ID узла группы. Мне нужно указать представлению использовать аргумент для фильтрации узлов Album, возвращаемых Band - используя отношения, которые я только что установил. Оказывается, это довольно легко сделать.

Прежде всего, мне нужно нажать, чтобы отредактировать аргумент «Node: Nid», а затем нажать кнопку «Переопределить», чтобы мои изменения влияли только на это отображение. Затем мне нужно установить в поле «Отношения» значение «Группа». Это эффективно отфильтрует ноды Album, возвращаемые по идентификатору их связанного Band-узла.

Последнее, что я сделал с вложением, чтобы сделать его немного более удобным для пользователя, - это переопределил настройку «Заголовок» и добавил следующее:


Альбомы

Это просто отобразит хороший заголовок над альбомами. Если вы быстро посмотрите на панель предварительного просмотра с соответствующим идентификатором узла для группы, вы увидите что-то вроде этого:

На данный момент, "Приложение Альбомов" почти готово. Вы можете добавить некоторые дополнительные поля, сортировки и параметры отображения, но сложная часть завершена.

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

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

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

Независимо от выбранного метода, почти гарантировано, что вам придется создавать некоторые представления, так почему бы не использовать дополнительные модули и / или код?
Обратите внимание на раздел «Отношения» - обратите внимание, как он выделен курсивом?