Работа с полями (fields) в Drupal 7

16,439 views

Published on

Лекция для студентов НТУ ХПИ. Рассматривает основы работы с полями (nodes) в Drupal 7 - рассмотрен вопрос использования существующих поелй, их настройка, программная работа с полями,

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
16,439
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
59
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Работа с полями (fields) в Drupal 7

  1. 1. Работа с полями (fields) в Drupal 7 Поле (field) — служит для добавления к сущностям (материалам, комментариям, пользователям, таксономии и файлам) дополнительных данных Поле определяется типом данных и виджетом (способом отображения поля на форме)
  2. 2. Основные настройки полей (fields) в Drupal 7 Настройки поля деляться на общие и специфичные для каждого типа материала
  3. 3. Работа с полями (fields) в Drupal 7 Для каждого вида отображения материала может быть свой форматтер (способ отображения на странице) для каждого поля
  4. 4. Основные типы полей в Drupal 7 Тип поля Виджеты ОписаниеBoolean Check boxes/radio buttons Поле для хранения флага да/нет Single on/off checkboxDecimal Text field Поле для хранения числовых значений сFloat разной точностьюIntegerFile File Поле для загрузки произвольных файлов, можно ограничивать по типам файлам и размеруImage Image Поле для загрузки картинок, аналогчино File, но может показывать превью и ограничивать размер в пикселях загружаемой картинкиList (float) Select list Поля для хранения числовых значений,List (integer) Check boxes/radio buttons которые пользователь выбирает изList (decimal) предложенного спискаLong text Text area (multiple rows) Многострочное поле ввода текста (можетLong text with Text area with a summary быть расширено визуальным редактором)summaryTerm reference Select list Поле для выбора термина таксономии Check boxes/radio buttons Autocomplete term widgetText Text field Поле для хранения короткого однострочного текста
  5. 5. Дополнительные типы полей в Drupal 7  Модули, которые предоставляют свои поля можно скачать здесь: – http://drupal.org/project/modules?filters=tid %3A20224%20drupal_core%3A103 Тип поля Виджеты ОписаниеLink Text field Поле для хранения ссылки, проверяет ее правильность, можжет выводить в виде тега <a> (http://drupal.org/project/link)Email field Text field Поле для хранения емейла, проверяет правильность адреса, может защищать от спама при отображении на сайте (http://drupal.org/project/email)References Select list Поле для выбора других материалов или Check boxes/radio buttons пользователей (аналогично Term reference) Autocomplete term widget (http://drupal.org/project/references)Field group Fieldset Не поле! Служит для объединения полей на Vertical tabs форме в одну группу Horizontal tabs (http://drupal.org/project/field_group)
  6. 6. Работа с группами полей (fieldgroup) в Drupal 7 Группы служат для логического объединения полей на форме редактирования и при отображении
  7. 7. Как поля храняться в БД Drupal 7 Для каждого поля создается своя таблица Пример - таблица field_data_body — значения поля body ноды entity_type - тип сущности. В нашем случае всегда будет = node. bundle - тип материала. deleted - флаг, показывающий было ли это поле удалено entity_id - связка с сущностью. В нашем случае, с полем nid из таблицы node. revision_id - связка с версией сущности, В нашем случае, с полем мid из таблицы node_revisions. language - язык поля delta - порядковый номер, используется для полей, принимающих множество значений body_value - собственно, значение поля body_summary - краткое значение поля, тизер body_format - связка с таблицей filter_format, формат ввода для данного поля
  8. 8. Сохранение значений полей в БД Drupal 7 node_save() - сохранение значения полей ноды в БД – $new_node = new StdClass(); $new_node->type = portfolio; $new_node->title = Новый заголовок; $new_node->uid = 1; //если нет языков - LANGUAGE_NONE $new_node->language = ru; $new_node->body[$node->language][0][value] = Содержимое; $new_node->body[$node->language][0][summary] = Анонс; $new_node->body[$node->language][0][format] = full_html; //поле с несколькими значениями $new_node->field_price[$node->language][0][value] = 100; $new_node->field_price[$node->language][1][value] = 101; $new_node->field_text[$node->language][0][value] = текст; node_save($new_node); // узнаем какой ID присвоился созданной ноде $nid = $new_node->nid;
  9. 9. Получение значений полей в БД Drupal 7 node_load() - загрузка данных ноды – $node = node_load(17); //указываем nid нужной ноды //теперь в $node храниться вся информация о ноде //загруженная из БД //получаем нужные значения $text = $node->field_text[$node->language][0][value]; /* $text = текст */ //получаем нужные значения для многозначных полей $prices = field_get_items(node, $node, field_price); /* $prices = array( 0 => array(value => 100), 1 => array(value => 101) ) */
  10. 10. Вывод и отображение полей в Drupal 7 field_view_value() - рендеринг значения поля – $node = node_load(17); //указываем nid нужной ноды //выводим значения одного поля //указываем вид отображения full или teaser //от этого будут зависеть настройки отображения полей $rendered_price = field_view_value(node, $node, field_price, full); //полученный массив преобразуем в HTML print drupal_render($rendered_price);
  11. 11. Расширенные возможности Создание собственных типов полей Добавление полей к другим сущностям Запросы к полям через EntityFieldQuery Работа с шаблонами материалов (отдельная лекция)
  12. 12. Ссылки на подробную информацию http://drupal.org/project/modules?filters=tid %3A20224%20drupal_core%3A103 http://api.drupal.org/api/drupal/includes %21entity.inc/class/EntityFieldQuery/7 http://api.drupal.org/api/drupal/modules%21field %21field.module/group/field/7
  13. 13. Контакты Фиделин Евгений Компания QArea Email: eugene.fidelin@gmail.com Skype: eugene.fidelin

×