SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Слайд.

Добрый день, меня зовут Роман Архаров, в этом докладе я расскажу о том, как
разработать модуль для Друпала, на примере разработки плагина к модулю ССК.

Доклад будет разбит на три части: сначала я расскажу об основнах модульной
системы Друпала, потом в двух словах расскажу о структуре модуля ССК и в конце

Слайд.

Друпал построен по модульному принципу: ядро — компактный набор служебных
функций для работы с БД, документами, пользователями и их правами доступа, и
расширяется функциональность Друпала при помощи модулей. Система модулей в
Друпале базируется на понятии "хук". Слайд. Хуки — это особым образом
именованные функции, которые вызываются ядром Друпала при возникновении
тех или иных событий. Каждый модуль имеет системное имя, которое должно
состоять из латинских букв, цифр, знаков подчеркивания и должно начинаться с
буквы. Имя каждого хука состоит из двух частей: имени модуля и названия
события. При возникновении любого события ядро Друпала в каждом из
установленных модулей ищет и выполняет реализацию соответствующего хука, то
есть функцию с именем навзвние_модуля_название_события. Например, при
возникновении событий связанных с учетной записью пользователя (регистрация,
авторизация, изменение роли пользователя и тому подобных) ядро Друпала
выполняет все функции реализующие хук hook_user, по этому, для того чтобы
модуль с именем example мог среагировать на это событие в нем необходимо
объявить функцию с именем example_user. Список передаваемых в эту функцию
аргументов и пример ее использования, а также информацию обо всех функциях и
хуках доступных в Друпале можно найти на странице официальной документации
http://api.drupal.org или на её русской версии: http://api.drupal.ru.

Все модули Друпала можно разделить на три группы:

   •     Модули ядра (core), являющиеся основой системы.
   •     Contributed modules — модули разработанные сообществом Друпал и
         распространяемые по лицензии GNU GPL.
   •     Custom modules — модули разрабатываемые под конкретный проект.



Слайд.

Для программиста Друпал представляет мощный API, решающий большое
количество стандартных задач. АПИ разделен на несколько крупных блоков:


   •     Schema API — интерфейс абстракции от базы данных. Набор функций для
создания, изменения, удаления таблиц, полей и индексов (то есть только
         запросы типа CREATE и ALTER TABLE, никаких инсертов и делитов).
         Благодаря Схема АПИ программисту не нужно задумывться о том, как
         составить запрос к той или иной базе. Программисту вообще не нужно
         задумываться о том, с какой базой данных в данный момент работает
         Друпал, ему достаточно сформировать массив специального вида, передать
         его функциям из Схема АПИ и те сами преобразуют его в запрос к нужно
         БД.

   •     Database API — набор функций, также как и в случае со Схема АПИ,
         позволяющий обращаться к базе данных не задумываясь о том, с какой
         базой Друпал работает в данный момент. Выборка данных, автоматическое
         разбиение на страницы и т.д.

   •     Localization API — инструменты для создания многоязычных сайтов.
   •     Node API — Набор функций для определения собственных типов контента.

   •     Forms API — инструмент для разработки форм. Форма в Друпале
         представляет из себя массив, в котором определены тип поля, его параметры
         и функции темизации. Любой программист в своем модуле может изменить
         любую форму, например, изменить внешний вид поля, удалить его или
         добавить свои поля, функции валидации (проверки введенных данных) и т.д.
         Кроме того через специальный хук hook_element программист может
         объявить новые типы полей, которые в будущем могут использоваться
         другими программистами в своих формах. Дальше я буду рассказывать о
         разработке плагина для модуля ССК и мы как раз будем создавать поле
         нового типа при помощи этого хука.
   •     Cache API
   •     Contributed API — кроме программных интерфесов, которые разработали
         создатели Друпал, также есть несколько интерфейсов от сторонних
         разработчиков. Разработчики модулей Views, CCK, Panels и некоторых
         других предоставляют интерфейсы для работы со своими модулями,
         причем эти модули настолько удобны и востребованы, что сейчас
         невозможно представить Друпал без них.


Слайд.

CCK (Content Construction Kit) — набор инструментов для добавления в
визуальном режиме к существующим типам контента дополнительных полей.
Ядром ССК является модуль Content, реализующий API, с помощью которого
программисты могут разрабатывать свои плагины для этого модуля.

