Почему так сложно создавать темы для drupal? Есть какие-нибудь советы по упрощению или более быстрому изучению?

Я кодирую на PHP 4 года, и даже мне он кажется таким запутанным и трудным для понимания. Я понятия не имею, как они ожидают от дизайнеров управления темами.

Я знаю базовые темы, темы с файлами tpl, шаблоны представлений, шаблоны созерцания и т. Д. Однако я теряюсь всякий раз, когда захожу в файл template.php.

Мне нужно было оформить форму ввода узла для настраиваемого типа контента. Я ломал голову над этим с помощью примерно 7-9 руководств, но они все еще не сходятся. Я понимаю, почему сборка модулей может быть сложной - потому что большинство людей, которые работают с модулями, в любом случае являются разработчиками.

Однако, когда даже разработчик не может понять тематику, это определенно излишне спроектировано!

Может, это моя вина, может, я плохо выучил Друпал. В таком случае, есть ли пошаговая система, чтобы стать гуру Drupal?


person a20    schedule 14.09.2010    source источник
comment
Я могу понять вашу ярость по поводу тематики. Но на самом деле это не повод оскорблять людей, потративших часть своей жизни на разработку этого кода. Пожалуйста, будьте более конструктивны и избегайте называть имен. -1 за это.   -  person berkes    schedule 14.09.2010
comment
Спасибо, что указали на это, я хотел начать обсуждение разочарований в тематике Drupal и о том, как быстро и безболезненно изучать и разрабатывать темы Drupal, а не просто разглагольствовать об этом: p Я удалил оскорбительную строчку.   -  person a20    schedule 14.09.2010
comment
Stack Overflow не подлежит расширенному обсуждению. Если вам нужно задать конкретный, острый вопрос, вы попали в нужное место. В противном случае я бы посоветовал блог стать отличным выходом, чтобы выразить свое разочарование.   -  person    schedule 14.09.2010
comment
Общее обсуждение, например, набор советов, тоже можно, но тогда вопрос следует пометить как вики сообщества, потому что нет единого правильного ответа.   -  person SF.    schedule 14.09.2010
comment
-1: Я действительно согласен с вами, но здесь не место для общей разглагольствования.   -  person Spudley    schedule 14.09.2010


Ответы (6)


Тема действительно не такая уж и сложная, если вы знаете только базовый php. У вас есть 3 способа изменить разметку, css и js, которые вы должны уметь обрабатывать.

  • Файлы шаблонов. Создав файл шаблона в своей тематике и правильно назвав его, он будет иметь приоритет над другими файлами шаблонов, и, таким образом, вы можете создать собственную разметку для представлений, узлов и т. Д. Создав шаблон для типа noce, вы можете делать такие вещи, как печать вне поля cck в любых других вместо использования $content. Все, что вам нужно, это объект узла.

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

  • Функции темы. Вы можете перезаписать функции темы, чтобы изменить используемую разметку. Вам нужно только создать функцию с именем yourtheme_[theme_function_name]. Для этого вам не нужно много разбираться в php. Часто вы можете просто скопировать исходную функцию темы и внести в нее несколько изменений, чтобы получить желаемую разметку.

С помощью вышеперечисленного вы можете сделать 90-95% того, что вам нужно. Формы немного особенные, так как вы в Drupal 6 не можете (легко) изменить их в своей теме. Вместо этого вы хотите создать небольшой модуль и использовать hook_form_alter, который позволяет вам изменять форму, текст, используемый на кнопках и т. Д. Это изменено в Drupal 7, который будет еще проще тематизировать.

Так что на самом деле это не так уж и сложно, просто используйте 3 основных инструмента, описанных выше. Сложная часть может заключаться в присвоении имен вашим функциям и шаблонам, но devel themer может вам в этом помочь. Еще один инструмент, который вы используете, - devel, который может помочь вам распечатать переменные, чтобы вы могли их проверить и увидеть, что вы иметь в наличии поля fx CCK на узле.

person googletorp    schedule 14.09.2010

Возможно, вам стоит получить копию Front End Drupal.

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

