Документация по созданию модуля

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

Аватар пользователя oksale oksale 21 июля 2009 в 18:08

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

Комментарии

Аватар пользователя kosilko kosilko 21 июля 2009 в 18:34

вся нужная документация на api.drupal.org.
плюс конечно же можно брать в качестве работающих примеров код непосредственно из модулей друпала.

Аватар пользователя dimedrol dimedrol 21 июля 2009 в 21:44

RxB, в вашей ссылке только вводная часть для программирования по Друпалу. Тем более там упоминаются версии 5.x и 4.7, которые уже устарели.
Программирование под 6-ку отличается в куче мелочей.

"kosilko" wrote:
плюс конечно же можно брать в качестве работающих примеров код непосредственно из модулей друпала.

Учиться по кодам, особенно из core, очень сложно, а из не core - опасно. Smile Я знаю, я так и учился. Книг по Друпалу на русском тогда не было, да и на английском их было очень мало. Sad
Самое сложное, как показала практика, проникнутся смыслом и логикой хуков - зачем они, чем отличаются друг от друга (иногда это не наглядно) и как взаимодействуют друг с другом.

Оксана, советую начать с поэтапного чтения этого документа Developing for Drupal. В частности, вот этого документа Module developer's guide
К сожалению, аналога на русском языке я не видел.
В любом случае английский там очень простой. Не Шекспир, однако. Smile
В качестве справочной информации по функция и хукам можно обращаться к api.drupal.ru.

Аватар пользователя dimedrol dimedrol 22 июля 2009 в 13:49

"RxB" wrote:
большой разницы не вижу, та же самая хуковая структура, практически те же функции, да есть различия, но они минимальны.

Вы не правы. Могу привести один из примеров - hook_menu.
Только в одном хуке изменилось:
1. Убрали параметр $may_cache. Теперь хук запускается один раз при установке модуля. Раньше, этот хук запускался при каждом http-запросе к CMS. Сделали в целях оптимизации запросов к БД.
2. В 5-ке для каждого элемента меню URL подавался как отдельный параметр массива с индексом path.
Сейчас же URL подается как индекс ко всему списку элементов меню (и колбаков) этого модуля.
3. Изменился подход к системе защиты. Если в 5-ке нужно было самому определять доступ к элементу, то теперь существует такие параметры как access callback и access arguments, которые позволяют устанавливать функции проверки доступа. Сделано в связи с п. 1.
4. Параметр title теперь автоматически проходит через функцию t().
5. Появился дополнительный параметр file, который позволяет раскидывать колбаки по разным файлам. При этом Друпал сам делает Include. Элегантное и достаточно практическое решение - дополнительные inc-и загружаются только при необходимости.
6. В системе меню появились так называемые wildcard-ы, которые позволяют для динамически формируемых ссылок регистрировать только один раздел меню. При этом изменились требования к параметру page callback.

Это тот перечень, с которым мне пришлось столкнуться при переходе на 6-ку.
ИМХО такие изменения не назовешь минимальными...

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 22 июля 2009 в 14:08

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

Аватар пользователя oksale oksale 23 июля 2009 в 18:37

Прочитала весь док 'Module developer's guide' - все подробно и доступно написано. Дмитрий, спасибо за ссылку.
Можно еще вопрос? Smile Что это за inc-файлы? Видела их в модулях. Для чего они - я интуитивно догадываюсь, но как их использовать? Я теряюсь, по какой фразе искать их в документации)).
И еще один вопрос по модулю: в статье не раскрыта тема, как для модуля делать страницы, например, с настройками, в виде табов. Это делается автоматически или нужно прописывать?

Аватар пользователя kosilko kosilko 23 июля 2009 в 22:33

"oksale" wrote:
Что это за inc-файлы? Видела их в модулях. Для чего они - я интуитивно догадываюсь, но как их использовать? Я теряюсь, по какой фразе искать их в документации)).

это обычный вынос емкого кода в отдельный файл, тут уже вопрос в знании базовых особенностей PHP а не друпала. Использование инклюдов относится скорее к правилам хорошего тона и оптимизации, но не как железное правило для написания модулей. В друпале чаще всего инклюды прописываются в hook_menu как параметр #file. Если конкретно интересует как inc использован в отдельно взятом модуле, то вопрос решается простым поиска имени файла в исходниках.

"oksale" wrote:
в статье не раскрыта тема, как для модуля делать страницы, например, с настройками, в виде табов. Это делается автоматически или нужно прописывать?

в hook_menu флаг #type MENU_DEFAULT_LOCAL_TASK или MENU_LOCAL_TASK, все это в документации подробно расписано

Аватар пользователя melnikov melnikov 4 сентября 2009 в 2:13

А у тебя нет ЭТОЙ книги?

Там про разработку на Drupal 6.х очень много написано (точнее почти вся книга про нее).
Кстати, на книжной ярмарке в ДК Крупской она стоит 500 рублей.

Аватар пользователя toorr2p toorr2p 4 сентября 2009 в 5:00

А как например изменить внешний вид отображения модуля - например модуля Blog, ато выводится только ссылка,имя автора # Добавить комментарий
# Читать далее

а вверху "Blogs" как это изменить на русский язык?
Спасибо...