SlideShare a Scribd company logo
1 of 14
Download to read offline
Разработка и deploy
   Drupal сайтов
с помощью Features


Фиделин Евгений, DrupalCamp Kiev 2012
Есть одна проблема при
 разработке сайтов

Конфигурации модулей хранятся в
БД и не отделены от контента.

А значит:
○ сложно переносить настройки не меняя
   контент,
○ сложно отслеживать изменение настроек,
○ проблематично организовывать deploy и
   командную работу.
Есть одна проблема при
разработке сайтов
Это решается с помощью
 модуля Features!
Features переносят конфигурации из
БД в код специального модуля(ей).

А также:
○ установка, контроль и откат изменений,
○ удобный пользовательский интерфейс,
○ создание библиотеки готовых решений,
○ использование система контроля версий,
○ интеграция с Drush.
Что можно переносить с помощью
 Features?
Из коробки:                  Интегрированные модули:
○ Content types, Fields,     ○ Views
   Fieldgroup                ○ Flag
○ Taxonomy vocabularies      ○ Context
○ User Roles, Permissions    ○ Nodequeues
○ Menus & Menu links           (fe_nodequeue)
○ Languages                  ○ CKEditor profiles
○ Image styles               ○ ... многие другие
○ Text formats and filters
○ Variables (strongarm)      И даже контент:
○ Dependencies               ○ Nodes, taxonomy terms,
                                users, files (uuid)
Давайте создадим новую Feature
/admin/structure/features/create
Посмотрим, что у Feature внутри
sites/all/modules/contrib/features

