Как темизировать представление мы разобрали в прошлом уроке. Однако не стоит забывать, что представление состоит из полей и темизация каждого из них также играет существенную роль в создании проекта.
Подготовка материала
Перед началом работы нам необходимо создать «рабочую площадку», в нашем же случае это будет материал с полями, и представление на его основе.
Добавление полей
В типе материла, который у нас будет выводиться в представлении, добавляем необходимые нам поля. Это можно сделать прейдя по ссылке «Структура» на административной панели, затем выбрать подраздел «типы материала», выбрать необходимый нам тип, в моём случае это «Article», и выбрать вкладку «Управления полями».
Настраиваем материал с учётом специфики своего проекта.
Мой материал будет содержать следующие поля:
- Название — поле необходимое для вывода непосредственно названия материла. Тип поля — «Текст», виджет — «Текстовое поле»;
- Изображение — превью статьи или новости. Тип поля — «изображение», виджет — «изображение»;
- Body — содержимое страницы. Это поле стандартное его оставлю без изменений;
- Раздел — тип новости, которая будет публиковаться на сайте. Тип поля — ссылка на термин, виджет выбираем на своё усмотрение, мне подойдёт «выбор из списка»;
Также, если проект рабочий, не забываем добавить поля seo оптимизации.
Создадим пару материалов, и перейдём в создания представления.
Представление
Если вам не знаком процесс создания представления и добавления в него полей, вы можете ознакомится с ним прочитав соответствующую статью на нашем блоге. Здесь же я просто опишу своё представление.
Представление созданное на основе типа материала «Articles», выводится в виде «блока», формат отображения «Таблица» ( почему я выбрал таблицу вы можете узнать прочитав прошлую статью). Поля которые будут выводится это- «Путь» для генерации ссылки, «Изображение», «Название», «Раздел» , «Body».
Настройки отображения полей заполняем с учётом специфики своего проекта
Сейчас наше представление имеет следующий вид:
Темизация полей
Выведем название раздела в виде симпатичной иконки. Для этого нам понадобится темизировать поле «Раздел»
Но перед тем как начать темизацию нам необходимо определится, какие шаблоны существуют и какой нам подойдёт в этом случае.
Что бы узнать какие шаблоны существуют нам надо вернуться в окно представления. В нём развернуть окно «Расширенные настройки» и перейти по ссылке «Информация» в разделе «Тема оформления».
Перед нами откроется окно со списком всех шаблонов влияющих на представление. В нём мы находим наше поле и из перечисленного списка выбираем подходящий нам шаблон.
Принцип выбора шаблонов
Шаблоны темизации полей необходимо выбирать осторожно, ведь выбрав не правильный шаблон можно повлиять на все поля представления.
Шаблонов у этого поля достаточно много, по этому я разберу самые часто используемые шаблоны.
views-view-field--field-razdel.tpl.php — шаблон затронет все поля представлений имеющие машинное имя field-razdel. Очень удобный шаблон если у нас есть несколько представлений использующие одно и то же поле.
views-view-field--temizaciya--field-razdel.tpl.php — шаблон который будет воздействовать на поле с машинным именем field-razdel, на все отображения внутри представления с машинным именем temizaciya.
views-view-field--temizaciya--proba--field-razdel.tpl.php — самый точный шаблон, он затронет конкретное поле внутри конкретного отображения, а именно поле field-razdel в отображении proba, которое в свою очередь находится в temizaciya.
Зная машинные имена представления, отображения и поля можно легко выбрать необходимы шаблон, ведь принцип его построения базируются на уточнении элемента, с использованием машинного имени, следом за стандартным названием views-view-field--....tpl.php
Выбрав подходящий шаблон, создаём файл с его названием внутри темы.
После чего возвращаемся на страницу с шаблоном и нажимаем кнопку "пересканировать шаблоны".
Сохраняем наше представление и переходим на страницу где оно выведено.
Также откроем наш файл и пропишем внутри него
<?php dpm($row);
Чтобы узнать что содержит в себе поле.
Не забываем предварительно вывести сообщения на страницу и установить модуль Devel
Теперь при помощи dpm найдём айдишник термина и заменим его вывод на картинку.
По причине того, что у нас несколько вариантов статей воспользуемся конструкцией if.
В конечном итоге наш код приобретёт следующий вид:
<?php if ($row->field_field_razdel[0]['rendered']['#options']['entity']->tid == '10') { print '<img src="themes/bartik/css/statia.png" alt="Статья" />'; } if ($row->field_field_razdel[0]['rendered']['#options']['entity']->tid == '11') { print '<img src="themes/bartik/css/novosti.png" alt="Обзор" />'; }
Пару строк css и наше представление выглядит уже немного интересней.
Не забываем после завершения работы с представлением убрать из шаблона наш dpm.