УрокОстальные файлы.tpl.php

Настало время поговорить о том, как создать шаблон любой страницы. Может, вам когда-нибудь придётся делать такой сайт, в котором, например, конкретная страница должна содержать дополнительные поля, или подключать скрипты (не засовывать же их в шаблоны всех страниц из-за одной страницы!), или ещё что-нибудь. Потребностей много, а реализация далеко не для всех является очевидной.

Допустим, вам надо поменять страницу с конкретным материалом. Если у вас не стоит модуля pathauto, то она запишется так: http://mysite.ru/node/10(nid материала). Чтобы перекрыть эту страницу, нам надо создать у себя в папке темы файл page-node-10.tpl.php и засунуть туда код ВСЕЙ страницы с этим материалом. Потом не забудьте почистить кэш - http://mysite.ru/admin/settings/performance - очистить кэш (clear all cached data).

Другой пример. Вам надо ко всем материалам определённого типа добавить скрипт, который красиво обрабатывает фотографии, склеивая их в слайдшоу. И ещё засунуть туда css, который был бы полезен только для этих материалов. Безусловно, подключать эти скрипты и стили в исходный шаблон node.tpl.php было бы глупо - во-первых, скорее всего, если там нет нужных фотографий скрипт не работал бы, а только тянул лишние килобайты. Да и лишний css нам тоже ни к чему.
Поэтому решение всех бед будет таким:

  1. Создаём файл node-имя_материала.tpl.php (например, node-story.tpl.php)
  2. Подключаем необходимые файлы:
  3. <?php drupal_add_js(path_to_theme()  . '/script.js', 'theme'); ?>
    <?php drupal_add_css(path_to_theme() .'/style.css', 'theme', 'all', FALSE); ?>
  4. Чистим кэш на сайте

И будет вам счастье. Ещё раз напоминаю - таким образом можно заменить ЛЮБУЮ страницу сайта. Достаточно посмотреть на её урл, и заменить в нём все слэши / на знаки тире -, а название сайта на слово page, чтобы получился шаблон страницы. То есть если страницы выглядит как http://drupalace.ru/node/add/lesson, то шаблон её будет выглядеть так: page-node-add-lesson.tpl.php.

Надеюсь, с этим понятно. В следующем уроке поговорим о шаблонах для модуля CCK, и как их правильно перекрывать в своей теме.

Комментарии

Аватар пользователя Влад
Влад написал:

Супер! Предельно теперь понятно.
Пожалуйста, подключите модуль comment_notify (или аналог), чтобы можно было подписываться на свои темы и комментарии. Слишком много полезной информации.

04.03.2011 12:20
Аватар пользователя bess410
bess410 написал:

Здравствуйте. Создаю шаблон страницы в теме Garland page-node-5.tpl.php но отображается она все равно также.

28.09.2011 15:04
Аватар пользователя Spleshka
Spleshka написал:

Сбросьте кеш сайта (/admin/settings/performance)

28.09.2011 15:20
Аватар пользователя bess410
bess410 написал:

Очищал кэш. Все также. Может от версии друпала зависит? у меня 7.8

28.09.2011 15:49
Аватар пользователя Spleshka
Spleshka написал:

В седьмом друпале page--node--5.tpl.php

28.09.2011 18:23
Аватар пользователя bess410
bess410 написал:

Спасибо. Все получилось.

29.09.2011 13:34
Аватар пользователя vazellin
vazellin написал:
'/style.css', 'theme', 'all', FALSE

Расшифруйте пожалуйста подробнее этот код! Зачем после файла стиля ещё столько всего?

22.11.2011 19:46
Аватар пользователя Spleshka
Spleshka написал:
'/style.css', 'theme', 'all', FALSE

Можно и без трёх последних параметров. Однако они влияют на добавление css:

  • 'theme' - определяет группу, к которой добавляется css. Особо ни на что не влияет. Бывает theme и module.
  • 'all' - это параметр media. Знаем за что отвечает.
  • FALSE - определяет, надо ли агрегировать файл.
23.11.2011 02:58

Комментировать