Ромка!eu

  • Отдых
  • Работа
Главная — Блоги — Ромка's blog

Темизация Drupal. Часть 1

  • Просмотреть
  • Голоса

Ромка — Вс, 01/03/2010 - 20:55

477
points

Drupal часто ругают за однообразность и узнаваемость дизайна, используемого на Drupal-сайтах. То, что за определенным сайтом стоит CMS Drupal, можно определить не только по URL-адресам специфического вида, узнаваемым путям к папкам модулей и главной странице в виде списка последних опубликованных документов, но и по стандартной двух-трехколоночной структуре сайта, наличию стандартных форм авторизации и поиска, облаков тегов, списков новых документов и других часто используемых блоков.

Однако все эти упреки несправедливы. Здесь можно процитировать старый анекдот: «Вы просто не умеете его готовить». На самом деле к Drupal при должном умении можно «прикрутить» дизайн и верстку любой сложности. Можно до неузнаваемости «темизировать», т. е. изменять внешний вид любого HTML-кода, создаваемого Drupal, — все стандартные формы, блоки, документы и списки. Просто для этого нужно понимать, как Drupal генерирует выходные данные (информация об этом была размещена в моей предыдущей статье), и уметь переопределять этот вывод. Примеров таких детально темизированных сайтов много, в одной из врезок вы можете найти ссылки на некоторые из них.

В этой статье я расскажу о трех этапах темизации, охватывающих практически 100% задач, связанных с изменением внешнего вида сайта: разработка общего шаблона для всех страниц сайта и «кастомных» шаблонов для избранных страниц; разработка шаблонов для разных типов документов и списков; изменение внешнего вида форм (поиск, авторизация и любые другие стандартные и создаваемые внешними модулями формы). Но прежде чем переходить к решению задач, познакомимся с основными используемыми терминами и структурой любой «темы оформления».

Используемые термины

Тема оформления — это набор файлов, отвечающих за внешний вид сайта. Тема оформления определяет HTML-макет страницы, используемые на ней CSS-файлы и JavaScript. Несмотря на то что шаблоны, используемые в темах оформления, позволяют исполнять PHP-код, в них не должно быть кода, не связанного с отображением информации. Тема оформления должна на входе получать готовые массивы данных, а на выходе создавать из них HTML-код. Логика программы реализуется в модулях.

Для создания тем оформления можно использовать различные шаблонные «движки» (шаблонизаторы), такие как Smarty, PHPTAL и др., однако по умолчанию в системе может быть применен только PHPTemplate — шаблонный «движок», специально разработанный для Drupal. Если надо разработать тему оформления для Drupal с нуля, то рекомендуется использовать именно его, но если на Drupal переносится существующий сайт, для которого уже разработан шаблон на основе одного из альтернативных шаблонизаторов, то можно добавить его, разместив соответствующий «движок» в папке sites/all/themes/engines вашей инсталляции Drupal. Скачать модули, интегрирующие Drupal с внешними шаблонизаторами, можно по ссылке http://drupal.org/project/Theme+engines.

Все страницы разделяются на регионы — области страницы, каждая из которых может содержать один или несколько блоков с данными. Например, по умолчанию большинство стандартных тем оформления состоит из пяти регионов: левая и правая колонка, шапка, подвал сайта и регион с основным его содержимым. Такой макет страницы наиболее популярен, поскольку удовлетворяет требованиям большинства пользователей; с его помощью удобно строить новостные сайты и блоги. Однако это не означает, что все сайты, использующие Drupal, должны иметь такую структуру. Разработчик может определять в макете страницы любое количество дополнительных регионов и размещать их в любых самых неожиданных местах.

Блок — это набор особым образом сформатированных данных. Внешний вид и содержимое блока определяются создающим его модулем и функциями темизации (подробнее об этих функциях рассказывается в третьей части предыдущей статьи), а расположение — администратором сайта. Используя специальный графический интерфейс, администратор может методом drag-and-drop разместить любой блок системы в любом из доступных регионов. Примером блока может служить форма входа в систему или облако тегов.

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

Если вас устраивает такой вариант, то вы можете дальше не читать этот текст, а поэкспериментировать с темами оформления, ссылки на которые приведены во врезке. Дальше рассказ пойдет об анатомии темы оформления для «движка» PHPTemplate.

Полезные ссылки

  • http://drupal.org/node/21951 — терминология, используемая в Drupal.
  • http://drupal.org/node/171194 — анатомия темы в Drupal.
  • http://drupal.org/node/171205 — описание содержимого *.info-файла.
  • http://www.w3.org/TR/CSS21/media.HTML — введение в media-types.
  • http://drupal.org/node/226776, http://api.drupal.org/api/file/modules/system/page.tpl.php — используемые в шаблонах переменные.
  • http://drupal.org/node/190815 — стандартные файлы шаблонов Drupal
  • http://drupal.org/project/zen — тема оформления Zen, с изучения исходных текстов которой стоит начать знакомство с темизацией Drupal.
  • http://api.drupal.org/api/drupal/developer-topics-forms_api_reference.HT... — Forms API, типы полей.

