УрокОстальные файлы.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
Аватар пользователя SplasH
SplasH написал:

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

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

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

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

В седьмом друпале 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
Аватар пользователя SplasH
SplasH написал:
'/style.css', 'theme', 'all', FALSE

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

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

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

                                                                
88 88 88 88 88888888ba 88 88 88
88 88 88 88 88 "8b 88 88 88
88 88 88 88 88 ,8P 88 88 88
88 88 88 88 88aaaaaa8P' 88 88 88
88 88 88 88 88""""""' 88 88 88
88 88 88 88 88 88 88 88
Y8a. .a8P Y8a. .a8P 88 Y8a. .a8P 88
`"Y8888Y"' `"Y8888Y"' 88 `"Y8888Y"' 88

Enter the code depicted in ASCII art style.