• урок
  • pantey

Создание своего шаблона для Drupal 7 на примере. Разметка регионов. Часть 2.

08.10.2012

После того, как мы с вами из прошло урока вывели дизайн из под Drupal, перед нами встала следующая задача, теперь нам необходимо произвести разметку шаблона на регионы. Напомню вам, что регионы нам нужны для дальнейшего вывода в них блоков. Давайте внимательно посмотрим на дизайн, и определим, где у нас должна быть изменяемая информация.

Начнём с шапки сайта.

Мы видим, что нам необходимо вывести название сайта, его слоган и меню.

Название и слоган в регионе как вы понимаете не нуждаются, а вот меню давайте сделаем регионом, для того, что мы смогли выводить любое наше меню. Дальше идёт изображение, которое остаётся фиксированным на всём сайте, а под ним расположены ещё 3 блока с изображениями и информацией, информация в блоках так же является изменяемой и поэтому будем выводить их в регионах.

Далее у нас идёт вывод контента и справа расположен ещё один блок с выводом последних статей сайта, они так же нуждаются в регионах. Замечу, что в Drupal 7, в отличии от Drupal 6, вывод контента происходит через блоки.

И теперь у нас остался только подвал сайта, который не нуждается в регионе. Как мы видим, нам необходимо создать 6 регионов и произвести вывод названия сайта и его слогана.

Приступим, начнём опять же с шапки сайта и займёмся выводом названия сайта и слогана, для этого открываем наш файл

page.tpl.php

И смотрим, где у нас в коде прописано название и слоган

Теперь, нам необходимо заменить значения в шаблоне на стандартные переменные вывода Drupal.

Вывод названия сайта записывается как

 print $site_name;

Вывод слогана сайта записывается как

 print $site_slogan;

И будет выглядеть вот так

Для демонстрации как это работает, вы можете изменить информацию о сайте, которая находится здесь «Конфигурация->Информация о сайте». Полный список переменных для page.tpl.php можно посмотреть вот здесь. Теперь займёмся созданием региона под наше меню: Для начала нам нужно придумать как будет называть данный регион, мудрить не будем и назовём его как «header_menu». Теперь нам нужно дать понять Drupal, что у нас есть новый регион, для этого открываем файл

Название_шаблона.info

И пишем следующее

regions[header_menu] = Меню в шапке сайта

Далее необходимо указать Drupal, где данный регион будет находиться. Для этого открываем файл

page.tpl.php

И вместо кода с меню, пишем вывод нашего региона

 print render($page['header_menu']);

После этого пересохраняем наш шаблон, при необходимости чистим кеш сайта и смотрим, что получилось

Видим, что меню у нас исчезло, ничего страшного в этом нет, так и должно быть. Зато если пройти в «Структура->Блоки», то мы увидим, что нам стал доступен новый регион

Теперь нам необходимо проделать тоже самое, еще 5 раз, для вывода всех регионов. Здесь работа индентична с выводом региона для меню, поэтому я просто выложу уже готовый результат как должен выглядеть

Название_шаблона.info

И

page.tpl.php

И список доступных регионов

На этом с разметкой закончено.

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

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

Profile picture for user 1541
Websculptor
04.03.2013

print render($page[header_menu]); - мне пришлось переменную в апострофы брать - print render($page['header_menu']); - иначе друпал (7.20) хоть и выводит, но ругается ошибками - Notice: Use of undefined constant header_menu - assumed 'header_menu' в функции include() (строка 47 в файле /home

Profile picture for user pantey
pantey
04.03.2013

всё правильно, в уроке опечатка - поправил. Спасибо!

Profile picture for user 1541
Websculptor
10.03.2013

При выводе в регионе потом на странице контента невозможно в такой теме редактировать сам материал с его страницы, только через содержимое. Слой админки появляется, а "редактировать" "просмотр" нет.

Profile picture for user pantey
pantey
10.03.2013

наверное вам сюда

Profile picture for user 1541
Сергей
08.04.2013

Как кодировку настроить? regions[header_menu] = Меню в шапке сайта. В настройках блоков вместо "Меню в шапке сайта" у меня квадратики выводятся.

Profile picture for user pantey
pantey
08.04.2013

через что редактируете? если через notepad++, то пункт кодировка -> UTF-8 без BOM

Profile picture for user 1541
Сергей
08.04.2013

Помогло. Спасибо

Profile picture for user 1541
RS13
06.05.2013

Тут проблемка одна:
Создал регион. Все как написано выше.
Захожу в Структура--Блоки
А там... Полно разных блоков, которых я не создавалл а моего нет.
Что это такое?

Profile picture for user 1541
Марат
08.05.2013

Ага, такая же беда

Profile picture for user pantey
pantey
10.05.2013

скорее всего вы не правильно прописали регионы в info файле. По умолчанию drupal выводит стандартные регионы, если они не указаны в info

Profile picture for user 1541
Дамир
21.10.2013

имхо они наверно не отключили стандартную тему, надо бы обозначить в уроке чтобы отлючали полностью стндартную тему и еще у мня траблы с кэшем наверно чтобы блоки и описания появлялись нужно чистить кэш и обновлять тему (тут не доконца понимаю кагда нужно чистить и сохранять изменения)

Profile picture for user 1541
Владимир
27.11.2013

Спасибо, у меня такая же проблема была, возился целый час. Автор вносите пожалуйста корректировки в уроки.)

