• урок
  • pantey

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

02.07.2012

Иногда, при создании сайтов на Drupal, заказчики хотят вместо главной основной страницы Drupal (куда мы выводим как правило весь новый контент сайта) увидеть нечто своё. Это может быть всё что угодно, например слайд с продукцией компании или флеш анимация с кнопкой для входа на сайт и так далее. Эта страница может отличаться как дизайном так и контентом от всего сайта. Для решения такой задачи, некоторые разработчики идут (как им кажется) единственно верным путём, а именно изменение файла: .htaccess

Который находится в корне сайта, где можно переписать вместо (как правило на всех сайтах) «index.php» на название своего файла, который необходимо загружать при загрузки сайта. Работать то оно будет, но как быть если на такой странице нам необходимо вывести регион, куда в дальнейшем нужно вставить блок, да к тому же, что бы заказчик смог это проделывать самостоятельно из админки сайта?

Об этом более конкретно. Напомню вам, что в Drupal для темизации встроен движок «phptemplate», который очень гибок в работе и позволяет темизировать практически каждый кусочек Drupal. И что бы нам изменить главную страницу сайта достаточно в корне папки с вашим шаблоном сайта создать файл:

Drupal 6

page-front.tpl.php

Drupal 7

page—front.tpl.php

Внутри которого вам необходимо вставить ту вёрстку страницы, которую хотите отображать. Так же этот файл поддерживает и регионы, поэтому вам достаточно прописать в данном файле вывод региона и он так же будет отображать в «структуре сайта» - в который вы сможете вывести всё что угодно. Не забудьте только при этом прописать регионы, скрипты и стили в файл «Название_темы.info» Иначе корректной работы вам ни кто не гарантирует.

Продемонстрирую на примере Drupal7.

1.Создаём файл page—front.tpl.php и помещаем в корень нашего шаблона

2. Впишем для примера вот такую разметку

<h2>Это теперь  главная страница нашего сайта</h2>

Не забудьте сохранить его в кодировке UTF-8

3.Далее переходим по пути Название_сайта/admin/appearance И пересохраняем настройки

3.Переходим на главную и видим

Что главная страница перекрыта нашим файлом. У кого не отобразиться с первого раза – то необходимо почистить кеш сайта по пути: Название_сайта/admin/config/development/performance

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (21)

Profile picture for user 1541
Виктория
23.07.2013

не выходит каменный цветок... :(

Profile picture for user 1541
Виктория
23.07.2013

всё, вышел-таки. Спасибо огромнейшее за ваш труд. А как сделать так, чтобы общая тема оформления осталась (то есть колонки справа - слева и т.п.), а в теле страницы я могла бы писать и рисовать что вздумается, вместо rss ленты новинок? Ну или не вместо, а над/под ними?

Profile picture for user pantey
pantey
23.07.2013

Скопируйте текущий файл page.tpl.php в корень вашей темы и переименуйте его в page--front.tpl.php. И далее редактируете его как вам необходимо, если знакомы с HTML - то проблем не возникнет.

Profile picture for user 1541
Allaur
28.08.2013

А у меня таки каменный цветок не выходит, сколько не крихтел (((
В admin/appearance надо просто нажать кнопку сохранения или править что-то ещё надо?

Profile picture for user pantey
pantey
29.08.2013

Нужно создать файл под именем

page--front.tpl.php

в корне вашего шаблона. Далее переходить в раздел "Оформление" и пересохраняете ваш шаблон. Далее переходите в раздел "Производительность" и жмёте "Очистить кеш". На этом всё!

Profile picture for user 1541
Damir
20.10.2013

спс это помогло, а сколько тире надо в файле 2 или одно? на картинке 2 тире

Profile picture for user pantey
pantey
21.10.2013

Если Drupal 6, то одно тире. Если Drupal 7- то два.

Profile picture for user 1541
Snowball
31.10.2013

С самого начала, я сделал шаблон с одним файлом page.tpl.php , прописал в него все регионы, которые есть в info. После чего я понял что необходимо сделать так чтобы другие страницы отображались в другом шаблоне(виде) ибо главная страница наворочена и неудобно для просмотра других страниц на сайте.Я переименовал файл page.tpl.php в page--front.tpl.php и создал файл page.tpl.php в который скопировал все что в page--front.tpl.php и немного урезал (сделал дизан проще)
Теперь в админке постоянно появляются Notice в которых ругается на undefined variable в page--front.tpl.php, а именно $head, $head_title,$styles, $scripts и так же на другие блоки которые я определил в файле info пишет сообщение типа Use of undefined constant sidebar_second -assumed 'sidebar_second' in include() (line xxx of .../page--front.tpl.php) .
Должен заметить что в page--front.tpl.php используется больше регионов и блоков чем в page.tpl.php .
И самое интересное , что если в админке обновить страницу на которой выдает эти нотисы - они пропадают. Сам сайт работает корректно и вроде все модули тоже отображаются корректно.
Как избавится от Нотисов ?

Profile picture for user pantey
pantey
31.10.2013

$head, $head_title,$styles, $scripts используются в html.tpl.php - удалить из page--front.tpl.php. А далее вам говорят, что вы используете не определённое значение,однозначно что лишнее понаписали.

Profile picture for user 1541
Snowball
05.11.2013

Спасибо, вроде разобрался.

Profile picture for user 1541
Tantacula
04.05.2014

Кхм, или зайти в настройки - система - информация о сайте - главная страница и там назначить любую страницу или представление (views) в качестве главной. Модули типа panels этому только способствуют. Я тоже люблю голый код, но философия друпала предполагает делать изменения как можно меньше касаясь кода.

Profile picture for user pantey
pantey
04.05.2014

Вы наверное путаете с joomla. Drupal никогда не был просто cms системой, он всегда позиционировался как cmf, что предполагает написание большого количества кода под свои нужды.

Profile picture for user 1541
Kevin
13.05.2014

так а зачем изобретать велосипед, если можно просто панелями (модуль panels) изменить вид любой страницы? разве что главная и остальные страницы сайта координально отличаются...

Profile picture for user 1541
Roman
15.11.2014

Спасибо за решение!

Но как потом больше никогда не возвращаться к этой странице?
Пример:
Сайт загружается и самая первая страница - это огромная картинка, которая является ссылкой. Пользователь кликает и попадает на нормальный сайт, с нормальным шаблоном. И пользователю больше никогда не нужно возвращаться на эту первую страницу (на которой картинка).
Но, когда пользователь пытается перейти на Гравную (или Home), то открывается снова фотография на всю страницу!

Profile picture for user pantey
pantey
15.11.2014

при первом заходе записывать какое-то значение в сессию и дальше написать условие на проверку этого значения. Ну а если с PHP не знакомы - то в помощь этот модуль.

Profile picture for user 1541
Roman
17.11.2014

Спасибо! Отличный модуль!

Profile picture for user 1541
Anomaly
22.02.2015

Спасибо за статью, пригодилась очень!

Profile picture for user 1541
Анастасия
23.02.2015

Спасибо огромнейшее за статью! Очень помогли!!!

Profile picture for user 1541
Олег
03.01.2016

Здравствуйте
подскажите, никак не пойму, и найти нигде не могу, как перекрыть шаблон сайта отдельным шаблоном форума? Подозреваю функцию в template.php надо вписывать?

Profile picture for user 1541
Александр
28.02.2018

Статья - супер! Спасибо Вам огромное). Но есть вопросик. У меня есть меню. Как сделать так, чтобы это меню сохранилось и на других страницах? Если я создал его на этой странице сам.

Profile picture for user pantey
pantey
28.02.2018

добавить данное меню и page.tpl.php тоже