Давайте посмотрим на то как выглядит процесс добавления поля. Тут я на демо-
сайте показываю то как, после того как включен модуль CCK добавить поле к
типу контента, объясняю что такое field и widget. Теперь давайте
повнимательнее посмотрим на формы, которые заполняются при добавлении
нового поля. Сначала в первом комбобоксе мы выбираем тип поля (текст, файл,
число), затем мы выбираем то, как это поле будет отображаться в форме
редактирования документа (текстовое поле, комобобокс или чекбоксы) и на
последнем этапе мы определяем то, как введенные данные будут отображаться на
экране при просмотре документа. Эти три формы связаны с тремя понятиями: field,
widget И formatter.

Слайд.

Итак, каждая создаваемая модулем ССК сущность состоит из трех основных
часией:


   •     поля (field) — это набор служебной информации о создаваемом поле:
         колонка или таблица в базе данных, в которой будут храниться вводимые в
         поле данные, а также функции валидаторы и сабмиттеры.
   •     виджета (widget) — интерфейса, который будет выводиться пользователю в
         форме создания докумета.
   •     форматтера (formatter) — набора функций, для вывода данных на экран.


Например, (тут нужно вернуться к демо-сайту) стандартное для модуля CCK
поле Text характеризуется колонкой в базе, виджетами textfield, combobox,
checkbox и форматерром plain text. То есть, фактически, варианты чекбокс,
комбобокс, текстфилд отличаются друг от друга только тем как будет выглядеть
для пользователя форма, в которую вводятся данные, функции проверки введенных
данных и колонка в таблице БД будет одной и той же.


Когда мы разрабатываем свое поле для ССК мы можем сделать всю работу сами, то
есть определить свой филд, свой виджет ти свои форматтеры, но, зачастую, это не
нужно, так как вокруг модуля ССК уже разработано много плагином и зачастую
работа сводится к разработке собственного виджета или форматтера, а филд
берется существующий. Ярким примером может служить модуль ФайлФилд,
который создает поле, с помощью которого можно на сервер закачть файл любого
типа. Кроме того есть модуль ИмаджФилд, который не реализует собственное поле
(field), а только реализует собственные виджеты и форматтеры.

Слайд.

Кажде поле может иметь неограниченное количество виджетов и форматтеров.

Разрабатывая свой плагин для ССК мы можем выполнить всю работу: то есть
разработать свой филд, виджет и форматтер, а можем взять существующий филд и
разработать для него свои виджет и форматтер. Примером такого симбиоза могут
служить модули ФайлФилд и ИмаджФилд. Файлфилд реализует инструменты для
закачки файлов на сервер и хранения информации о них в базе данных, а
ИмаджФилд добавляет к этому функционалу дополнительные проверки
закачиваемого файла (разрешение и тип изображения) и выводит в виджете
превьюшку картинки. Точно также, иногда бывает достаточно использовать филд и
виджет реализованные в других модулях и разработать только свой форматтер.

Слайд.

Для примера я покажу как создать простое текстовое поле. Мы здесь проделаем
полные цикл работ: создадам свои поле, видже, форматтер и элемент для Forms
API.

Тут описание каждого хука, которые используются для создания филда, виджета,
элесента и форматтера.

Weitere ähnliche Inhalte

Ähnlich wie Text

разработка модуля для Cms Drupal
разработка модуля для Cms Drupalразработка модуля для Cms Drupal
разработка модуля для Cms DrupalInna Tuyeva
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPmikhailshurgulaya
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Модульная структура
Модульная структураМодульная структура
Модульная структураDenis Tsvettsih
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его примененияMedia Gorod
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 
Конструктор отчетов
Конструктор отчетовКонструктор отчетов
Конструктор отчетовDocsvision
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в MagentoPavel Usachev
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Denis Vasilyev
 
Cradle. Знакомство с Demo проектом
Cradle. Знакомство с Demo проектомCradle. Знакомство с Demo проектом
Cradle. Знакомство с Demo проектомYulia Madorskaya
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoftKewpaN
 
раздел 5 субд Access
раздел 5  субд Accessраздел 5  субд Access
раздел 5 субд Accesstatianabtt
 

Ähnlich wie Text (20)

разработка модуля для Cms Drupal
разработка модуля для Cms Drupalразработка модуля для Cms Drupal
разработка модуля для Cms Drupal
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его применения
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
Конструктор отчетов
Конструктор отчетовКонструктор отчетов
Конструктор отчетов
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
Cradle. Знакомство с Demo проектом
Cradle. Знакомство с Demo проектомCradle. Знакомство с Demo проектом
Cradle. Знакомство с Demo проектом
 
Lecture 11 2
Lecture 11 2Lecture 11 2
Lecture 11 2
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
раздел 5 субд Access
раздел 5  субд Accessраздел 5  субд Access
раздел 5 субд Access
 