Feature представляет обычный модуль,
реализующий специальные хуки.
              articles.info                                  articles.features.inc
                                                             /**
              name = Articles                                 * Implements hook_node_info().
              description = Articles content type & view      */
              core = 7.x                                     function articles_node_info() {
              package = Features Content                       $items = array(
              version = 7.x-1.0                                  'article' => array(
              project = articles                                   'name' => t('Article'),
              dependencies[] = features                            'base' => 'node_content',
              dependencies[] = strongarm                           'description' => t('Use
              dependencies[] = taxonomy                      <em>articles</em> for time-sensitive
              dependencies[] = views                         content like news, press releases or blog
              features[field][] = node-article-body          posts.'),
              features[field][] = node-article-field_image         'has_title' => '1',
              features[field][] = node-article-field_tags          'title_label' => t('Title'),
              features[field][] = node-page-body                   'help' => '',
              features[node][] = article                         ),
              features[taxonomy][] = tags                      );
              features[views_view][] = articles                return $items;
                                                             }
Управление Features
/admin/structure/features

Feature не установлена



Feature активна



Компоненты Feature изменены

                              click
Revert или Recreate
/admin/structure/features/articles

               Код         Revert
              модуля       Recreate
                                      БД
Смотрим, что же изменилось
 /admin/structure/features/articles

Модули Diff и Features override позволяют
увидеть свойства, которые были изменены
Как использовать Features.
Основные шаги
● Создайте новый функционал и добавьте
  его в Feature.
● Редактируйте, меняйте функционал и
  отслеживайте изменения в Feature.
● Делайте Recreate если новый
  обновленный функционал нужно
  сохранить в Feature.
● Делайте Revert если нужно отменить
  изменения на сайте.
● Следите чтобы у вас были актуальные
  версии всех Features.
Пару советов
из личного опыта
● Объединение компонентов в одну Feature
  ○ неделимый функционал,
  ○ логическая связь или зависимость,
  ○ минимизация одновременного изменения,
    несколькими разработчиками,
  ○ объединяйте Feature в Packages.
● Если Feature не помогает Revert
  ○ убедится что компонент не относятся к
    отключенному модулю,
  ○ попробовать изменить напрямую в админке
    модуля или БД,
  ○ если проблема с Views - сделать Revert c
    admin/structure/views.
Используйте Features -
они экономят ваше время
Спасибо за внимание!
Есть вопросы?



          Фиделин Евгений
          eugene.fidelin@gmail.com
          Skype: eugene.fidelin
          facebook.com/eugene.fidelin

More Related Content

Similar to Разработка и deploy Drupal сайтов с помощью Features.

Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
DrupalCampDN
 
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
LEDC 2016
 
Создание дистрибутивов Drupal. Почему, зачем и как?
Создание дистрибутивов Drupal. Почему, зачем и как?Создание дистрибутивов Drupal. Почему, зачем и как?
Создание дистрибутивов Drupal. Почему, зачем и как?
Alexei Gorobets
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
camp_drupal_ua
 
Интегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятиеИнтегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятие
itc73
 
Интегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятиеИнтегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятие
itc73
 
Ubercart7 views catalog ru
Ubercart7 views catalog ruUbercart7 views catalog ru
Ubercart7 views catalog ru
Andrii Podanenko
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
metaform
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov
 

Similar to Разработка и deploy Drupal сайтов с помощью Features. (20)

Инсталляционные профили, создание сборок
Инсталляционные профили, создание сборокИнсталляционные профили, создание сборок
Инсталляционные профили, создание сборок
 
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
 
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.
 
Создание дистрибутивов Drupal. Почему, зачем и как?
Создание дистрибутивов Drupal. Почему, зачем и как?Создание дистрибутивов Drupal. Почему, зачем и как?
Создание дистрибутивов Drupal. Почему, зачем и как?
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
Интегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятиеИнтегратор Bitrix 5 занятие
Интегратор Bitrix 5 занятие
 
Интегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятиеИнтегратор Bitrix 4 занятие
Интегратор Bitrix 4 занятие
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программиста
 
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
 
Ubercart7 views catalog ru
Ubercart7 views catalog ruUbercart7 views catalog ru
Ubercart7 views catalog ru
 
10.website.pdf
10.website.pdf10.website.pdf
10.website.pdf
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Восстановление учетных записей Active Directory: сборник сценариев
Восстановление учетных записей Active Directory: сборник сценариевВосстановление учетных записей Active Directory: сборник сценариев
Восстановление учетных записей Active Directory: сборник сценариев
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
лек13 3
лек13 3лек13 3
лек13 3
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
Компоненты 2.0
Компоненты 2.0 Компоненты 2.0
Компоненты 2.0
 

More from Eugene Fidelin

More from Eugene Fidelin (11)

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
 
AngularJS in practice
AngularJS in practiceAngularJS in practice
AngularJS in practice
 
Redis persistence in practice
Redis persistence in practiceRedis persistence in practice
Redis persistence in practice
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
Работа с Views в Drupal 7
Работа с Views в Drupal 7Работа с Views в Drupal 7
Работа с Views в Drupal 7
 
Работа с полями (fields) в Drupal 7
Работа с полями (fields) в Drupal 7Работа с полями (fields) в Drupal 7
Работа с полями (fields) в Drupal 7
 
Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7
 

Разработка и deploy Drupal сайтов с помощью Features.

  • 1. Разработка и deploy Drupal сайтов с помощью Features Фиделин Евгений, DrupalCamp Kiev 2012
  • 2. Есть одна проблема при разработке сайтов Конфигурации модулей хранятся в БД и не отделены от контента. А значит: ○ сложно переносить настройки не меняя контент, ○ сложно отслеживать изменение настроек, ○ проблематично организовывать deploy и командную работу.
  • 3. Есть одна проблема при разработке сайтов
  • 4. Это решается с помощью модуля Features! Features переносят конфигурации из БД в код специального модуля(ей). А также: ○ установка, контроль и откат изменений, ○ удобный пользовательский интерфейс, ○ создание библиотеки готовых решений, ○ использование система контроля версий, ○ интеграция с Drush.
  • 5. Что можно переносить с помощью Features? Из коробки: Интегрированные модули: ○ Content types, Fields, ○ Views Fieldgroup ○ Flag ○ Taxonomy vocabularies ○ Context ○ User Roles, Permissions ○ Nodequeues ○ Menus & Menu links (fe_nodequeue) ○ Languages ○ CKEditor profiles ○ Image styles ○ ... многие другие ○ Text formats and filters ○ Variables (strongarm) И даже контент: ○ Dependencies ○ Nodes, taxonomy terms, users, files (uuid)
  • 6. Давайте создадим новую Feature /admin/structure/features/create
  • 7. Посмотрим, что у Feature внутри sites/all/modules/contrib/features Feature представляет обычный модуль, реализующий специальные хуки. articles.info articles.features.inc /** name = Articles * Implements hook_node_info(). description = Articles content type & view */ core = 7.x function articles_node_info() { package = Features Content $items = array( version = 7.x-1.0 'article' => array( project = articles 'name' => t('Article'), dependencies[] = features 'base' => 'node_content', dependencies[] = strongarm 'description' => t('Use dependencies[] = taxonomy <em>articles</em> for time-sensitive dependencies[] = views content like news, press releases or blog features[field][] = node-article-body posts.'), features[field][] = node-article-field_image 'has_title' => '1', features[field][] = node-article-field_tags 'title_label' => t('Title'), features[field][] = node-page-body 'help' => '', features[node][] = article ), features[taxonomy][] = tags ); features[views_view][] = articles return $items; }
  • 8. Управление Features /admin/structure/features Feature не установлена Feature активна Компоненты Feature изменены click
  • 9. Revert или Recreate /admin/structure/features/articles Код Revert модуля Recreate БД
  • 10. Смотрим, что же изменилось /admin/structure/features/articles Модули Diff и Features override позволяют увидеть свойства, которые были изменены
  • 11. Как использовать Features. Основные шаги ● Создайте новый функционал и добавьте его в Feature. ● Редактируйте, меняйте функционал и отслеживайте изменения в Feature. ● Делайте Recreate если новый обновленный функционал нужно сохранить в Feature. ● Делайте Revert если нужно отменить изменения на сайте. ● Следите чтобы у вас были актуальные версии всех Features.
  • 12. Пару советов из личного опыта ● Объединение компонентов в одну Feature ○ неделимый функционал, ○ логическая связь или зависимость, ○ минимизация одновременного изменения, несколькими разработчиками, ○ объединяйте Feature в Packages. ● Если Feature не помогает Revert ○ убедится что компонент не относятся к отключенному модулю, ○ попробовать изменить напрямую в админке модуля или БД, ○ если проблема с Views - сделать Revert c admin/structure/views.
  • 13. Используйте Features - они экономят ваше время
  • 14. Спасибо за внимание! Есть вопросы? Фиделин Евгений eugene.fidelin@gmail.com Skype: eugene.fidelin facebook.com/eugene.fidelin