Пишем модуль под Друпал

1 апреля 2010 в 17:32
Аватар пользователя olk olk 0 12

Может кому будет интересно. Подшивка статей рассчитан на начинающих в программировании под Друпал, но достаточно продвинутых в PHP и SQL.

Начинаю цикл небольших статей, где на конкретном примере будет показано - как сделать свой модуль под Drupal.
Часто у новичков возникает мнение, что свой модуль - это нечто сверхсложное и не достижимое. Хочу развеять этот миф, конечно если вы владеете PHP и основами SQL.
Также желательно хоть немного ознакомится с Drupal API (но в принципе по мере создания модуля, мы «пройдемся» по основным возможностям Drupal api)
Построение модулей для разных целей, описано на официальном сайте, на странице «Module developer's guide», но для тех, у кого трудности с переводом или пониманием, я попробую шаг за шагом пройти с вами процесс построения модуля.
Сразу оговорюсь, мы будем рассматривать построение модуля под версию Друпала 6.x (как наиболее используемую на момент публикации статьи).

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

Продолжение здесь ...

Ну и цикл в процессе написания Smile так что комментарии, критика, поправки приветствуются ...

Комментарии

Критика 1: Объяснения "как делать модули" ближе к последним частям практически исчезли, вместо этого появились длинные листинги, не имеющие отношения к объясняемому предмету, это напрягает. Посмотрите как сделан аналогичный учебник на Drupal.org: http://drupal.org/node/206753 - минимум лишнего кода и максимум объяснений, что и зачем делается.

Критика 2: вы объясняете назначение функций типа variable_get(), но при этом практически не рассматриваете устройство хуков. А модуль делается на хуках. Например, часть 2 - где реализация hook_menu(). Читателю для создания модуля необходимо знать, как работать с hook_menu(), но об этом ничего не написано. Вместо этого описания variable_get(), node_get_types() и т.д. Не в тему это.

Критика 3: орфография немножко бросается в глаза Sad

Совет 1: Geshi filter, который вы используете для подсветки, умеет выводить код сразу со ссылками на описание функций на api.drupal.org - это удобно.

Совет 2: рассказывайте в тексте про интересные мелочи. Например - зачем кидать реализацию меню-коллбэков в отдельные inc-файлы (и что нужно эти файлы в hook_menu обозначать). Это интересно.

1 апреля 2010 в 17:58
Аватар пользователя Ch Ch 0

"graker" wrote:
Например - зачем кидать реализацию меню-коллбэков в отдельные inc-файлы

Интересно, а для чего их нужно выносить в отдельные файлы?

2 апреля 2010 в 20:15

Ch wrote:
Интересно, а для чего их нужно выносить в отдельные файлы?

Раньше уже обсуждалось. Чтобы подгружать их только когда генерируются соответствующие страницы.

2 апреля 2010 в 21:22

Ch wrote:

Интересно, а для чего их нужно выносить в отдельные файлы?

при включенном опкешере - из эстетических соображений, чтобы все в одну кучу не валить

2 апреля 2010 в 22:36

"Ch" wrote:
Интересно, а для чего их нужно выносить в отдельные файлы?

"graker" wrote:
Раньше уже обсуждалось. Чтобы подгружать их только когда генерируются соответствующие страницы.

так же раньше обсуждалось
что при включенном опкеше(APC eAacelerator) подобная практика сводит на нет работу последних.

3 апреля 2010 в 0:39

Да, я в курсе, там же и обсуждалось. Так же как и то, что не везде акселератор стоит. Только это прямого отношения к архитектуре Друпала не имеет. А устройство хука меню - как раз наоборот.

3 апреля 2010 в 0:56

Честно. насчёт изложения материала, мне очень понравилось... Все сноски я собрал в мини-ЧАВО.
Это же статья не для полных же newbies?!

3 апреля 2010 в 19:47