Почему drupal тематика так трудно?Любые советы по упрощению или обучению быстрее? - PullRequest
3 голосов
/ 14 сентября 2010

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

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

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

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

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

Ответы [ 6 ]

10 голосов
/ 14 сентября 2010

Тема действительно не так сложна, если вы знаете только базовый 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 , который может помочь вам распечатать переменные, чтобы вы могли проверить их и посмотреть, что у вас есть, например, поля CCK на узле.

6 голосов
/ 14 сентября 2010

Может быть, вам стоит получить копию Front End Drupal .

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

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

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

5 голосов
/ 14 сентября 2010

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

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

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

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

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

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

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

Храни с собой!Система тем действительно очень проста в использовании, как только вы это поняли.

2 голосов
/ 14 сентября 2010

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

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

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

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

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

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

1 голос
/ 17 сентября 2010

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

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

1 голос
/ 14 сентября 2010

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

...