Описание схемы страницы

На картинке ниже приведена общая схема страницы Drupal.
1 — основной шаблон страницы, определяется в файле page.tpl.php;
2-1 — регион «левая колонка» (определяется переменной $left в шаблоне page.tpl.php);
2-2 — регион «основное содержимое страницы» ($content),
2-3 — регион «подвал сайта» ($footer);
3 — блоки, размещенные в левой колонке, определяются шаблонами block.tpl.php или его модификациями (block-region.tpl.php и др.);
4 — документы из «ленты новостей», определяются шаблоном node.tpl.php или его модификациями (например, node-имя_типа_контента.tpl.php).

Примеры сайтов на Drupal

  • http://zerut.ru — сборник карикатур лучших зарубежных авторов. Здесь темизировано все: списки документов, форма входа, облако тегов и т. д.
  • http://www.chopped-tomatoes.com — Интернет-магазин на Drupal.
  • http://www.csspig.com — галерея сайтов.
  • http://designslices.com — еще один красивый Drupal-сайт.
  • Список 70 самых красивых Drupal-сайтов можно найти на http://mogdesign.eu/blog/70-beautiful-drupal-sites/.
  • В блоге Дриса Байтаерта, создателя Drupal, публикуются самые интересные, причем не только с точки зрения дизайна, Drupal-сайты.

Ссылки на другие части этой статьи:

  • Часть 1. Введение
  • Часть 2. Анатомия темы оформления
  • Часть 3. Forms API и темизация
  • Часть 4. Темизация Views

Содержание всех статей: http://romka.eu/blog/my-drupal-articles

  • Drupal
  • статья
  • темизация
  • Ромка's blog
  • Quote

я в всоторге большое спасибо

Anonymousроаиьить (не проверено) → Вс, 01/17/2010 - 09:41

я в всоторге большое спасибо

  • ответить
  • quote
  • 3 points

Подскажите как можно в

Anonymous (не проверено) → Чт, 04/01/2010 - 19:14

Подскажите как можно в Друпале вывести одно фото из скажем десятка на странице тоисть чтобы на страничке показывалось только одно изображение а при щелчке на нем все остальные Спасибо!!!

  • ответить
  • quote
  • -24 points

http://designslices.com/ -

carerakjan (не проверено) → Втр, 06/15/2010 - 17:16

http://designslices.com/ - сайт красивый, но на wordpress сделан.
скажите, вы вот писали "...разработка общего шаблона для всех страниц сайта и «кастомных» шаблонов для избранных страниц;...", есть ли источники где описано, как создавать дизайн, например под главную страницу один, а под все остальные другой?

  • ответить
  • quote
  • -27 points

Да, можно :) достаточно

Антон (не проверено) → Втр, 02/15/2011 - 21:31

Да, можно :) достаточно создать в папке темы файлы page-front.tpl.php и node.tpl.php (насчёт последнего не совсем уверен). соответственно, для главной будет использован шаблон page-front.tpl.php, для остальных - node.tpl.php

  • ответить
  • quote
  • -20 points

Lumpen

OllaLolla (не проверено) → Втр, 07/27/2010 - 13:04

Мне вообще друпал все больше и больше начинает нравится

  • ответить
  • quote
  • -33 points

answer this topic

EarlineHebert30 (не проверено) → Пт, 08/06/2010 - 18:49

I propose not to wait until you earn big sum of money to buy all you need! You can just get the home loans or sba loan and feel comfortable

  • ответить
  • quote
  • -13 points

Можно проконсультировать о разработке на Drupale

ivanovsky84 (не проверено) → Пнд, 12/13/2010 - 15:15

Можно ли задать вам частный вопрос по разработке на Друпале ?

  • ответить
  • quote
  • -18 points

Хорошее начало)

Anna (не проверено) → Пнд, 12/13/2010 - 17:15

Заинтересовала статься,написана хорошо,читаем дальше=)

  • ответить
  • quote
  • -33 points

Re: Грустно, что лето проходит……!!!!

Бобров Вячеслав → Пнд, 02/07/2011 - 08:42

Грустно, что лето проходит……!!!! А август самь по себе мне тоже нравится хороший месяц!!!!

  • ответить
  • quote
  • -39 points

Прекрасный стиль изложения )))

Alexander (не проверено) → Пт, 04/08/2011 - 07:09

Спасибо!
Очень доходчиво и легко читается!
Делаю свой первый сайт на Drupal )))
Буду продолжать читать.

  • ответить
  • quote
  • -27 points

Re: Огромное спасибо

Меховщиков Руслана → Пнд, 05/16/2011 - 17:48

Огромное спасибо

  • ответить
  • quote
  • -20 points

переходим на Друпал

Evgen (не проверено) → Чт, 11/10/2011 - 23:52

Спасибо за статью. Новый проект делаю на Друпале, поэтому ваша статья пригодилась.

  • ответить
  • quote
  • -7 points

Мой 1й сайт

Roniks (не проверено) → Ср, 12/21/2011 - 20:37

