Шаблоны tpl php как использовать. Подробно о файлах *.tpl шаблона Dle их предназначение

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

// начало меню Главная Обо мне Я и мировое господство Контакты // конец меню Главная страница Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне:

Для того, чтобы добавить шаблон в CMS, нужно создать файл в директории tpls/content , например, test.tpl , и вставить туда ваш HTML-код. CSS-файл следует положить в папку css/cms и назвать style.css . Изображения желательно положить в папку images . Не забудьте поменять пути ко всем изображениям и CSS-файлам.

Замечание

В названии файла шаблона нельзя использовать русские буквы!

Чтобы система «увидела » новый шаблон и начала использовать его для вывода страниц, шаблон необходимо добавить в систему. Для этого следует зайти в настройки модуля «Структура », вкладка «Шаблоны » (http://yourdomain.ru/admin/content/config/ ). Вы увидите список уже установленных шаблонов в каждом домене, которые существуют в выбранной языковой версии.

Чтобы подключить новый файл шаблона, заполните в самой нижней свободной строке поля «Название шаблона » (дайте ему какое-нибудь осмысленное название, например «Мой тестовый шаблон ») и «Имя файла » (в нашем случае, test.tpl) и нажмите кнопку «Сохранить ».

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

Шаблоны будут видны в выпадающем списке при редактировании каждой страницы:

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

Попробуйте создать новую страницу (убедитесь, что в опции «Шаблон дизайна » выбран новый шаблон) и посмотрите, что получилось на сайте.

На сайте должен появиться ваш HTML-шаблон. Но сейчас он статический. Теперь вам надо сделать его динамическим.

Для начала надо определить, какие части HTML-кода будут изменяться. В нашем случае изменяться будут:

    заголовок окна ;

    мета-теги keywords и description;

    заголовок текста ;

    собственно текст;

    меню сайта.

Значит, предстоит немного поработать с HTML-шаблоном и вместо изменяющихся участков поставить соответствующие макросы.

Например, в начале HTML-файла заданы мета-теги и тайтл:

Сайт Васи Пупкина: Главная страница

Заменяем их на соответствующие макросы (список макросов дан в приложении):

%title%

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

Аналогично поступим с заголовком текста. Было так:

Главная страница

А станет так. Заголовок текста выводится макросом %header%:

%header%

Основной текст страницы тоже изменяется:

Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне:

Для вывода основного текста страницы есть макрос %content% :

%content%

В начало файла между тегами и вставляем макрос:

Эта строчка подключает функцию быстрого редактирования и другие полезные возможности. При помощи нее вы сможете, нажав Shift +D , быстро перейти к правке текущей страницы сайта или каких-либо ее фрагментов.

В итоге должно получиться следующее:

%title% %system includeQuickEditJs()% // начало меню Главная О компании Проекты Контакты // конец меню %header% %content%

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

// начало меню Главная Обо мне Я и мировое господство Контакты // конец меню

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

Выделим обрамление меню:

// начало меню // конец меню

Пункт меню оформлен так:

Контакты

Текущий пункт меню оформлен по-другому:

Главная

Исходный шаблон меню находится в файле /tpls/content/menu/default.tpl и выглядит так:

Вначале немного непонятно. На самом деле, все очень просто. Посмотрим на первую часть кода:

$FORMS ["menu_block_level1" ] =

Мы уже знаем, что вместо %lines% система подставляет пункты меню с их HTML-обрамлением. Нам встретились новые макросы. Вместо %link% вставляется URL пункта меню, а вместо %text% ― текст (определяется в поле «название страницы »).

Теперь меню можно вставить в шаблон страницы макросом %menu% ::

%title% %system includeQuickEditJs()% // начало меню %menu% // конец меню %header% %content%

Шаблон готов.

Если вы хотите на каких-то страницах сайта выводить меню по другому шаблону, нужно создать еще один файл с шаблоном меню в той же папке. Например, menu2.tpl . Соответственно, при подключении меню к шаблону страницы вместо %menu% надо написать немного по-другому: %content menu("menu2")% .

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

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

После создания info -файла, в принципе, тема уже определена. Это значит, что вы можете зайди в раздел управлением темами http://mysite.ru/admin/build/themes и включить там свою тему. Естестественно, после включения её никакого дизайна вы не увидете - страница приобретёт стиль "чёрное на белом" - на белом фоне чёрный текст.

Однако хочу отметить, что не смотря на то, что в нашей теме никаких файлов кроме mytheme.info не лежит, сайт будет работать так как же как и раньше - выводить весь контент, добавлять блоки в регионы (http://mysite.ru/admin/build/block ) и прочее. Это объясняется тем, что в ядро друпала включены обязательные модули , которые даже при полном отсутствии каких либо файлов в вашей теме (за исключением info-файла) позволяют продолжать работу с друпалом.

Впринципе, всё создание шаблона сводится к перекрытию файлов-шаблонов (они имеют расширение .tpl.php ) стандартных модулей нашей CMS .

Самый важный tpl-файл (tpl - сокращение от template , шаблон) это page.tpl.php . Он отвечает за построение каждой страницы сайта. Давайте разберёмся, из чего же состоит файл шаблона:

  • html код
  • php код
  • javascript код (необязательно)

В каждый файл шаблона друпал передаёт данные сайта в виде стандартных переменных. Для каждого файла шаблона существуют 2 вида переменных:

  • переменные, которые передаются только в этот файл
  • переменные, которые передаются во все файлы

Вот список всех переменных для page.tpl.php :

Общие переменные (для всех файлов):
  • $base_path - базовый путь, куда был установлен друпал
  • $css - массив css-файлов, подключенных к текущему файлу шаблона
  • $directory - путь к папке, в которую установлена тема
  • $is_front - возвращает значение ИСТИНА если вы находитесь на главной странице
  • $logged_in - возвращает значение ИСТИНА если вы залогинились
  • $is_admin - возвращает значение ИСТИНА если вы имеете доступ в админку
Метаданные страницы
  • $language - (объект) Текущий язык, который отображается на сайте
  • $language->language - содержит его текстовое представление
  • $language->dir - содержит направление языка. Это или будет "ltr"(left-to-right) или "rtl"(right-to-left)
  • $head_title - модифицированная версия заголовка страницы, для использования между тэгами
  • $head - вставляется между тэгами . Содержит мета тэги, ключевые слова и т.д.
  • $styles - служит для загрузки всех css -файлов в текущую страницу
  • $scripts - служит для загрузки всех javascript"ов в текущую страницу
  • $body_classes - набор классов css для тэга . Содержит в себе информацию о текущем расположении колонок на сайте, их количестве, текущем url"e и т.д.
Информация о сайте
  • $front_page - адресс главной страницы сайта. Лучше использовать эту переменную для ссылки на главную страницу, т.к. она включает в себя язык домена и преффикс
  • $logo - путь к логотипу сайта, если он включен на сайте
  • $site_name - имя сайта. Может быть пустым, если отключить его в фичах в info-файле. Настраивается в mysite.ru/admin/settings/site-information
  • $site_slogan - слоган сайта. Может быть пустым, если отключить его в фичах в info-файле. Настраивается в mysite.ru/admin/settings/site-information
  • $mission - миссия сайта. Может быть пустой, если отключить её в фичах в info-файле. Настраивается в mysite.ru/admin/settings/site-information
Навигация
  • $search_box - содержит в себе html код, отображающий строку поиска. Может быть пустым если выключить его в info-файле
  • $primary_links
  • $secondary_links - массив, содержащий в себе навигационные ссылки для сайта, если они разрешены в фичах инфо-файла
Содержимое страницы по умолчанию
  • $left - регион. Содержит в себе html код для левой колонки. Если в инфо-файле задать любые регионы, то он пропадает
  • $breadcrumb - "хлебные крошки" для текущей страницы
  • $title - заголовок страницы
  • $help - динамические подсказки, в основном показываются в админке
  • $messages - выводит сообщения об ошибках и предупреждениях на сайте
  • $tabs - ссылки (табы), связывающие текущую страницу с её подстраницами (к примеру для статьи - с её страницей редактирования)
  • $content - содержимое текущей страницы
  • $right - регион. Содержит в себе html код для правой колонки. Если в инфо-файле задать любые регионы, то он пропадает
Нижняя область/закрывающие данные
  • $feed_icon - строка со всеми иконками обратной связи для текущей страницы
  • $footer_message - сообщение внизу страницы. Настраивается в mysite.ru/admin/settings/site-information
  • $footer - регион. Содержит в себе html код для нижней части страницы. Если в инфо-файле задать любые регионы, то он пропадает
  • $closure - закрывающая метка для всех модулей, которые изменяли страницу. Эту переменну обязательно надо выводить после всего динамического содержимого. Лучше всего перед закрытием тэга BODY

Тут перечислены все стандартные переменные . Но вы можете добавлять сюда свои переменные либо в роли регионов через info -файл, либо в любой другой роли через файл template.php (о нём чуть позже).

Теперь я покажу какой код должен находиться в page.tpl.php и в какой код он потом интерпретируется браузерами. Перед вами кусок кода из page.tpl.php :

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

Урок 4 . Необходимые файлы для создания шаблона. Page.tpl.php

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

Вот таким образом выглядит стандартный файл page.tpl.php , который идёт вместе с друпалом. Меняйте название классов, переставляйте местами переменные - и смотрите что из этого получается. Это надо для того, чтобы "пощупать" как оно работает и что выводится в результате.

" />

Instagram