Иногда при создании сайта, возникают такие моменты, что нам необходимо перекрыть существующую страницу в Drupal на свою, в которой нам нужно разместить какую – то информацию или вывести совершенно другой дизайн и так далее, внутри страницы может быть всё, что угодно – это как говорится на ваше усмотрение. Каким образом это можно реализовать путём темизации шаблона - я сейчас вам продемонстрирую.
Я покажу свой пример перекрытия для 2х версий Drupal, 6го и 7го.
Drupal 6
Для начала нам необходимо создать какую либо страницу из админки сайта. Идём в пункт «Создать публикацию->Страница»

И заполняем форму создания страницы

После заполнения всё это дело сохраняем. И видим, что наша страница доступна по адресу «/node/51».

Теперь самое интересное, как нам эту страницу перекрыть на свою.
1.Для начала создадим разметку «HTML» нашей будущей страницы, с необходимым нам содержимым, я для примера просто выведу Заголовок и параграф с текстом.

2. Сохраняем созданный файл с разметкой как
page-node-51.tpl.php //вместо «node-51» вы вписываете свой адрес страницы.
Напомню вам, что кодировка должна быть UTF-8.
3.Копируем этот файл в корень нашего шаблона и из админки пересохраняем шаблон. Переходим на нашу страницу и видим готовый результат

Так же вы можете использовать переменные для вывода контента, в данном файле они также будут срабатывать.
Drupal 7.
Создадим страницу. Переходим в пункт «добавить содержимое ->Страница»

Заполняем форму

И сохраняем её. Видим, что страница доступна по адресу «/node/101»

Поэтому называем наш файл с разметкой, который мы создали в примере для 6го Drupal, как
page—node—101.tpl.php //здесь стоит два тире между словами
И копируем его в корень нашего шаблона.


Хочу заметить, что не всегда перекрываем страницы подхватываются с первого раза, иногда кроме пересохранения шаблона – необходимо ещё и чистить кеш сайта.
Комментарии (24)
Здравствуйте!
У меня 1 нода создаласть, и я создал файл page—node—1.tpl.php, но drupal этот файл не видит
Что может быть?
Спасибо!
а нода имеет nid/1??? Если да, то очистите кеш сайта и браузера, и пересохраните шаблон!
Там написано node/1 а не nid/1.
Как должно быть?
Смотрите, у вас будто бы одна длинная черта идет в имени файла page—node—1
Я ставлю -- так, есть ли разница?
Удалил кеш перезапустил шаблон все равно не показывает
Да разница есть, должно стоять 2 тире, если используете Drupal 7. Но вы меня не поняли! Url в drupal строятся как
nid - индентификатор ноды. Если вы не используете синонимы, то последняя цифра в адресной строке браузера и будет nid данной ноды. Поэтому файл переопределения должен выглядеть как
Сделал как вы написали, но не работает

Ссылку не открывает
www.spasana.kz/img/drupal.jpg
А в самом файле
вы что пишите???
Внутри файла page--node--1.tpl.php обычный html
А вы точно 7ку используете? Так как чудес вроде этих ни разу не встречал, где то ошибка. попробуйте создать другую ноду и попробовать переопределить ее! Даже не знаю чем вам еще помочь! Если что то придет в голову - отпишусь.
Да 7 версия, да я 5 нодов создал и 5 файлов
Тишина все равно.
Спасибо вам!
Здравствуйте!
Вы можете выложить свой пример как вы обращаетесь к файлу
page--node-1.tpl.php. Пожалуйста, а то я по всячески перепробовал не получается, и какая версия друпала у вас? у меня 7.19
Спасибо вам!
Специально для тебя! всё в видео видно. Качать здесь
Огромное спасибо вам!
Помогло, теперь все работает. Причина была в очистки кеша, я чистил кеш браузера.
Ой ей. Вот это полено=)
При установке модуля Shoutbox, соответственную страницу он создал сам по адресу http : //www.трампампам.ру/shoutbox. Но если делать замену таким файлом page-shoutbox.tpl.php то ничего не выходит. Впрочем интересует как и саму чат комнату вывести на отдельной страничке.
Можно вопросик не совсем по теме?
У меня сейчас сайт хоть и работает уже, но часто что-то меняю/добавляю и т.п.
Настройки кэша стоят: мин. и макс. время, включено сжатие и т.д.
Вопрос: после последних АПдейтов страницы в кэше показываются без стилей т.е. текстовой версией...с чем это может быть связано? Как исправить или забить и это ни на что не влияет?
Привет, подскажи как переопределить page.tpl.php для определенного типа материала.
Спасибо.
базовыми файлами шаблона никак, если у вас тип материала, то наверное вы имеете ввиду node.tpl.php ? ибо page.tpl.php в данном случае не уместно.
Нет, нужно именно page.tpl.php
ну раз надо, тогда добавляйте свой шаблон в базовый ввод Drupal,
теперь можно использовать свой шаблон типа:
только кеш не забудь почистить.
Большое спасибо, то, что надо!
Смешно,но мы задаём только синоним имя, а настоящее(машинное) имя можно посмотреть Главная » Управление » Конфигурация » Поиск и метаданные. Кстати при создании перекрывающей ссылки нужно использовать, как я понял, машинное имя.
имя файла должно обязательно быть машинным. Если используете синонимы, то нужно брать имя из Поиска и метаданных, как в коменте выше.