SlideShare une entreprise Scribd logo
1  sur  13
Работа с полями (fields) в Drupal 7

    Поле (field) — служит для добавления к сущностям
    (материалам, комментариям, пользователям, таксономии и
    файлам) дополнительных данных

    Поле определяется типом данных и виджетом (способом
    отображения поля на форме)
Основные настройки полей (fields) в Drupal 7

    Настройки поля деляться на общие и специфичные для
    каждого типа материала
Работа с полями (fields) в Drupal 7

    Для каждого вида отображения материала может быть свой
    форматтер (способ отображения на странице) для каждого
    поля
Основные типы полей в Drupal 7
        Тип поля             Виджеты                             Описание
Boolean             Check boxes/radio buttons   Поле для хранения флага да/нет
                    Single on/off checkbox
Decimal             Text field                  Поле для хранения числовых значений с
Float                                           разной точностью
Integer
File                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    быть расширено визуальным редактором)
summary
Term reference      Select list                 Поле для выбора термина таксономии
                    Check boxes/radio buttons
                    Autocomplete term widget

Text                Text field                  Поле для хранения короткого однострочного
                                                текста
Дополнительные типы полей в 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)
Работа с группами полей (fieldgroup) в Drupal 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, формат ввода для данного поля
Сохранение значений полей в БД 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;
Получение значений полей в БД 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)
           )
           */
Вывод и отображение полей в 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);
Расширенные возможности

    Создание собственных типов полей


    Добавление полей к другим сущностям


    Запросы к полям через EntityFieldQuery


    Работа с шаблонами материалов (отдельная лекция)
Ссылки на подробную информацию


    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
Контакты

    Фиделин Евгений


    Компания QArea


    Email: eugene.fidelin@gmail.com


    Skype: eugene.fidelin

Contenu connexe

Tendances

Темизация и Twig в Drupal 8
Темизация и Twig в Drupal 8Темизация и Twig в Drupal 8
Темизация и Twig в Drupal 8DrupalSPB
 
Лекция 5
Лекция 5Лекция 5
Лекция 5itc73
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1drupalconf
 
Игорь Любин - PowerShell - ConfeT&QA 2011
Игорь Любин - PowerShell - ConfeT&QA 2011Игорь Любин - PowerShell - ConfeT&QA 2011
Игорь Любин - PowerShell - ConfeT&QA 2011ilyubin
 
Entity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланEntity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланDrupalSib
 
Сущности в Drupal 7
Сущности в Drupal 7Сущности в Drupal 7
Сущности в Drupal 7Itech4Web
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Magecom Ukraine
 
Толстая модель. История разработки ORM
Толстая модель. История разработки ORMТолстая модель. История разработки ORM
Толстая модель. История разработки ORMMikhail Shamin
 
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)ZFConf Conference
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода выводаmetaform
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Fedor Lavrentyev
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЯковенко Кирилл
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 

Tendances (19)

Authemployee
AuthemployeeAuthemployee
Authemployee
 
Темизация и Twig в Drupal 8
Темизация и Twig в Drupal 8Темизация и Twig в Drupal 8
Темизация и Twig в Drupal 8
 
Лекция 5
Лекция 5Лекция 5
Лекция 5
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
Lection1
Lection1Lection1
Lection1
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1
 
Игорь Любин - PowerShell - ConfeT&QA 2011
Игорь Любин - PowerShell - ConfeT&QA 2011Игорь Любин - PowerShell - ConfeT&QA 2011
Игорь Любин - PowerShell - ConfeT&QA 2011
 
Entity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай РусланEntity возрождение легенды. Исай Руслан
Entity возрождение легенды. Исай Руслан
 
Сущности в Drupal 7
Сущности в Drupal 7Сущности в Drupal 7
Сущности в Drupal 7
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
 
Толстая модель. История разработки ORM
Толстая модель. История разработки ORMТолстая модель. История разработки ORM
Толстая модель. История разработки ORM
 
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 

En vedette

Работа с Views в Drupal 7
Работа с Views в Drupal 7Работа с Views в Drupal 7
Работа с Views в Drupal 7Eugene Fidelin
 
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....Alex Barkov
 