Profile picture for user 1541
Михаил
15.05.2013

За уроки 5+ !

Profile picture for user 1541
vanich1
22.05.2013

делал все по рекомендации, хочу добавить, что друпал стоит на openserver и после создания всех файлов темы инфо и т.д. друпал стал страшно ругатся, специально проверил чтобы была кодировка utf-8 а оказалось что нужно было указать кодировку ansi возможно просто потому, что это все из под виндовс.
2. я начал разрабатывать тему под абсолютно свежеустановленным друпалом и это привело к проблеме, ведь ни меню ни контента не было никакого. только когда добавил пару статей и сделал меню, чтото стало вырисовыватся. но пока не получил 100% работающий вариант.
надеюсь мои комменты помогут таким же как свежеприбывшим в клуб друпал))

Profile picture for user 1541
Дамир
21.10.2013

ничего подобного всё делаю в UTF-8 без BOM, под windows так и надо всегда использовать UTF

Profile picture for user 1541
uzdevboy
04.07.2013

kogda ya v authorizate hochu ? U menya Access denied , kak ispravit ?

Profile picture for user 1541
Andriy
26.08.2013

Подскажите, пожалуйста, как для drupal 7 вставить регион в node.tpl.php после определенного количества абзацев ноды, нашел только для 6 версии http://content-management-systems.info/node/3633

Profile picture for user pantey
pantey
26.08.2013

вот здесь описано

Profile picture for user 1541
Сергей
12.09.2013

Позиция появилась. Но когда пытаюсь туда вставить блок пишет: "Блок не может быть помещен в этот регион."
С чем это может быть связано?

Profile picture for user 1541
Сергей
12.09.2013

Разобрался - все стало норм после чистки кеша

Profile picture for user 1541
Григорий
09.10.2013

Переделываю шаблон из Drupal6 в Drupal7 да что-то не получается. На что обратить внимание?

Profile picture for user pantey
pantey
11.10.2013

Обратите внимание на полную api темизации для Drupal 7, она в корне изменилась, и ничего похожего с 6ой не имеет.

Profile picture for user 1541
VadimSafin
15.11.2013

Начал создавать шаблон по урокам. Все получалось до тех пор пока не очистил кеш. Потом пропали меню админки! Подумал что я случайно удалил или сделал не то, установил заново друпал, и в этом же моменте опять все пропало! Не открывается админка, нельзя добавить блоки и т.д.! Попробовал обратно поставить шаблоны по умолчанию, но толку 0. Подскажите пожалуйста что я делаю не так? Добавил несколько скиншотов для полной ясности. http://zalil.ru/34814225

Profile picture for user 1541
VadimSafin
15.11.2013

Неужели никто с этим не сталкивался?

Profile picture for user pantey
pantey
15.11.2013

вы хотя бы пример кода скинилу, который вы добавляли в шаблон и потом у вас все пропало.

Profile picture for user 1541
VadimSafin
15.11.2013

Вот сам шаблон http://zalil.ru/34814934 . Подскжате пожалуйста как авторизоватся на сайте с таким шаблоном?

Profile picture for user 1541
VadimSafin
20.11.2013

Попробовал в этот раз переделать стандартный шаблон. Так же дошел до очистки кеша и все пропало! Выдает вот такую ошибку Notice: Undefined index: name в функции block_help() (строка 69 в файле /home/insof943/public_html/integral2/modules/block/block.module).

Profile picture for user pantey
pantey
20.11.2013

на чем drupal подняли? на denwer или xampp?

Profile picture for user 1541
VadimSafin
20.11.2013

На хосинге

Profile picture for user pantey
pantey
20.11.2013

тогда почитайте документацию вашего хостинга, вы уверены что устанавливаете его в правильную директорию!

Profile picture for user 1541
Борис
20.12.2013

Такая же беда, как-то решили? У меня на OpenServer работает.

Profile picture for user 1541
VadimSafin
20.11.2013