Mehr von Inna Tuyeva

Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalInna Tuyeva
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3Inna Tuyeva
 
Multilangaunguage Drupal
Multilangaunguage DrupalMultilangaunguage Drupal
Multilangaunguage DrupalInna Tuyeva
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage DrupalInna Tuyeva
 
презентация соц сеть на друпале
презентация соц сеть на друпалепрезентация соц сеть на друпале
презентация соц сеть на друпалеInna Tuyeva
 
азы мультисайтинга
азы мультисайтингаазы мультисайтинга
азы мультисайтингаInna Tuyeva
 
продвинутый мультисайтинг
продвинутый мультисайтингпродвинутый мультисайтинг
продвинутый мультисайтингInna Tuyeva
 
обслуживание мультисайтинга
обслуживание мультисайтингаобслуживание мультисайтинга
обслуживание мультисайтингаInna Tuyeva
 

Mehr von Inna Tuyeva (20)

Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs Drupal
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3
 
Multilangaunguage Drupal
Multilangaunguage DrupalMultilangaunguage Drupal
Multilangaunguage Drupal
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage Drupal
 
Galleryapi
GalleryapiGalleryapi
Galleryapi
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
D7dev
D7devD7dev
D7dev
 
презентация соц сеть на друпале
презентация соц сеть на друпалепрезентация соц сеть на друпале
презентация соц сеть на друпале
 
I Net
I NetI Net
I Net
 
Galleryapi
GalleryapiGalleryapi
Galleryapi
 
азы мультисайтинга
азы мультисайтингаазы мультисайтинга
азы мультисайтинга
 
продвинутый мультисайтинг
продвинутый мультисайтингпродвинутый мультисайтинг
продвинутый мультисайтинг
 
обслуживание мультисайтинга
обслуживание мультисайтингаобслуживание мультисайтинга
обслуживание мультисайтинга
 
Arsa
ArsaArsa
Arsa
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Paranoia
ParanoiaParanoia
Paranoia
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Dc P
Dc PDc P
Dc P
 
Zen
ZenZen
Zen
 

