Template tpl php drupal

Шаблоны страниц и нод в Drupal 7

maintenance-page.tpl.php — шаблон страницы обслуживания. Отображается когда включен режим обслуживания сайта. И часто эта страница выглядит некрасиво, если её не менять. Для этого и существует шаблон maintenance-page.tpl.php.

maintenance-page—offline.tpl.php — шаблон страницы, отображающийся при ошибках, связанных с базой данных.

У этих двух шаблонов есть особенность — они включают в себя полную разметку HTML страницы, т.е. содержит всю страницу целиком, включая head и body.

Шаблоны нод

node—[type|nodeid].tpl.php

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

Базовый шаблон, используемый для отображения любых нод называется node.tpl.php .

  • node—nodeid.tpl.php где nodeid — ID ноды. Шаблон используется если необходимо изменить разметку конкретной ноды. Например шаблон node—1.tpl.php задает разметку для первой ноды.
  • node—type.tpl.php где type — тип ноды. Если необходимо указать разметку для всех нод одного типа используется этот шаблон. Например node—article.tpl.php задаёт разметку для всех нод типа article.

Шаблоны страниц

page—[front|internal/path].tpl.php

Базовый шаблон для страниц: page.tpl.php.

  • page—node—edit.tpl.php — задаёт шаблон страницы редактирования и создания ноды.
  • page—node—1.tpl.php — задаёт шаблон страницы для ноды с id.
  • page—node.tpl.php — шаблон для всех страниц с нодой.
  • page—front.tpl.php — очень полезный шаблон, использующийся для отображения главной страницы сайта.
  • page—taxonomy.tpl.php — шаблон страницы для терминов таксономии
  • page—taxonomy—term—1 — шаблон страницы для термина таксономии с tid = 1

UPD: Этим способом можно переопределить шаблон страницы Drupal, выводимой через модуль Views. Для этого нужно создать новый шаблон page—[viewurl] , где viewurl — путь страницы. Например, для страницы http://site.ru/views-page/ нужно создать шаблон с именем page—views-page.tpl.php.

Подробнее про шаблоны views я написал в отдельной статье: Шаблоны блоков, страниц, полей для модуля views Drupal 7.

UPD: В Drupal 7 нет стандартных шаблонов для страниц ошибок 404, 403. Так же, по умолчанию нет возможности объявить свой шаблон страницы для отпределённых типов нод. Но это легко реализуется. Как это сделать можно прочитать здесь: Создание кастомных шаблонов в теме Drupal 7.

Про шаблоны блоков, комментариев и полей вы можете почитать в соотвествующей статье: Шаблоны блоков, комментариев и полей Drupal 7.

Источник

Как создать свою тему на Drupal 7?

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

Читайте также:  Php to javascript compiler

Drupal создание темы

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

Как создать тему?

Для того, чтобы Ваша тема появилась в админке и стала доступной для подключение достаточно просто создать папку с ее названием в соответствующей директории (напоминаю, пользовательские темы должны лежать в папке ваш_сайт/sites/all/themes) и в нее положить файл с расширением .info.

Это обязательный минимум. Кроме него в теме должны присутствовать:

  • template.php — файл в который будет вставляться php код для расширения возможностей темы ( добавить нестандартные шаблоны, изменить код отдельных элементов, к примеру хлебных крошек)
  • шаблоны tpl.php — файлы в которых мы собственно и работаем с кодом страниц и их отдельных элементов. Именно в них будет происходить темизация
  • css и js файлы- обычные файлы со скриптами и оформлением

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

Файл .info

Синтаксис

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

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

Для примера я создам тему с названием mytheme. Выглядеть это будет следующим образом:

Drupal название темы

Содержимое

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

name = My Theme description = Special theme for the site. By Vaden Pro / version = VERSION core = 7.x ; ---------STYLESHEETS--------- stylesheets[all][] = css/style.css ; ---------REGIONS--------- regions[header] = Header regions[sidebar_left] = Sidebar left regions[content] = Content regions[footer] = Footer ; Information added by Drupal.org packaging script on 2015-10-15 project = "drupal"

Drupal администрирование темы

  • name — Название Вашей темы, которое будет отображаться в административной панели Drupal
  • description – описание, которое также будет находиться в административной панели
  • version — версия темы, выводится рядом с ее названием, если написать сюда VERSION, то будет совпадать с текущей версией движка, если написать свое значение (к примеру 7.Х-1.1) то будет выводиться оно.
  • core — как и name обязательный параметр, говорит о том для какой версии Drupal создана наша тема.
  • ;что-то там — синтаксис комментария в info файле, точка с запятой в начале строки
  • stylesheets[all][] = css/style.css — подключение css файлов в тему (подробнее о подключении js и css файлов в шаблон темы)
  • scripts[] = js/scripts.js — таким же образом подключаем и js файлы при необходимости
  • regions[header] = Header –создаем ключевые области нашей темы. Подробнее описание смотри чуть дальше.
  • project — говорит о том для какой платформы вообще создана данная тема
