Разработка и deploy drupal сайтов с помощью features
DESCRIPTION
Как использовать модуль Features для быстрой разработки и деплоя сайтов на Drupal 7. Советы по использованию и обзор возможностей.TRANSCRIPT
Разработка и deployDrupal сайтов
с помощью Features
Фиделин Евгений, DrupalCamp Kiev 2012
Конфигурации модулей хранятся в БД и не отделены от контента.
А значит:○ сложно переносить настройки не меняя
контент,○ сложно отслеживать изменение настроек,○ проблематично организовывать deploy и
командную работу.
Есть одна проблема при разработке сайтов
Есть одна проблема при разработке сайтов
Это решается с помощьюмодуля Features!
Features переносят конфигурации из БД в код специального модуля(ей).
А также:○ установка, контроль и откат изменений,○ удобный пользовательский интерфейс,○ создание библиотеки готовых решений,○ использование система контроля версий,○ интеграция с Drush.
Что можно переносить с помощью Features?
Из коробки:○ Content types, Fields,
Fieldgroup○ Taxonomy vocabularies○ User Roles, Permissions○ Menus & Menu links○ Languages○ Image styles○ Text formats and filters○ Variables (strongarm)○ Dependencies
Интегрированные модули:○ Views○ Flag○ Context○ Nodequeues
(fe_nodequeue)○ CKEditor profiles○ ... многие другие
И даже контент:○ Nodes, taxonomy terms,
users, files (uuid)
Давайте создадим новую Feature/admin/structure/features/create
Посмотрим, что у Feature внутриsites/all/modules/contrib/features
Feature представляет обычный модуль, реализующий специальные хуки.
name = Articlesdescription = Articles content type & viewcore = 7.xpackage = Features Contentversion = 7.x-1.0project = articlesdependencies[] = featuresdependencies[] = strongarmdependencies[] = taxonomydependencies[] = viewsfeatures[field][] = node-article-bodyfeatures[field][] = node-article-field_imagefeatures[field][] = node-article-field_tagsfeatures[field][] = node-page-bodyfeatures[node][] = articlefeatures[taxonomy][] = tagsfeatures[views_view][] = articles
/** * Implements hook_node_info(). */function articles_node_info() { $items = array( 'article' => array( 'name' => t('Article'), 'base' => 'node_content', 'description' => t('Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.'), 'has_title' => '1', 'title_label' => t('Title'), 'help' => '', ), ); return $items;}
articles.info articles.features.inc
Управление 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 - они экономят ваше время
Спасибо за внимание!Есть вопросы?
Фиделин Евгений [email protected]: eugene.fidelinfacebook.com/eugene.fidelin