• урок
  • pantey

Перекрытие любой страницы в Drupal на свою

06.07.2012

Иногда при создании сайта, возникают такие моменты, что нам необходимо перекрыть существующую страницу в 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)

Profile picture for user Виталий
Ruslan
28.01.2013

Здравствуйте!
У меня 1 нода создаласть, и я создал файл page—node—1.tpl.php, но drupal этот файл не видит
Что может быть?
Спасибо!

Profile picture for user pantey
pantey
28.01.2013

а нода имеет nid/1??? Если да, то очистите кеш сайта и браузера, и пересохраните шаблон!

Profile picture for user Виталий
Ruslan
28.01.2013

Там написано node/1 а не nid/1.
Как должно быть?

Profile picture for user Виталий
Ruslan
28.01.2013

Смотрите, у вас будто бы одна длинная черта идет в имени файла page—node—1
Я ставлю -- так, есть ли разница?
Удалил кеш перезапустил шаблон все равно не показывает

Profile picture for user pantey
pantey
28.01.2013

Да разница есть, должно стоять 2 тире, если используете Drupal 7. Но вы меня не поняли! Url в drupal строятся как

site_name/node/nid

nid - индентификатор ноды. Если вы не используете синонимы, то последняя цифра в адресной строке браузера и будет nid данной ноды. Поэтому файл переопределения должен выглядеть как

page--node--nid.tpl.php
Profile picture for user Виталий
Ruslan
28.01.2013

Сделал как вы написали, но не работает
Друпал

Profile picture for user Виталий
Ruslan
28.01.2013

Ссылку не открывает

www.spasana.kz/img/drupal.jpg

Profile picture for user pantey
pantey
28.01.2013

А в самом файле

page--node--1.tpl.php

вы что пишите???

Profile picture for user Виталий
Ruslan
28.01.2013

Внутри файла page--node--1.tpl.php обычный html

Profile picture for user pantey
pantey
28.01.2013

А вы точно 7ку используете? Так как чудес вроде этих ни разу не встречал, где то ошибка. попробуйте создать другую ноду и попробовать переопределить ее! Даже не знаю чем вам еще помочь! Если что то придет в голову - отпишусь.

Profile picture for user Виталий
Ruslan
28.01.2013

Да 7 версия, да я 5 нодов создал и 5 файлов
Тишина все равно.
Спасибо вам!

Profile picture for user Виталий
Ruslan
30.01.2013

Здравствуйте!
Вы можете выложить свой пример как вы обращаетесь к файлу
page--node-1.tpl.php. Пожалуйста, а то я по всячески перепробовал не получается, и какая версия друпала у вас? у меня 7.19
Спасибо вам!

Profile picture for user pantey
pantey
30.01.2013

Специально для тебя! всё в видео видно. Качать здесь

Profile picture for user Виталий
Ruslan
30.01.2013

Огромное спасибо вам!
Помогло, теперь все работает. Причина была в очистки кеша, я чистил кеш браузера.

Profile picture for user Виталий
Гость
31.05.2013

Ой ей. Вот это полено=)

Profile picture for user Виталий
Edgars
06.12.2013

При установке модуля Shoutbox, соответственную страницу он создал сам по адресу http : //www.трампампам.ру/shoutbox. Но если делать замену таким файлом page-shoutbox.tpl.php то ничего не выходит. Впрочем интересует как и саму чат комнату вывести на отдельной страничке.

Profile picture for user Виталий
Streliciya
16.12.2013

Можно вопросик не совсем по теме?
У меня сейчас сайт хоть и работает уже, но часто что-то меняю/добавляю и т.п.
Настройки кэша стоят: мин. и макс. время, включено сжатие и т.д.
Вопрос: после последних АПдейтов страницы в кэше показываются без стилей т.е. текстовой версией...с чем это может быть связано? Как исправить или забить и это ни на что не влияет?

Profile picture for user Виталий
Женя
06.04.2014

Привет, подскажи как переопределить page.tpl.php для определенного типа материала.

Спасибо.

Profile picture for user pantey
pantey
07.04.2014

базовыми файлами шаблона никак, если у вас тип материала, то наверное вы имеете ввиду node.tpl.php ? ибо page.tpl.php в данном случае не уместно.

Profile picture for user Виталий
Женя
07.04.2014

Нет, нужно именно page.tpl.php

Profile picture for user pantey
pantey
07.04.2014

ну раз надо, тогда добавляйте свой шаблон в базовый ввод Drupal,

<?php function themeName_preprocess_page(&$vars) {
 if (isset($vars['node']->type)) { 
$vars['theme_hook_suggestions'][] = 'page__' . $vars['node']->type; 
} 
};?>

теперь можно использовать свой шаблон типа:

page--nameType.tpl.php

только кеш не забудь почистить.

Profile picture for user Виталий
Женя
09.04.2014

Большое спасибо, то, что надо!

Profile picture for user Виталий
Никифор
19.11.2014

Смешно,но мы задаём только синоним имя, а настоящее(машинное) имя можно посмотреть Главная » Управление » Конфигурация » Поиск и метаданные. Кстати при создании перекрывающей ссылки нужно использовать, как я понял, машинное имя.

Profile picture for user Виталий
Анастасия
23.02.2015

имя файла должно обязательно быть машинным. Если используете синонимы, то нужно брать имя из Поиска и метаданных, как в коменте выше.