Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
-
Upload
campdrupalua -
Category
Technology
-
view
1.599 -
download
1
description
Transcript of Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Field APIэто не страшно
Gold Sponsor ofDrupalCamp Kyiv 2011
Silver Sponsors ofDrupalCamp Kyiv 2011
Что такое Field API?
Наследник модуля CCK Серьезно переработанный модуль CCK Механизмы хранения ввода и отображения
полей в Drupal 7
Организация работы с данным в Drupal 7
Entities Field Types Field Instances Bundles Widgets Formatters
Сущности
Базовый механизм хранения информации в D7
Это не ноды
Типы полей
Механизмы хранения и проверки Функции ввода данных Функции отображения данных
Сходны с типами в языках программирования
Поля (Field Instances)
Экземпляр поля Хранит реальные данные Связан с конкретной сущностью
Bundle
С точки зрения системы: набор полей присоединенных к какой-то сущности
С точки зрения пользователя: сущность с полями
Виджеты
Функции проверки данных Формы ввода данных
Форматтеры
Темизация вывода информации для полей
Field API
Field Types API Field Info API Field CRUD API Field Storage API Field API bulk data deletion Field Language API
Field Types API
Схема Информация Загрузка Хранение Виджеты Форматтеры
Field Info API
Предоставление информации для других модулей о полях, виджетах и т.п.
Field CRUD API
Расширенный набор функций для Создания Удаления Очистки Обновления
полей, виджетов и т.п.
Field Attach API
Используется для связки сущностей и полей Выполняется перед функциями Field Storage
API и Field Type API
Field Storage API
Позволяет реализовывать собственные механизмы хранения полей
Базовый механизм в Drupal field_sql_storage.module
Field API bulk data deletion
field_attach_delete()– hook_field_delete()
– hook_field_storage_delete()
– hook_field_attach_delete() Поля и данные не удаляются сразу
Field Language API
Поля имеют поддержку многоязычности “из коробки”
Для непереводимых добавлен язык LANGUAGE_NONE
Use cases
Widget
Необходимые хуки
hook_field_widget_form()
hook_field_widget_info()
hook_field_is_empty()
#process, #value_callback, #element_validate
$field = field_widget_field($element, $form_state);
$instance = field_widget_instance($element, $form_state);
Форматтер
Необходимые хуки
hook_field_formatter_info()
hook_field_formatter_view()
hook_field_formatter_prepare_view()
Собственная обработка многоязычности
hook_field_prepare_translation()
Собственные поля
Типичное решение
Используем тип контента Добавляем поля Используем механизмы CCK для хранения и
обработки В шаблоне/препроцесс функциях
обрабатываем вывод
Возможные усложнения задачи
Форму мы делаем руками У нас не одна форма, а несколько У нас нужно ввести несколько фамилий на
одной форме
Field API/Drupal way
Смотрим на Drupal.org Создаем свой тип поля Делаем свой форматтер Делаем свой виджет Контрибутим на d.org или складываем в
копилочку
Завершение
Field API это не только создание собственных полей
Будьте ленивы
Что получаем взамен
Поддерживаемость Расширяемость Облегчение работы Славу у уважение собратьев-разработчиков
Полезные ссылки
api.drupal.org
Вопросы к докладчику
Павел
Махринский
Skype: gumanista
Facebook: facebook.com/gumanist