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

Was ist angesagt?

Платформы Java и .NET. Современные концепции ООП
Платформы Java и .NET. Современные концепции ООППлатформы Java и .NET. Современные концепции ООП
Платформы Java и .NET. Современные концепции ООПBoris Volfson
 
Brazil Report 2007 12 25 12
Brazil Report 2007 12 25 12Brazil Report 2007 12 25 12
Brazil Report 2007 12 25 12Victor Gridnev
 
морской карнавал для фм логистик
морской карнавал для фм логистикморской карнавал для фм логистик
морской карнавал для фм логистикguestd9525b
 
Mapia Presentation at Internet Ukraine 2009
Mapia Presentation at Internet Ukraine 2009Mapia Presentation at Internet Ukraine 2009
Mapia Presentation at Internet Ukraine 2009Maxon Pugovsky
 
Организация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповОрганизация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповDenis Beskov
 
Ptesentation!
Ptesentation!Ptesentation!
Ptesentation!PRInfo
 
Etarget Bulgaria - Automotive Case Study
Etarget Bulgaria - Automotive Case StudyEtarget Bulgaria - Automotive Case Study
Etarget Bulgaria - Automotive Case StudyEtarget
 
Согласование интересов с помощью диаграммы Use Case
Согласование интересов с помощью диаграммы Use CaseСогласование интересов с помощью диаграммы Use Case
Согласование интересов с помощью диаграммы Use CaseDenis Beskov
 
Prezent Spbnet Dev Acc 0509
Prezent Spbnet Dev Acc 0509Prezent Spbnet Dev Acc 0509
Prezent Spbnet Dev Acc 0509Irina Zimitskaya
 
Sergey Kh Citrus Systems 2009
Sergey Kh Citrus Systems 2009Sergey Kh Citrus Systems 2009
Sergey Kh Citrus Systems 2009Liudmila Li
 
водні ресурси
водні ресурсиводні ресурси
водні ресурсиAlina Abramova
 
Novokuznetck Enns A.V.
Novokuznetck Enns A.V.Novokuznetck Enns A.V.
Novokuznetck Enns A.V.enns25
 
Закриття тижня математики та інформатики
Закриття тижня математики та інформатикиЗакриття тижня математики та інформатики
Закриття тижня математики та інформатикиprofessor140
 
Продвижение больших сайтов в 2020 году
Продвижение больших сайтов в 2020 годуПродвижение больших сайтов в 2020 году
Продвижение больших сайтов в 2020 годуcollaborator.pro
 
Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Anatoly Sharifulin
 
вікові проблеми підлітків
вікові проблеми підлітківвікові проблеми підлітків
вікові проблеми підлітківyulya cheholka
 

Was ist angesagt? (19)

Платформы Java и .NET. Современные концепции ООП
Платформы Java и .NET. Современные концепции ООППлатформы Java и .NET. Современные концепции ООП
Платформы Java и .NET. Современные концепции ООП
 
Brazil Report 2007 12 25 12
Brazil Report 2007 12 25 12Brazil Report 2007 12 25 12
Brazil Report 2007 12 25 12
 
Bakteriji
BakterijiBakteriji
Bakteriji
 
морской карнавал для фм логистик
морской карнавал для фм логистикморской карнавал для фм логистик
морской карнавал для фм логистик
 
Mapia Presentation at Internet Ukraine 2009
Mapia Presentation at Internet Ukraine 2009Mapia Presentation at Internet Ukraine 2009
Mapia Presentation at Internet Ukraine 2009
 
05 K2 N Moodle E Learning Platform Bg
05 K2 N Moodle E Learning Platform Bg05 K2 N Moodle E Learning Platform Bg
05 K2 N Moodle E Learning Platform Bg
 
Организация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповОрганизация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принципов
 
Ptesentation!
Ptesentation!Ptesentation!
Ptesentation!
 
Etarget Bulgaria - Automotive Case Study
Etarget Bulgaria - Automotive Case StudyEtarget Bulgaria - Automotive Case Study
Etarget Bulgaria - Automotive Case Study
 
Согласование интересов с помощью диаграммы Use Case
Согласование интересов с помощью диаграммы Use CaseСогласование интересов с помощью диаграммы Use Case
Согласование интересов с помощью диаграммы Use Case
 
Prezent Spbnet Dev Acc 0509
Prezent Spbnet Dev Acc 0509Prezent Spbnet Dev Acc 0509
Prezent Spbnet Dev Acc 0509
 
практика
практикапрактика
практика
 
Sergey Kh Citrus Systems 2009
Sergey Kh Citrus Systems 2009Sergey Kh Citrus Systems 2009
Sergey Kh Citrus Systems 2009
 
водні ресурси
водні ресурсиводні ресурси
водні ресурси
 
Novokuznetck Enns A.V.
Novokuznetck Enns A.V.Novokuznetck Enns A.V.
Novokuznetck Enns A.V.
 
Закриття тижня математики та інформатики
Закриття тижня математики та інформатикиЗакриття тижня математики та інформатики
Закриття тижня математики та інформатики
 
Продвижение больших сайтов в 2020 году
Продвижение больших сайтов в 2020 годуПродвижение больших сайтов в 2020 году
Продвижение больших сайтов в 2020 году
 
Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎
 
вікові проблеми підлітків
вікові проблеми підлітківвікові проблеми підлітків
вікові проблеми підлітків
 