Привет! С Наступающим! Может подскажешь, что за бяка случилась у меня на сайте komp-torg.com На некоторых страницах после добавления (боюсь что не очень умело) яндекс метрики, блоки справа вниз под центр сьехали. Пока только учусь, не все понимаю. Что отвечает за размещение блоков? Поставил FireBug для мозилы, вижу, что классный инструмент, и с помощью его вижу ошибку, но не хватает тямы, чтоб отредактировать им. Просьба, помогите, кто может, советом, ну или делом, если есть настроение и время. Наверное есть какие то тестилки сайтов на предмет ошибок, но я пока не нашел.
Заранее спасибо за участие в решении проблемы
Моя ася 421353214, скайп Roniks

  • ответить
  • quote
  • -4 points

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать тэг <code></code> для подсветки синтаксиса программного кода. The supported tag styles are: <foo>, [foo].
  • You may quote other posts using [quote] tags.

Подробнее о форматировании

CAPTCHA
Если вы человек, а не робот, то введите текст с картинки. Если вы робот, то велкам ту майкрософт.ком.

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Несколько статей о Друпале
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Пример разработки плагина для модуля CCK
  • Темизация Drupal. Часть 4. Темизация Views
  • Разработка модуля для Drupal. Часть2

Популярные заметки

  • Пример разработки плагина для модуля CCK
  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Кнопки Home, End и Page Up, Page Down в Mac OS
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Темизация Drupal. Часть 1
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Модуль Vote Up/Down для Drupal 6
  • Вращение изображений при помощи Javascript
  • Темизация Drupal. Часть 4. Темизация Views

Подписка


Последние комментарии

  • Oz → Швабрашвабр2 → слабовато для
  • loan → Вращение изображений при помощи Javascript → answer this topic
  • CopelandLacey33 → Доставка → reply this post
  • vitsss → Авторизация на Drupal-сайте с помощью аккаунта вКонтакте → hostinh nic.ru and vk api
  • dimasikov → Автоматическая "газетная" верстка (верстка в несколько колонок) → Я похожее делал для с этим
  • max2012 → Разработка сайта на Drupal. Часть 2. Архитектура Drupal. → Подвесные потолки Опосля
  • Антон → Темизация Drupal. Часть 4. Темизация Views → Отлично!
  • Itsmypersonal → Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Пхукет → Пхукет - да!
  • Sheldon → Перетаскивание ячеек таблицы. Table drag and drop — плагин для jQuery → Здравствуйте! Подскажите
  • Sheldon → Home sheep home → Одна из тех игр в которые

Новые заметки

  • Проба пера в HTML5 + canvas. Эффект ластика
  • Шесть рукопожатий
  • Доклад на DrupalConfMoscow 2011
  • Статусы разных сущностей в Друпале 6
  • Футер, прибитый к низу страницы
  • Путешествие по Перу и Боливии. Часть 2
  • Путешествие по Перу и Боливии. Часть 1
  • Несколько панорам из путешествия по Перу и Боливии
  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Home sheep home

Тэги

dckyiev09 Drupal jquery Боливия Отдых Перу Работа Штуки-дрюки зима 2010 модуль статья темизация
еще тэги

Вход для пользователей

Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Зарегистрироваться
  • Запросить новый пароль

Навигация

  • Exchange rate
  • Vote up/down
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахских тенге — 20,3352 (+0.03)
  • 10 Украинских гривен — 37,6101 (+0.06)
  • 10 Китайских юаней — 47,9611 (+0.04)
  • 100 Японских иен — 39,6909 (-0.04)
  • 1 Доллар США — 30,2385 (+0.05)
  • 1 Евро — 39,7425 (-0.02)
  • 10000 Белорусских рублей — 35,9554 (-0.07)
  • 1 Турецкая лира — 17,1829 (-0.03)

10 случайных заметок

  • Лето 2007. Путешествие в Камбоджу – Таиланд – Малайзию. Часть 7. Бангкок.
  • Семинар "Управление сайтом с помощью CMS Drupal"
  • Куба. Лето 2008. Часть 5
  • Баг jQuery в Firefox 3 и WebKit
  • Доклад на DrupalConfMoscow 2011
  • Разработка сайта на Drupal. Часть 3. Модули Drupal.
  • Модуль скидок для электронного магазина работающего на Drupal + eCommerce
  • Швабрашвабр.ру — пример коллективного блога с элементами соц сети, построенный на CMS Drupal
  • Пример разработки плагина для модуля CCK
  • Куба. Лето 2008. Часть 4

Случайные фото

Я на
Еще горы
Здание замка Акерхус
И у люююбви у нааашеей сееела...
Крым
Сочи ночью
Без имени
Фонтаны в Осло работают даже зимой. Карл Юхан Гате
Закат в Гаване
Оденсе
В Сингапурском зоопарке. Будда?
Пустыня
Градиент
А это уже полуостров Крым, на пути в Керчь.
Парашютист в Варадеро
Вид на Осло-фьерд со стены замка
  • Отдых
  • Работа

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.