УрокОстальные файлы.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 нам тоже ни к чему.
Поэтому решение всех бед будет таким:
- Создаём файл node-имя_материала.tpl.php (например, node-story.tpl.php)
- Подключаем необходимые файлы:
- Чистим кэш на сайте
<?php drupal_add_js(path_to_theme() . '/script.js', 'theme'); ?> <?php drupal_add_css(path_to_theme() .'/style.css', 'theme', 'all', FALSE); ?>
И будет вам счастье. Ещё раз напоминаю - таким образом можно заменить ЛЮБУЮ страницу сайта. Достаточно посмотреть на её урл, и заменить в нём все слэши / на знаки тире -, а название сайта на слово page, чтобы получился шаблон страницы. То есть если страницы выглядит как http://drupalace.ru/node/add/lesson, то шаблон её будет выглядеть так: page-node-add-lesson.tpl.php.
Надеюсь, с этим понятно. В следующем уроке поговорим о шаблонах для модуля CCK, и как их правильно перекрывать в своей теме.
- Spleshka
- 16.08.2010
- 10523
Комментарии
Супер! Предельно теперь понятно.
Пожалуйста, подключите модуль comment_notify (или аналог), чтобы можно было подписываться на свои темы и комментарии. Слишком много полезной информации.
Здравствуйте. Создаю шаблон страницы в теме Garland page-node-5.tpl.php но отображается она все равно также.
Сбросьте кеш сайта (/admin/settings/performance)
Очищал кэш. Все также. Может от версии друпала зависит? у меня 7.8
В седьмом друпале page--node--5.tpl.php
Спасибо. Все получилось.
Расшифруйте пожалуйста подробнее этот код! Зачем после файла стиля ещё столько всего?
Можно и без трёх последних параметров. Однако они влияют на добавление css:
Комментировать