Темизация Drupal. Статья в новом номере PC Magazine/RE

Главные вкладки

Аватар пользователя Ромка Ромка 19 ноября 2009 в 16:10

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

Однако все эти упреки не оправданы, к Друпалу, при должном умении, можно прикрутить дизайн и верстку любой сложности. До неузнаваемости можно "темизировать", то есть изменить внешний вид, любой html-код, создаваемый Друпалом: все стандартные формы, блоки, документы и списки.

В ноябрьском номере журнала PC Magazine/RE опубликована моя статья о "темизации" Друпала, в ней рассказано о трех этапах темизации, которые покрывают собой практически 100% задач, связанных с изменением внешнего вида сайта:

  • разработка общего шаблона для всех страниц сайта и "кастомных" шаблонов для избранных страниц;
  • разработка различных шаблонов для разных типов документов и списков;
  • изменение внешнего вида форм (поиск, авторизация и любые другие стандартные и создаваемые внешними модулями формы).

Кроме того, в последнем разделе рассказано об основах Forms API Друпала.

upd Хабраюзеры могут плюсануть статью тут, а то ее там минусуют без комментариев.

Комментарии

Аватар пользователя Ромка Ромка 19 ноября 2009 в 16:40

PVasili wrote:
Ромка - молодца.
Только ссылки в конце странные, pig при чем? Smile

--
з.ы. поставь заглушку на .com (у ht-systems)


Василий, про ссылки не понял, о чем речь? Я эту версию, которая в интернете опубликована, еще перечитать не успел, возможно ее как-то "адаптировали".
PVasili wrote:
з.ы. поставь заглушку на .com (у ht-systems)

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

Аватар пользователя Nikit Nikit 19 ноября 2009 в 16:35

хм, кто ругает? пальцем тыкните. говносайты не в счёт. ТЗ главнее Smile

p.s. Надо взять за подпись в комментах: сперва изучите тематизацию в друпал!

Аватар пользователя Nikit Nikit 19 ноября 2009 в 16:39

Хорошая статья для начинающего друпалера, посылать их сюда надо будет.
Но скажу что тяжеловат для тех кто не в теме. Если я "в танке", может это какой-то цикл из статей в этом журнале?

Аватар пользователя cpu cpu 19 ноября 2009 в 17:22

"PVasili" wrote:
--
з.ы. поставь заглушку на .com (у ht-systems)
"Ромка" wrote:

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

- объясните ламеры, это вы о чем?

Аватар пользователя goodboy goodboy 19 ноября 2009 в 17:38

Замечательная статья, спасибо! В совокупности с http://drupaldance.com/blog/%D1%82%D0%B5%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D... решает почти все вопросы с темизацией в Друпал6.

Но вот я не нашел для себя ответа на простой вопрос: как переопределить такую простую тему, как на примере.

function theme_box($title, $content, $region = 'main') {
  $output = '<h2 class="title">'. $title .'</h2><div>'. $content .'</div>';
  return $output;
}

На Друпал5 достаточно было прописать в template.php function MОЯ_ТЕМА_box()
Как сделать это на Друпал6. Template.php сейчас пустой, не знаю что в него писать.

Извините, если не совсем в тему

Аватар пользователя goodboy goodboy 20 ноября 2009 в 11:09

Nikit, я так попробовал в первую очередь - почему-то не получилось. Друпал не видит функции, помещенные в template.php (пробовал и с и без заключительного ? >). Поэтому для собственных функций приходится создавать модуль. Где-то я отчаянно туплю, похоже Wink Хорошо, спасибо, буду разбираться.

Аватар пользователя index index 21 ноября 2009 в 20:25

Goodboy wrote:
Друпал не видит функции, помещенные в template.php

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

Аватар пользователя sadmin sadmin 19 ноября 2009 в 18:19

Понравилось. На днях знакомая сетовала на сложность изучения Друпала, и как ответ - эта статья. Роман, пишите еще.

Аватар пользователя Ingumsky Ingumsky 20 ноября 2009 в 3:09

Спасибо вам большое!

Quote:
Каждый модуль, написанный с применением слоя темизации Drupal, должен разделять функции, генерирующие данные, и функции темизации, оформляющие эти данные в виде HTML-кода. Функции темизации регистрируются модулями через специальный хук hook_theme() и имеют имена, начинающиеся с префикса theme_, например, theme_list(). Такие функции не реализуют никакой бизнес-логики, а только получают набор данных на входе и отдают сформированный HTML-код на выходе. Функции темизации могут быть переопределены в файле template.php, т. е. разработчик может заменить стандартное оформление данных, возвращаемых модулем, по своему желанию. Для этого нужно скопировать в него соответствующую функцию темизации, заменить в ней префикс theme_ на имя используемой темы и внести в нее необходимые изменения.

Вот этот абзац для меня всё расставил по местам. Я теперь понял, как правильно проводить темизацию вывода в модуле. До этого делал неправильно, как оказалось.

Аватар пользователя direqtor direqtor 20 ноября 2009 в 5:22

Прежде чем кодить, всегда стоит посмотреть, что сделано до тебя. Я имею в виду вдумчивое изучение листингов ядра.

Аватар пользователя marazmus marazmus 20 ноября 2009 в 10:44

За статью спасибо. На хабре плюсанул Smile

p.s. За хабростатью не переживай, кому надо, все равно найдут. А что до минусов - так там давно уже секта минусовальщиков-дебилоидов. Редко кто пишет нормальные статьи, в стилистике нормального хабра. Все больше то плач ярославны о том, кто кого кинул, или копипасты хайтек новостей.

Аватар пользователя RoSk0 RoSk0 23 ноября 2009 в 13:17

Действительно огромное спасибо!
Статья шикарная!

Господа прошу прощения за офтоп, а не найдется ли у кого нибуть инвайта на хабр, страсть как хочется ромке плюсик поставить Smile

Аватар пользователя Ingumsky Ingumsky 27 ноября 2009 в 19:18

cpu wrote:
"cpu" wrote:
- объясните ламеры, это вы о чем?

-извиняюсь. Хотел написать ЛАМЕРУ.

Biggrin Прекрасная опечатка. Особенно с учётом того, кому Вы отвечали -)

Аватар пользователя Ingumsky Ingumsky 28 ноября 2009 в 16:05

"cpu" wrote:
- представляю их недоумение.

Честно говоря, я тоже был удивлён снисходительностью Вашего тона, когда прочёл комментарий в первый раз. Пожал в недоумении плечами, подумав, что бывает всякое. Кто же думал, что это была такая опечатка?! -)

Аватар пользователя rumzes rumzes 7 декабря 2009 в 15:58

Здравствуйте Роман,

Во-первых, большое спасибо за статью. Во-вторых, сразу не отходя от кассы хотелось бы задать такой вопрос :).

Можно перекрыть выполнение стандартных функций темизации друпал в файле шаблона(template.php), т.о. изменить к примеру вывод ВСЕХ меню на сайте.

Но как быть в случае, если на сайте несколько типов меню, и для каждого нужна своя функция темизации? Какой по-вашему должен быть подход при решении подобных задач?

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

Большое спасибо за внимание.

Аватар пользователя Catman Catman 11 апреля 2010 в 22:06

В описании листинга 4 упоминается о выделении строчек зелёным цветом. У меня на экране этого нет - всё обычным шрифтом...