Fields in Core: How to create a custom field
Fields in Core: How to create a custom fieldFields in Core: How to create a custom field
Fields in Core: How to create a custom fieldIvan Zugec
 
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...Lviv Startup Club
 
Выбираем CMS - шаг за шагом
Выбираем CMS - шаг за шагомВыбираем CMS - шаг за шагом
Выбираем CMS - шаг за шагомPetr Ponomarev
 
Что такое Drupal CMS
Что такое Drupal CMSЧто такое Drupal CMS
Что такое Drupal CMSIllya Stankevich
 
Разработка модуля для Cms Drupal
Разработка модуля для Cms DrupalРазработка модуля для Cms Drupal
Разработка модуля для Cms DrupalDrupal Camp Kyiv
 
Drupal And Google
Drupal And GoogleDrupal And Google
Drupal And Googleguest2766ed
 
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса.
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса. Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса.
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса. ARTW
 
Drupal: система для быстрой и комфортной разработки web-сайтов
Drupal: система для быстрой и комфортной разработки web-сайтовDrupal: система для быстрой и комфортной разработки web-сайтов
Drupal: система для быстрой и комфортной разработки web-сайтовAlex Barkov
 
Презентация к вебинару по CMS WordPress
Презентация к вебинару по CMS WordPressПрезентация к вебинару по CMS WordPress
Презентация к вебинару по CMS WordPressЕвгений Холин
 
Многоязычие сайта на Drupal
Многоязычие сайта на DrupalМногоязычие сайта на Drupal
Многоязычие сайта на DrupalDrupal Camp Kyiv
 

En vedette (15)

Работа с Views в Drupal 7
Работа с Views в Drupal 7Работа с Views в Drupal 7
Работа с Views в Drupal 7
 
AngularJS in practice
AngularJS in practiceAngularJS in practice
AngularJS in practice
 
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....
Bionic University. Разработка с использованием CMS/CMF Drupal. Быстрый старт....
 
Fields in Core: How to create a custom field
Fields in Core: How to create a custom fieldFields in Core: How to create a custom field
Fields in Core: How to create a custom field
 
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...
Дмитро Суслов “Порівняння різних типів CMS: самописні «движки», безкоштовні с...
 
Выбираем CMS - шаг за шагом
Выбираем CMS - шаг за шагомВыбираем CMS - шаг за шагом
Выбираем CMS - шаг за шагом
 
Что такое Drupal CMS
Что такое Drupal CMSЧто такое Drupal CMS
Что такое Drupal CMS
 
Разработка модуля для Cms Drupal
Разработка модуля для Cms DrupalРазработка модуля для Cms Drupal
Разработка модуля для Cms Drupal
 
Drupal And Google
Drupal And GoogleDrupal And Google
Drupal And Google
 
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса.
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса. Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса.
Основы создания сайта. Часть вторая. Обзор CMS. Выбор CMS под нужды бизнеса.
 
Drupal: система для быстрой и комфортной разработки web-сайтов
Drupal: система для быстрой и комфортной разработки web-сайтовDrupal: система для быстрой и комфортной разработки web-сайтов
Drupal: система для быстрой и комфортной разработки web-сайтов
 
Drupal Paranoia
Drupal ParanoiaDrupal Paranoia
Drupal Paranoia
 
Lviv 2013 d7 vs d8
Lviv 2013   d7 vs d8Lviv 2013   d7 vs d8
Lviv 2013 d7 vs d8
 
Презентация к вебинару по CMS WordPress
Презентация к вебинару по CMS WordPressПрезентация к вебинару по CMS WordPress
Презентация к вебинару по CMS WordPress
 
Многоязычие сайта на Drupal
Многоязычие сайта на DrupalМногоязычие сайта на Drupal
Многоязычие сайта на Drupal
 

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

Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011camp_drupal_ua
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4Zhanna Kazakova
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3itc73
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&cssitc73
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинdrupalconf
 
введение
введениевведение
введениеanxesenpa
 
Ado.net module 6 entity framework
Ado.net module 6 entity frameworkAdo.net module 6 entity framework
Ado.net module 6 entity frameworkAndrii Hladkyi
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage DrupalInna Tuyeva
 
Rupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev RubyRupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev Rubyemarkine
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в DelphiAeka227
 

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

Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
Module 4
Module 4Module 4
Module 4
 
Верстка_Лекция_3
Верстка_Лекция_3Верстка_Лекция_3
Верстка_Лекция_3
 
Present forms&css
Present forms&cssPresent forms&css
Present forms&css
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
9946
99469946
9946
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихин
 
лек5 6
лек5 6лек5 6
лек5 6
 
введение
введениевведение
введение
 
Text
TextText
Text
 
Ado.net module 6 entity framework
Ado.net module 6 entity frameworkAdo.net module 6 entity framework
Ado.net module 6 entity framework
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
Grails & Groovy
Grails & GroovyGrails & Groovy
Grails & Groovy
 
Multilanguage Drupal
Multilanguage DrupalMultilanguage Drupal
Multilanguage Drupal
 
Rupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev RubyRupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev Ruby
 
Backbone js
Backbone jsBackbone js
Backbone js
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
лек13 3
лек13 3лек13 3
лек13 3
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в Delphi
 

Plus de Eugene Fidelin

Testing: Do More With Less
Testing: Do More With LessTesting: Do More With Less
Testing: Do More With LessEugene Fidelin
 
Node.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsNode.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsEugene Fidelin
 
Housekeeping the platform at scale
Housekeeping the platform at scaleHousekeeping the platform at scale
Housekeeping the platform at scaleEugene Fidelin
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsEugene Fidelin
 
Redis persistence in practice
Redis persistence in practiceRedis persistence in practice
Redis persistence in practiceEugene Fidelin
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтовEugene Fidelin
 
Разработка и deploy Drupal сайтов с помощью Features.
Разработка и deploy Drupal сайтов с помощью Features.Разработка и deploy Drupal сайтов с помощью Features.
Разработка и deploy Drupal сайтов с помощью Features.Eugene Fidelin
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7Eugene Fidelin
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Eugene Fidelin
 

Plus de Eugene Fidelin (9)

Testing: Do More With Less
Testing: Do More With LessTesting: Do More With Less
Testing: Do More With Less
 
Node.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsNode.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontends
 
Housekeeping the platform at scale
Housekeeping the platform at scaleHousekeeping the platform at scale
Housekeeping the platform at scale
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
 
Redis persistence in practice
Redis persistence in practiceRedis persistence in practice
Redis persistence in practice
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
Разработка и deploy Drupal сайтов с помощью Features.
Разработка и deploy Drupal сайтов с помощью Features.Разработка и deploy Drupal сайтов с помощью Features.
Разработка и deploy Drupal сайтов с помощью Features.
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.
 

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

  • 1. Работа с полями (fields) в Drupal 7  Поле (field) — служит для добавления к сущностям (материалам, комментариям, пользователям, таксономии и файлам) дополнительных данных  Поле определяется типом данных и виджетом (способом отображения поля на форме)
  • 2. Основные настройки полей (fields) в Drupal 7  Настройки поля деляться на общие и специфичные для каждого типа материала
  • 3. Работа с полями (fields) в Drupal 7  Для каждого вида отображения материала может быть свой форматтер (способ отображения на странице) для каждого поля
  • 4. Основные типы полей в Drupal 7 Тип поля Виджеты Описание Boolean Check boxes/radio buttons Поле для хранения флага да/нет Single on/off checkbox Decimal Text field Поле для хранения числовых значений с Float разной точностью Integer File 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 быть расширено визуальным редактором) summary Term reference Select list Поле для выбора термина таксономии Check boxes/radio buttons Autocomplete term widget Text Text field Поле для хранения короткого однострочного текста
  • 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. Работа с группами полей (fieldgroup) в Drupal 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. Сохранение значений полей в БД 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. Получение значений полей в БД 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. Вывод и отображение полей в 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. Расширенные возможности  Создание собственных типов полей  Добавление полей к другим сущностям  Запросы к полям через EntityFieldQuery  Работа с шаблонами материалов (отдельная лекция)
  • 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. Контакты  Фиделин Евгений  Компания QArea  Email: eugene.fidelin@gmail.com  Skype: eugene.fidelin