pavel makhrinsky.field api.drupalcamp kyiv 2011

31
Field API это не страшно

Upload: campdrupalua

Post on 14-Dec-2014

1.600 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field APIэто не страшно

Page 2: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Gold Sponsor ofDrupalCamp Kyiv 2011

Page 3: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Silver Sponsors ofDrupalCamp Kyiv 2011

Page 4: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Что такое Field API?

Наследник модуля CCK Серьезно переработанный модуль CCK Механизмы хранения ввода и отображения

полей в Drupal 7

Page 5: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Организация работы с данным в Drupal 7

Entities Field Types Field Instances Bundles Widgets Formatters

Page 6: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Сущности

Базовый механизм хранения информации в D7

Это не ноды

Page 7: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Типы полей

Механизмы хранения и проверки Функции ввода данных Функции отображения данных

Сходны с типами в языках программирования

Page 8: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Поля (Field Instances)

Экземпляр поля Хранит реальные данные Связан с конкретной сущностью

Page 9: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Bundle

С точки зрения системы: набор полей присоединенных к какой-то сущности

С точки зрения пользователя: сущность с полями

Page 10: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Виджеты

Функции проверки данных Формы ввода данных

Page 11: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Форматтеры

Темизация вывода информации для полей

Page 12: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field API

Field Types API Field Info API Field CRUD API Field Storage API Field API bulk data deletion Field Language API

Page 13: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field Types API

Схема Информация Загрузка Хранение Виджеты Форматтеры

Page 14: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field Info API

Предоставление информации для других модулей о полях, виджетах и т.п.

Page 15: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field CRUD API

Расширенный набор функций для Создания Удаления Очистки Обновления

полей, виджетов и т.п.

Page 16: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field Attach API

Используется для связки сущностей и полей Выполняется перед функциями Field Storage

API и Field Type API

Page 17: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field Storage API

Позволяет реализовывать собственные механизмы хранения полей

Базовый механизм в Drupal field_sql_storage.module

Page 18: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field API bulk data deletion

field_attach_delete()– hook_field_delete()

– hook_field_storage_delete()

– hook_field_attach_delete() Поля и данные не удаляются сразу

Page 19: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field Language API

Поля имеют поддержку многоязычности “из коробки”

Для непереводимых добавлен язык LANGUAGE_NONE

Page 20: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Use cases

Page 21: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

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);

Page 22: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Форматтер

Необходимые хуки

hook_field_formatter_info()

hook_field_formatter_view()

hook_field_formatter_prepare_view()

Page 23: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Собственная обработка многоязычности

hook_field_prepare_translation()

Page 24: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Собственные поля

Page 25: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Типичное решение

Используем тип контента Добавляем поля Используем механизмы CCK для хранения и

обработки В шаблоне/препроцесс функциях

обрабатываем вывод

Page 26: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Возможные усложнения задачи

Форму мы делаем руками У нас не одна форма, а несколько У нас нужно ввести несколько фамилий на

одной форме

Page 27: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Field API/Drupal way

Смотрим на Drupal.org Создаем свой тип поля Делаем свой форматтер Делаем свой виджет Контрибутим на d.org или складываем в

копилочку

Page 28: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Завершение

Field API это не только создание собственных полей

Будьте ленивы

Page 29: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Что получаем взамен

Поддерживаемость Расширяемость Облегчение работы Славу у уважение собратьев-разработчиков

Page 30: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Полезные ссылки

api.drupal.org

Page 31: Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011

Вопросы к докладчику

Павел

Махринский

Skype: gumanista

Facebook: facebook.com/gumanist