Иногда, при создании сайтов на 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)
не выходит каменный цветок... :(
всё, вышел-таки. Спасибо огромнейшее за ваш труд. А как сделать так, чтобы общая тема оформления осталась (то есть колонки справа - слева и т.п.), а в теле страницы я могла бы писать и рисовать что вздумается, вместо rss ленты новинок? Ну или не вместо, а над/под ними?
Скопируйте текущий файл page.tpl.php в корень вашей темы и переименуйте его в page--front.tpl.php. И далее редактируете его как вам необходимо, если знакомы с HTML - то проблем не возникнет.
А у меня таки каменный цветок не выходит, сколько не крихтел (((
В admin/appearance надо просто нажать кнопку сохранения или править что-то ещё надо?
Нужно создать файл под именем
в корне вашего шаблона. Далее переходить в раздел "Оформление" и пересохраняете ваш шаблон. Далее переходите в раздел "Производительность" и жмёте "Очистить кеш". На этом всё!
спс это помогло, а сколько тире надо в файле 2 или одно? на картинке 2 тире
Если Drupal 6, то одно тире. Если Drupal 7- то два.
С самого начала, я сделал шаблон с одним файлом 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 .
И самое интересное , что если в админке обновить страницу на которой выдает эти нотисы - они пропадают. Сам сайт работает корректно и вроде все модули тоже отображаются корректно.
Как избавится от Нотисов ?
$head, $head_title,$styles, $scripts используются в html.tpl.php - удалить из page--front.tpl.php. А далее вам говорят, что вы используете не определённое значение,однозначно что лишнее понаписали.
Спасибо, вроде разобрался.
Кхм, или зайти в настройки - система - информация о сайте - главная страница и там назначить любую страницу или представление (views) в качестве главной. Модули типа panels этому только способствуют. Я тоже люблю голый код, но философия друпала предполагает делать изменения как можно меньше касаясь кода.
Вы наверное путаете с joomla. Drupal никогда не был просто cms системой, он всегда позиционировался как cmf, что предполагает написание большого количества кода под свои нужды.
так а зачем изобретать велосипед, если можно просто панелями (модуль panels) изменить вид любой страницы? разве что главная и остальные страницы сайта координально отличаются...
Спасибо за решение!
Но как потом больше никогда не возвращаться к этой странице?
Пример:
Сайт загружается и самая первая страница - это огромная картинка, которая является ссылкой. Пользователь кликает и попадает на нормальный сайт, с нормальным шаблоном. И пользователю больше никогда не нужно возвращаться на эту первую страницу (на которой картинка).
Но, когда пользователь пытается перейти на Гравную (или Home), то открывается снова фотография на всю страницу!
при первом заходе записывать какое-то значение в сессию и дальше написать условие на проверку этого значения. Ну а если с PHP не знакомы - то в помощь этот модуль.
Спасибо! Отличный модуль!
Спасибо за статью, пригодилась очень!
Спасибо огромнейшее за статью! Очень помогли!!!
Здравствуйте
подскажите, никак не пойму, и найти нигде не могу, как перекрыть шаблон сайта отдельным шаблоном форума? Подозреваю функцию в template.php надо вписывать?
Статья - супер! Спасибо Вам огромное). Но есть вопросик. У меня есть меню. Как сделать так, чтобы это меню сохранилось и на других страницах? Если я создал его на этой странице сам.
добавить данное меню и page.tpl.php тоже