Может кому будет интересно. Подшивка статей рассчитан на начинающих в программировании под Друпал, но достаточно продвинутых в PHP и SQL.
Начинаю цикл небольших статей, где на конкретном примере будет показано - как сделать свой модуль под Drupal.
Часто у новичков возникает мнение, что свой модуль - это нечто сверхсложное и не достижимое. Хочу развеять этот миф, конечно если вы владеете PHP и основами SQL.
Также желательно хоть немного ознакомится с Drupal API (но в принципе по мере создания модуля, мы «пройдемся» по основным возможностям Drupal api)
Построение модулей для разных целей, описано на официальном сайте, на странице «Module developer's guide», но для тех, у кого трудности с переводом или пониманием, я попробую шаг за шагом пройти с вами процесс построения модуля.
Сразу оговорюсь, мы будем рассматривать построение модуля под версию Друпала 6.x (как наиболее используемую на момент публикации статьи).
Возможно я не буду придерживаться «учебной» последовательности, где то вы не найдете объяснений - как я пришел к этому решению, вполне возможны ошибки и избыточность в коде.
Я не буду показывать создание модуля на выдуманных примерах, просто возьмем конкретную (и возможно полезную задачу) и попробуем ее решить при помощи своего модуля.
Продолжение здесь ...
Ну и цикл в процессе написания так что комментарии, критика, поправки приветствуются ...
Комментарии
Критика 1: Объяснения "как делать модули" ближе к последним частям практически исчезли, вместо этого появились длинные листинги, не имеющие отношения к объясняемому предмету, это напрягает. Посмотрите как сделан аналогичный учебник на Drupal.org: http://drupal.org/node/206753 - минимум лишнего кода и максимум объяснений, что и зачем делается.
Критика 2: вы объясняете назначение функций типа variable_get(), но при этом практически не рассматриваете устройство хуков. А модуль делается на хуках. Например, часть 2 - где реализация hook_menu(). Читателю для создания модуля необходимо знать, как работать с hook_menu(), но об этом ничего не написано. Вместо этого описания variable_get(), node_get_types() и т.д. Не в тему это.
Критика 3: орфография немножко бросается в глаза
Совет 1: Geshi filter, который вы используете для подсветки, умеет выводить код сразу со ссылками на описание функций на api.drupal.org - это удобно.
Совет 2: рассказывайте в тексте про интересные мелочи. Например - зачем кидать реализацию меню-коллбэков в отдельные inc-файлы (и что нужно эти файлы в hook_menu обозначать). Это интересно.
ok, спасибо за критику, будем исправляться ...
Употребляя fieldset стоит таки упомянуть о параметре #tree.
Интересно, а для чего их нужно выносить в отдельные файлы?
Раньше уже обсуждалось. Чтобы подгружать их только когда генерируются соответствующие страницы.
при включенном опкешере - из эстетических соображений, чтобы все в одну кучу не валить
Отлично,просто супер
так же раньше обсуждалось
что при включенном опкеше(APC eAacelerator) подобная практика сводит на нет работу последних.
Да, я в курсе, там же и обсуждалось. Так же как и то, что не везде акселератор стоит. Только это прямого отношения к архитектуре Друпала не имеет. А устройство хука меню - как раз наоборот.
Дайте пожалуйста ссылку, где это обсуждалось.
Наверное здесь: http://www.drupal.ru/node/41087
Честно. насчёт изложения материала, мне очень понравилось... Все сноски я собрал в мини-ЧАВО.
Это же статья не для полных же newbies?!