Интересно видеть, что вы являетесь темером, но при этом говорите только о php, а не о CSS и HTML. По моему опыту, многие задачи по тематике можно выполнить с помощью CSS, даже не касаясь php.

Наконец, я не знаю, используете ли вы базовую / начальную тему (например, Zen или Genesis) уже. Я рекомендую использовать базовую тему и реализовать свой собственный дизайн в качестве дополнительной темы.

person marcvangend    schedule 14.09.2010

Большинство людей слышит «ах!» момент, когда тема внезапно начинает обретать смысл.

Я бы сказал, что это, вероятно, сложнее для опытных разработчиков PHP, поскольку вам нужно отказаться от множества концепций, которые не имеют смысла в обычном PHP («функция волшебным образом вызывается в подходящее время ... из-за того, как он назван?! ")

Ответы @googletorp довольно исчерпывающие, поэтому я просто добавлю несколько практических советов, которые мне помогли:

1) Попробуйте создать модуль, который реализует собственный тематический вывод и простые хуки. Хуки и функции тем становятся намного более понятными, когда вы видите, как модули на самом деле вызывают их и используют их.

2) Широко используйте модуль devel, особенно меню реестра тем (обратите внимание, как оно меняется при добавлении новой функции темы), вкладку «Рендеринг» и функции dpm() и dvm().

3) Купите старомодную книгу по тематике Drupal. Онлайн-документы действительно замечательны, если вы уже знаете, что делаете, но могут сильно сбивать с толку, если вы не уверены, что ищете.

4) Опорожните чашку. На уровне темы PHP действительно предназначен только для простой логики и синтаксиса - почти все существенное обрабатывается функциями Drupal API. Попробуйте думать как разработчик Drupal, а не PHP-разработчик (т.е. не предполагайте, что вы умеете что-то делать только потому, что вы создали обычный PHP-сайт, который делает то же самое), и вам будет легче.

Продолжайте с этим! Система тем на самом деле действительно проста в использовании, если вы в ней разобрались.

person anschauung    schedule 14.09.2010
comment
Я выбираю этот вариант, потому что это наиболее близкий ответ на мои вопросы: 1. Почему это сложно? 2. Как упростить / выучить быстрее? - person a20; 04.11.2010

чтобы ответить на ваш вопрос о почему это так сложно:

Темы Drupal могут показаться подавляющими из-за огромного количества возможностей, см. Ответ @googletorps для хорошего обзора. Наличие «множества способов сделать одно дело» дает силу: опытные пользователи могут выбрать лучший из всех возможностей. Но это также вносит сложность: новые пользователи не получают хорошего лидера, потому что не существует принципа «вы должны делать это так. Полный стоп».

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

username<menuitem<menuitem<menuitem<menu<block<region<page. 

Будет отображать пункт меню, содержащий имя пользователя, в трехуровневом элементе меню в блоке боковой панели. Там, где в большинстве шаблонных сред есть концепции страницы, содержащей несколько «содержимого», которое, самое большее, может содержать некоторые части. глубина вложенности не превышает трех уровней. И у каждого уровня есть четкая, отличная область знаний. В Drupal этого нет: вложение довольно произвольно. И каждый вложенный элемент ничем не отличается от своих родителей. Это, опять же, предлагает опытным пользователям отличную концепцию и возможности для работы, но это трудно понять новым разработчикам / дизайнерам.

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

person berkes    schedule 14.09.2010

Если вы еще этого не видели, это отличная презентация о том, почему тематика Drupal 6 сложна и как ее улучшить в Drupal 7. Есть надежда! Это видео стало более осмысленным для меня, когда я посмотрел его во второй раз после того, как набрался опыта. http://sf2010.drupal.org/conference/sessions/design-and-theming-whats-new-drupal-7

person anonymouse    schedule 14.09.2010

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

Это огромное благо для тематических форм. Посмотрите короткое видео, которое объясняет это лучше, чем я здесь: http://drupaldojo.com/session/fine-tuning-ui-theming-forms-drupal-60

person Mikey P    schedule 17.09.2010