Andere mochten auch

Andere mochten auch (9)

Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Обслуживание мультисайтинга
Обслуживание мультисайтингаОбслуживание мультисайтинга
Обслуживание мультисайтинга
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
DrupalCamp Kyiv 2009 Official Report
DrupalCamp Kyiv 2009 Official ReportDrupalCamp Kyiv 2009 Official Report
DrupalCamp Kyiv 2009 Official Report
 
Что нового в Drupal 7
Что нового в Drupal 7Что нового в Drupal 7
Что нового в Drupal 7
 
2day Opening
2day Opening2day Opening
2day Opening
 
1day Opening
1day Opening1day Opening
1day Opening
 
Безопасный код
Безопасный кодБезопасный код
Безопасный код
 
How to Make a Barcamp
How to Make a BarcampHow to Make a Barcamp
How to Make a Barcamp
 

Mehr von Drupal Camp Kyiv

Разработка соц. сети на Друпале
Разработка соц. сети на ДрупалеРазработка соц. сети на Друпале
Разработка соц. сети на ДрупалеDrupal Camp Kyiv
 
За что мы ненавидим Drupal
За что мы ненавидим DrupalЗа что мы ненавидим Drupal
За что мы ненавидим DrupalDrupal Camp Kyiv
 
Многоязычие сайта на Drupal
Многоязычие сайта на DrupalМногоязычие сайта на Drupal
Многоязычие сайта на DrupalDrupal Camp Kyiv
 
Drupal 7 development: first impressions
Drupal 7 development: first impressionsDrupal 7 development: first impressions
Drupal 7 development: first impressionsDrupal Camp Kyiv
 
Веб-аналитика в Drupal2
Веб-аналитика в Drupal2Веб-аналитика в Drupal2
Веб-аналитика в Drupal2Drupal Camp Kyiv
 
Веб-аналитика в Drupal1
Веб-аналитика в Drupal1Веб-аналитика в Drupal1
Веб-аналитика в Drupal1Drupal Camp Kyiv
 
Who is here? DrupalCamp Kyiv 2009 opening
Who is here? DrupalCamp Kyiv 2009 openingWho is here? DrupalCamp Kyiv 2009 opening
Who is here? DrupalCamp Kyiv 2009 openingDrupal Camp Kyiv
 
Разработка модуля для Cms Drupal
Разработка модуля для Cms DrupalРазработка модуля для Cms Drupal
Разработка модуля для Cms DrupalDrupal Camp Kyiv
 
Продвинутый мультисайтинг
Продвинутый мультисайтингПродвинутый мультисайтинг
Продвинутый мультисайтингDrupal Camp Kyiv
 
Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Drupal Camp Kyiv
 
Азы мультисайтинга
Азы мультисайтингаАзы мультисайтинга
Азы мультисайтингаDrupal Camp Kyiv
 
Эффективное управление содержимым веб-сайтов
Эффективное управление содержимым веб-сайтовЭффективное управление содержимым веб-сайтов
Эффективное управление содержимым веб-сайтовDrupal Camp Kyiv
 

Mehr von Drupal Camp Kyiv (17)

Разработка соц. сети на Друпале
Разработка соц. сети на ДрупалеРазработка соц. сети на Друпале
Разработка соц. сети на Друпале
 
За что мы ненавидим Drupal
За что мы ненавидим DrupalЗа что мы ненавидим Drupal
За что мы ненавидим Drupal
 
Многоязычие сайта на Drupal
Многоязычие сайта на DrupalМногоязычие сайта на Drupal
Многоязычие сайта на Drupal
 
I Net
I NetI Net
I Net
 
Gallery API
Gallery APIGallery API
Gallery API
 
Drupal 7 development: first impressions
Drupal 7 development: first impressionsDrupal 7 development: first impressions
Drupal 7 development: first impressions
 
Drupal on ASP.Net
Drupal on ASP.NetDrupal on ASP.Net
Drupal on ASP.Net
 
Веб-аналитика в Drupal2
Веб-аналитика в Drupal2Веб-аналитика в Drupal2
Веб-аналитика в Drupal2
 
Веб-аналитика в Drupal1
Веб-аналитика в Drupal1Веб-аналитика в Drupal1
Веб-аналитика в Drupal1
 
Who is here? DrupalCamp Kyiv 2009 opening
Who is here? DrupalCamp Kyiv 2009 openingWho is here? DrupalCamp Kyiv 2009 opening
Who is here? DrupalCamp Kyiv 2009 opening
 
Разработка модуля для Cms Drupal
Разработка модуля для Cms DrupalРазработка модуля для Cms Drupal
Разработка модуля для Cms Drupal
 
Продвинутый мультисайтинг
Продвинутый мультисайтингПродвинутый мультисайтинг
Продвинутый мультисайтинг
 
Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3
 
Азы мультисайтинга
Азы мультисайтингаАзы мультисайтинга
Азы мультисайтинга
 
Zen based theming
Zen based themingZen based theming
Zen based theming
 
ARSA
ARSAARSA
ARSA
 
Эффективное управление содержимым веб-сайтов
Эффективное управление содержимым веб-сайтовЭффективное управление содержимым веб-сайтов
Эффективное управление содержимым веб-сайтов
 

Текст доклада о разработке плагина к модулю ССК

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