Читайте также:  Внутренняя программная ошибка src tiffwr cpp 94

Пара слов о создании регионов для темы. Предположим у нас есть типичный сайт со следующей структурой:

Структура страницы

Соответственно мы хотим, чтобы у нас была возможность выводить блоки сайта в этих регионах, вот этой строкой в файле .info:

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

Drupal регионы темы

Кроме вышеперечисленного минимума в файл инфо еще можно добавить:

    screenshot — позволяет задать превью темы для админ панели, просто указываем путь к картинке:

screenshot = screenshot. png
features[] = logo features[] = favicon features [] = name features [] = slogan features [] = node_user_picture features [] = comment_user_picture features [] = comment_user_verification features [] = mainjnenu features [] = secondary_menu

Шаблоны .tpl.php

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

Для удобства работы в дальнейшем создадим папку templates внутри нашей темы, в которой и будут храниться все наши файлы tpl.php.

html.tpl.php

Предположим мы хотим делать сайт с использованием html 5, а значит нам нужно переопределить стандартный друпаловский !DOCTYPE (подробнее о html структуре страницы). Для этого нам необходимо подключить соответствующий шаблон.

Можно просто в нашей папке создать файл с таким названием и установить ему кодировку UTF-8 без BOM, но лучше взять исходник из ядра, для этого переходим из корня сайта modules/system, там находим и копируем файл html.tpl.php, после вставляем его в соответствующую папку нашей темы, открываем и вносим нужные нам правки:

Drupal изменение html.tpl.php

Код на который мы заменяем открывающий тег html и !DOCTYPE для подключения html5:

DOCTYPE HTML> html lang="ru-RU">

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

page.tpl.php

Аналогично предыдущему шаблону можно скопировать с modules/system/page.tpl.php, а можно просто копировать и переназвать шаблон html.tpl.php, потому что в отличие от html в page мы уже будем делать первую верстку нашей страницы, а значит код нам лучше написать в ручную (пара слов о том, как правильно создавать структуру страницы на html 5):

 if ($page['header']): ?> 
print render($page['header']); ?>
endif; ?> if ($page['sidebar_left']): ?> endif; ?>
if ($messages): ?>
print $messages; ?>
endif; ?> if ($tabs): ?>
print render($tabs); ?>
endif; ?> if ($breadcrumb): ?>
print $breadcrumb; ?>
endif; ?> print render($page['content']); ?> if ($page['footer']): ?>
print render($page['footer']); ?>
endif; ?>

Разберем чуть подробнее код:

Для того, чтобы вывести в шаблон страницы конкретный регион темы используется строка:

Как не сложно догадаться [‘header’] мы просто берем из файлика .info, напоминаю , в нем регион определен как (обращу внимание, что в шаблоне страницы в [header] добавляем кавычки [‘header’]):

Аналогично выводим все остальные регионы.

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

И ставим проверку на php, чтобы в случае, когда у нас в конкретном регионе нету содержимого (как сейчас, когда тема только создана и все блоки в ней отключены):

Откуда берем условие мы уже и так разобрали, все что внутри этого тега не будет выведено на страницу если в регионе [‘header’] нет ни одного блока. Ну и получили итог:

 if ($page['header']): ?> 
print render($page['header']); ?>
endif; ?>

Проделали это со всеми регионами примера и добавили в вывод на страницу:

 if ($breadcrumb): ?> 
print $breadcrumb; ?>
endif; ?>
 if ($messages): ?> 
print $messages; ?>
endif; ?>
 if ($tabs): ?> 
print render($tabs); ?>
endif; ?>

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

template.php

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

 //Убираем автоматичекую генерацию ссылки на сайт друпала в теме: function mytheme_html_head_alter(&$head_elements)  unset($head_elements['system_meta_generator']); >

style.css

Как мы помним мы также подключили в тему и файл css из .info файла:

stylesheets[all][] = css/style.css

А значит просто создаем папку css в которую и положим наш файл style.css.

Подводя итоги

На этом создание скелета нашей будущей темы можно считать законченным. Дальше будет идти работа уже по оформлению конкретных отдельных частей сайта.

Для удобства сразу добавим в нашу тему пока пустые папки:

  • js — сюда будем при необходимости ложить файлы скриптов
  • img — для картинок
  • views — для файлов tpl.php, которыми будем темизировать предстваления (чтобы не запутаться их лучше отделить от обычных tpl шаблонов)

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

Источник

Оцените статью