Text

  • 1. Слайд. Добрый день, меня зовут Роман Архаров, в этом докладе я расскажу о том, как разработать модуль для Друпала, на примере разработки плагина к модулю ССК. Доклад будет разбит на три части: сначала я расскажу об основнах модульной системы Друпала, потом в двух словах расскажу о структуре модуля ССК и в конце Слайд. Друпал построен по модульному принципу: ядро — компактный набор служебных функций для работы с БД, документами, пользователями и их правами доступа, и расширяется функциональность Друпала при помощи модулей. Система модулей в Друпале базируется на понятии "хук". Слайд. Хуки — это особым образом именованные функции, которые вызываются ядром Друпала при возникновении тех или иных событий. Каждый модуль имеет системное имя, которое должно состоять из латинских букв, цифр, знаков подчеркивания и должно начинаться с буквы. Имя каждого хука состоит из двух частей: имени модуля и названия события. При возникновении любого события ядро Друпала в каждом из установленных модулей ищет и выполняет реализацию соответствующего хука, то есть функцию с именем навзвние_модуля_название_события. Например, при возникновении событий связанных с учетной записью пользователя (регистрация, авторизация, изменение роли пользователя и тому подобных) ядро Друпала выполняет все функции реализующие хук hook_user, по этому, для того чтобы модуль с именем example мог среагировать на это событие в нем необходимо объявить функцию с именем example_user. Список передаваемых в эту функцию аргументов и пример ее использования, а также информацию обо всех функциях и хуках доступных в Друпале можно найти на странице официальной документации http://api.drupal.org или на её русской версии: http://api.drupal.ru. Все модули Друпала можно разделить на три группы: • Модули ядра (core), являющиеся основой системы. • Contributed modules — модули разработанные сообществом Друпал и распространяемые по лицензии GNU GPL. • Custom modules — модули разрабатываемые под конкретный проект. Слайд. Для программиста Друпал представляет мощный API, решающий большое количество стандартных задач. АПИ разделен на несколько крупных блоков: • Schema API — интерфейс абстракции от базы данных. Набор функций для
  • 2. создания, изменения, удаления таблиц, полей и индексов (то есть только запросы типа CREATE и ALTER TABLE, никаких инсертов и делитов). Благодаря Схема АПИ программисту не нужно задумывться о том, как составить запрос к той или иной базе. Программисту вообще не нужно задумываться о том, с какой базой данных в данный момент работает Друпал, ему достаточно сформировать массив специального вида, передать его функциям из Схема АПИ и те сами преобразуют его в запрос к нужно БД. • Database API — набор функций, также как и в случае со Схема АПИ, позволяющий обращаться к базе данных не задумываясь о том, с какой базой Друпал работает в данный момент. Выборка данных, автоматическое разбиение на страницы и т.д. • Localization API — инструменты для создания многоязычных сайтов. • Node API — Набор функций для определения собственных типов контента. • Forms API — инструмент для разработки форм. Форма в Друпале представляет из себя массив, в котором определены тип поля, его параметры и функции темизации. Любой программист в своем модуле может изменить любую форму, например, изменить внешний вид поля, удалить его или добавить свои поля, функции валидации (проверки введенных данных) и т.д. Кроме того через специальный хук hook_element программист может объявить новые типы полей, которые в будущем могут использоваться другими программистами в своих формах. Дальше я буду рассказывать о разработке плагина для модуля ССК и мы как раз будем создавать поле нового типа при помощи этого хука. • Cache API • Contributed API — кроме программных интерфесов, которые разработали создатели Друпал, также есть несколько интерфейсов от сторонних разработчиков. Разработчики модулей Views, CCK, Panels и некоторых других предоставляют интерфейсы для работы со своими модулями, причем эти модули настолько удобны и востребованы, что сейчас невозможно представить Друпал без них. Слайд. CCK (Content Construction Kit) — набор инструментов для добавления в визуальном режиме к существующим типам контента дополнительных полей. Ядром ССК является модуль Content, реализующий API, с помощью которого программисты могут разрабатывать свои плагины для этого модуля. Давайте посмотрим на то как выглядит процесс добавления поля. Тут я на демо- сайте показываю то как, после того как включен модуль CCK добавить поле к типу контента, объясняю что такое field и widget. Теперь давайте
  • 3. повнимательнее посмотрим на формы, которые заполняются при добавлении нового поля. Сначала в первом комбобоксе мы выбираем тип поля (текст, файл, число), затем мы выбираем то, как это поле будет отображаться в форме редактирования документа (текстовое поле, комобобокс или чекбоксы) и на последнем этапе мы определяем то, как введенные данные будут отображаться на экране при просмотре документа. Эти три формы связаны с тремя понятиями: field, widget И formatter. Слайд. Итак, каждая создаваемая модулем ССК сущность состоит из трех основных часией: • поля (field) — это набор служебной информации о создаваемом поле: колонка или таблица в базе данных, в которой будут храниться вводимые в поле данные, а также функции валидаторы и сабмиттеры. • виджета (widget) — интерфейса, который будет выводиться пользователю в форме создания докумета. • форматтера (formatter) — набора функций, для вывода данных на экран. Например, (тут нужно вернуться к демо-сайту) стандартное для модуля CCK поле Text характеризуется колонкой в базе, виджетами textfield, combobox, checkbox и форматерром plain text. То есть, фактически, варианты чекбокс, комбобокс, текстфилд отличаются друг от друга только тем как будет выглядеть для пользователя форма, в которую вводятся данные, функции проверки введенных данных и колонка в таблице БД будет одной и той же. Когда мы разрабатываем свое поле для ССК мы можем сделать всю работу сами, то есть определить свой филд, свой виджет ти свои форматтеры, но, зачастую, это не нужно, так как вокруг модуля ССК уже разработано много плагином и зачастую работа сводится к разработке собственного виджета или форматтера, а филд берется существующий. Ярким примером может служить модуль ФайлФилд, который создает поле, с помощью которого можно на сервер закачть файл любого типа. Кроме того есть модуль ИмаджФилд, который не реализует собственное поле (field), а только реализует собственные виджеты и форматтеры. Слайд. Кажде поле может иметь неограниченное количество виджетов и форматтеров. Разрабатывая свой плагин для ССК мы можем выполнить всю работу: то есть разработать свой филд, виджет и форматтер, а можем взять существующий филд и разработать для него свои виджет и форматтер. Примером такого симбиоза могут
  • 4. служить модули ФайлФилд и ИмаджФилд. Файлфилд реализует инструменты для закачки файлов на сервер и хранения информации о них в базе данных, а ИмаджФилд добавляет к этому функционалу дополнительные проверки закачиваемого файла (разрешение и тип изображения) и выводит в виджете превьюшку картинки. Точно также, иногда бывает достаточно использовать филд и виджет реализованные в других модулях и разработать только свой форматтер. Слайд. Для примера я покажу как создать простое текстовое поле. Мы здесь проделаем полные цикл работ: создадам свои поле, видже, форматтер и элемент для Forms API. Тут описание каждого хука, которые используются для создания филда, виджета, элесента и форматтера.