Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Темизация полей views в Drupal 7. Шаблон views-view-field.tpl.php

Раздел: 

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

Темизация полей представления

Подготовка материала

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

Добавление полей

В типе материла, который у нас будет выводиться в представлении, добавляем необходимые нам поля. Это можно сделать прейдя по ссылке «Структура» на административной панели, затем выбрать подраздел «типы материала», выбрать необходимый нам тип, в моём случае это «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.