Друпал чистый, кроме установленной локализации ничего не менял ни 1го модуля не ставил(

Profile picture for user 1541
weifast
01.12.2013

Здравствуйте
print render($page['header_menu']); - ни чего не отображается кроме стандартных регионов. http://prntscr.com/27tjn6
print render($page[header_menu]); так только с ошибкой. http://prntscr.com/27tjxt
вот .инфо http://prntscr.com/27tk46

Profile picture for user pantey
pantey
01.12.2013

кеш чистили?

Profile picture for user 1541
weifast
06.12.2013

отключил шаблоны и заработало, но теперь не могу добавить другой регион.
Сначала создал этот регион http://prntscr.com/28z5z2 , и он отобразился http://prntscr.com/28z6cw .
Создал вот так
http://prntscr.com/28z6su
http://prntscr.com/28z6yi
получил
http://prntscr.com/28z74d

Profile picture for user 1541
weifast
06.12.2013

полазил в настройке шаблона, и заработало, пока всё очень странно)

Profile picture for user 1541
Сергей007
21.12.2013

Подскажите пожалуиста как вывести в своем шаблоне блок(меню, вьюс и пр неважно) в div теги в определенном месте в друпале 6. В фаиле page-front.tpl.php пробовал делать так же, вылезает ошибка на главной, на седьмом друпале все замечательно ваши уроки очень доходчивы, саит однозначно в закладки.

Profile picture for user 1541
Сергей007
22.12.2013

Все разобрался в дру6 немного по др там с регионами не срослось. http://тверьоблпроект.рф/ Слева новости вывел вот такои фиговиной $block = module_invoke('views', 'block', 'view', 'news-block_1');
print $block['content'];
Просто вывести надо было блок ньювс вот вставив эту строку news-block_1

/admin/build/block/configure/views/news-block_1 в настроиках блока в конце строки собственно что вывести надо было. Мож кому поможет... Спасибо еще раз за хорошии саит.

Profile picture for user 1541
Streliciya
28.04.2014

Здравствуйте.
Худо бедно разбираюсь с созданием своего шаблона...возник вопрос:
На главной у меня слайдер (большой), на других страницах его быть не должно, отключила показ (оставила только на главной). На других страницах пустой блок на месте слайдера. Как его убрать? Поднять содержимое под меню.
Спасибо.

Profile picture for user 1541
Эдуард
05.05.2014

Чувак я хочу от тебя детей! спасибо тебе за то что ты делаешь. в интернет искал про темизацию кругом шлак. а ты все разжувал и выложил все понятно и ясно с первого прочтения..

Profile picture for user 1541
Мазепа
18.11.2014

Столкнулся с проблемой, после того как все это проделал, почистил кэш, но не могу обратно вернутся в админку, самой панели не видно, когда вбиваю www.sitename/user ничего не происходит, никакой формы входа, а по www.sitename.com/admin - доступ запрещен и так же нет никакой формы входа в админку, как с этим бороться то ?

Profile picture for user 1541
Дима
20.11.2014

Подскажите как сделать чтобы не было квадратиков место русских символов
В htaccess приписывал AddDefaultCharset utf-8, но не получается

Profile picture for user pantey
pantey
20.11.2014

изменить кодировку файла на UTF-8 (без BOM)

Profile picture for user 1541
АндрейL
09.12.2014

подскажите, как задать стили для блока меню header_menu, в примере Вы удалили class='active', как сделать свой стиль меню?

Profile picture for user 1541
Mist
13.03.2015

http://drupalfly.ru/lesson/block_tpl

Profile picture for user 1541
max.twax@yandex.ru
12.03.2015

Пытаюсь адаптировать другой шаблон.
Регионы создал, разместил.
Проблема с меню. Вместо такого отображения:
Оригинальное меню

какой-то бред:
Бред

Все стили написаны уже. Не понимаю в чем проблема.

Profile picture for user 1541
Mist
13.03.2015

Установите плагин firebug в firefox и смотрите, какие стили прицепились к странице, а какие нет. Может где-то синтаксическая ошибка, когда прописывали стили в шаблоне, а может просто не почистили кэш.

Profile picture for user 1541
Max.Twax
13.03.2015

Уже решил. Пришлось вместо

Profile picture for user 1541
lemoscow
02.04.2015

Подскажите , проделал все как в уроке , но странно вывелся только блок контента и меню (после того как прописал код в блоке) , остальные регионы хоть тресни не выводится .т.е. блоки как у вас на скринах есть все настроено , а на сайте не появляются , весь код перекопал ну нет ошибки ? Может что из модулей не включено Друпал 7,35

Profile picture for user 1541
Max
02.04.2015

Может синтаксическую ошибку допустили где-то?