SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Делаем дистрибутивы
Почему, Зачем и Как?

Алексей Горобец
asgorobets
Обо мне
* Senior Drupal Developer @ Propeople
* 2 года в Drupal
* Трейнер
* Комьюнити лидер
O Propeople

http://wearepropeople.com
O Propeople
В зале у нас?
* Разработчики
В зале у нас?
* Разработчики
* Сайт-билдеры
В зале у нас?
* Разработчики
* Сайт-билдеры
* Front-end разработчики
В зале у нас?
* Разработчики
* Сайт-билдеры
* Front-end разработчики
* Менеджеры проектов
На повестке дня
1. Что такое дистрибутив и зачем они
нужны?
2. В каких случаях стоит создавать свой
дистрибутив?
3. Как создать и поддерживать свой
дистрибутив
Немного фактов

По данным http://w3techs.com/
Немного фактов

По данным http://w3techs.com/
Чего же не хватает в Drupal?
* Листинг контента?
* WYSIWYG?
* Удобный интерфейс?
* Менеджемент медиа?
* Поле типа Date и Link?
Два типа пользователей

Все есть, только
надо настроить. Вот
тебе туториалы,
смотри как все
просто!

К черту ваш Drupal.
Неюзабельный и
сложный он!
Что такое дистрибутив?
Что такое дистрибутив?
Дистрибутивы предоставляют
упакованную версию ядра Drupal
с контриб модулями
предварительно настроенными
под определенный тип сайта.
Ядро Drupal и contrib
Drupal distribution
Популярные дистрибутивы
Commerce Kickstart
OpenPublish
OpenPublic
Drupal Commons
Open Atrium
COD
Почему дистрибутивы
существуют?
Не изобретай колесо!
Почему дистрибутивы
существуют?
Наши услуги не всем по корману
Distribution vs Install
Profile
Так вы хотите разработать
дистрибутив?
А стоит ли?
So You Guys Want to Build a Drupal Distribution
http://www.youtube.com/watch?v=ECrUuRGzuH0
http://prezi.com/k2d_x8eczfzu/so-you-want-to-build-a-drupal-distro/
Так вы хотите разработать
дистрибутив?
Может вам нужен Install
Profile?
Distribution:

Install Profile:

* Брендированный продукт
* Решает определенный
юзкейс
* Является публичным
проектом и поддерживается
сообществом
* Фокус на конечного
пользователя (готов к
использованию)

* Предустанавливает модули
* Создает конфигурации
* Для внутреннего
использования
* Фокус на разработчика
(готов к началу разработки)
Или build base?

* У вас Continuous Integration?
* Распределенная команда разработчиков?
* Нужна стандартизация?
* Нужно автоматическое тестирование?
* Надоело повторяться?
С чего начать?
Install Profile
myprofile.info
myprofile.profile
myprofile.install
Install Profile
myprofile.info
name = My Profile
description = Description of what the profile does.

core = 7.x
dependencies[] = block
dependencies[] = color
dependencies[] = comment
dependencies[] = contextual
dependencies[] = dashboard
dependencies[] = help
dependencies[] = image
dependencies[] = list
dependencies[] = menu
dependencies[] = number
dependencies[] = options
Install Profile
myprofile.profile
То же что и .module для модулей. Здесь удобно
определять hook_install_tasks и подобные вещи
связанные с процессом инсталяции.
Install Profile
Install Profile
myprofile.install

<?php/** * Implement hook_install(). * * Perform actions to set up
the site for this profile. */function profilename_install() {
include_once DRUPAL_ROOT . '/profiles/minimal/minimal.install';
minimal_install();
}?>
Основные инструменты
Features
Features
Features
FAQ и подводные камни
* Как правильно упаковывать компоненты?
Не создавайте фичи по принципу общего типа
компонента. Гиганты вроде Acme Content Types, или
Acme Views зделают вашу систему сильнозависимой, их нельзя будет отключить, а
реорганизация покажется адом.
Организовывайте фичи по принципу независимого
функционала.
Например:
Blog, Gallery, Voting
FAQ и подводные камни
* Как организовать фичи для реутилизации
полей
Нет необходимости дублировать поля общего
назначения. Создавайте общие поля указывая их
характеристики в имени поля.
Например:
field_file_single_public
Поле типа файл, принимающее единственное
значение, использует Public директорию.
field_link_single, field_content_ref,
field_body_no_summary
FAQ и подводные камни
* Как избежать конфликтов с base fields
Все field_base полезно экспортировать в отдельную
фичу, а уже field_instance в фичу с контент тайпом.

Например:
Acme Base Fields - field_base:field_body
Acme Blog - field_instance:field_body
Acme Article - field_instance:field_body
FAQ и подводные камни
* Как экспортить мои File Display в фичу если они
определяются в hook_default_COMPONENT?
Любую фичу можно переиспользовать экспортирую
только необходимые изменения с помошью Features
Override
FAQ и подводные камни
* Как экспортить variables
Не волнуемся, на помошь приходит модуль
Strongarm
Основные инструменты
Features

Drush make
Простой Drush make
api = 2
; Core project
projects[drupal][version] = 7

; Modules
; -------projects[ctools][version] = 1.3
projects[ctools][type] = "module"
projects[libraries][version] = 2.1
projects[libraries][type] = "module"
projects[wysiwyg][version] = 2.2
projects[wysiwyg][type] = "module"
projects[views][version] = 3.7
projects[views][type] = "module"
Drush make для дистрибутива
Stub make
Подтягивает ядро Drupal и сам install profile.
Здесь есть одно преимущество - удобно подтягивать
несколько install profiles в вашем дистрибутиве.
Profile make
Подтягивает модули, темы, библиотеки, применяет
патчи
Stub make
distro.make
api = 2
core = 7.x

projects[drupal][type] = core
projects[drupal][version] = "7.23"
; This fixes multiple upload fields in gsb_media_center. http://drupal.org/node/1620030
projects[drupal][patch][1620030] = http://drupal.org/files/1620030-d7-2.patch
projects[drupal][patch][1702132] = http://drupal.org/files/drupal-7.14-ajax-showeffect-notfunction-1702132.patch
projects[drupal][patch][1783278] = https://drupal.org/files/schema-relative-1783278-7-D7-do-nottest.patch
projects[drupal][patch][1232416] = https://drupal.org/files/issues/autocomplete-1232416-17-7x.patch
; Add GSB Public Profile
projects[gsb_public][type] = profile
projects[gsb_public][download][type] = git
projects[gsb_public][download][url] = https://github.com/gsbitse/gsb_public.git
projects[gsb_public][download][branch] = 1.4
Profile make
profile.make
api = 2
core = 7.x
; Feature Flag
projects[feature_flag][type] = module
projects[feature_flag][download][type] = git
projects[feature_flag][download][url] = git@github.com:gsbitse/feature_flag.git
projects[feature_flag][download][tag] = 1.0
projects[feature_flag][subdir] = custom
; GSB Acquia Tokens
projects[gsb_acquia_tokens][type] = module
projects[gsb_acquia_tokens][download][type] = git
projects[gsb_acquia_tokens][download][url] = git@github.com:gsbitse/gsb_acquia_tokens.git
projects[gsb_acquia_tokens][download][tag] = 1.0
projects[gsb_acquia_tokens][subdir] = custom
etc...
Основные инструменты
Features

Drush make

Хуки
Обновления с hook_update_N()
/** * Add a 'year' date format. */function myprofile_update_7000() {
// Insert custom format: 2011
db_insert('date_formats')
->fields(array('format' => 'Y', 'type' => 'custom', 'locked' => 0))
->execute();
// Insert custom format: 2011
db_insert('date_format_type')
->fields(array('type' => 'year', 'title' => 'Year', 'locked' => 0))
->execute();
// Date Year Format
variable_set('date_format_year', 'Y');
}
Обновления с hook_update_N()
* Все обновления из hook_update_N также идут в
hook_install!
* Новые модули активируем в:
- dependencies (для первой инсталяции)
- hook_update_N при помощи module_enable
Билдим дистрибутив

drush make distro.make
Билдим дистрибутив

drush make distro.make

Drush make рекурсивно вызывает .make файлы из подтягиваемых
проектов! Таким образом запустив distro.make подтянются все модули
из profile.make и так далее.
Свой дистрибутив (варианты)
1. Начать с нуля
2. Использовать base distribution
3. Унаследовать дистрибутив
Подход “с нуля”
Преимущества
* Включай только то что нужно (гибкость)
Недостатки
* Изобретение велосипеда. Придется все
настраивать самим и экспортить в фичи, которые
потом поддерживать
* Дорого поддерживать контриб модули и следить за
их обновлениями
Подход “с базовой дистро”
Преимущества
* Готовые фичи из коробки
* Поддержка базовой дистрибутив сообществом
Недостатки
* Не все фичи нужны, что-то придется отключать, а
что-то переписыватьi
* Big Drupal, больше модулей, больше шансов что
всплывет баг
Представляем Panopoly
Дистро на базе Panopoly
Включить в profile.make фичи Panopoly:
projects[panopoly_core][version] = 1.0-rc5
projects[panopoly_core][subdir] = panopoly
projects[panopoly_core][patch][2087414] = https://drupal.org/files/issue-2087414.patch

projects[panopoly_images][version] = 1.0-rc5
projects[panopoly_images][subdir] = panopoly
projects[panopoly_theme][version] = 1.0-rc5
projects[panopoly_theme][subdir] = panopoly
projects[panopoly_magic][version] = 1.0-rc5
projects[panopoly_magic][subdir] = panopoly
projects[panopoly_widgets][version] = 1.0-rc5
projects[panopoly_widgets][subdir] = panopoly
projects[panopoly_admin][version] = 1.0-rc5
projects[panopoly_admin][subdir] = panopoly
projects[panopoly_users][version] = 1.0-rc5
projects[panopoly_users][subdir] = panopoly
; The Panopoly Toolset
projects[panopoly_pages][version] = 1.0-rc5
projects[panopoly_pages][subdir] = panopoly
projects[panopoly_wysiwyg][version] = 1.0-rc5
projects[panopoly_wysiwyg][subdir] = panopoly
projects[panopoly_search][version] = 1.0-rc5
projects[panopoly_search][subdir] = panopoly
Яркий пример

Попробуйте собрать свой GSB отсюда
Подход “наследование”
Преимущества
* Сканирует базовый инстал профайл на модули и
темы
* Возможность переписать родительский модуль
поместив этот же модуль в дочерний профайл
Недостатки
* Патчим ядро
* Пока никак нельзя унаследовать инсталл таски
родителя
Подход “наследование”
1. Ставим патч
Make install profiles inheritable
2. Указываем родителя в .info

base = BASE_PROFILE
3. Подробнее читаем
Inheriting your Drupal profile from an existing
distribution
К дальнейшему изучению?
* DrupalCon London 2011: BUILDING AND MAINTAINING A
DISTRIBUTION IN DRUPAL 7
* Kit specification
* Drush make
* Apps

Учимся по примеру:
https://github.com/Gizra/Garment-Box
https://github.com/gsbitse/gsb-distro

а также проекты на drupal.org
Demo
Q&A
Алексей Горобец - Building Drupal Distributions. Why? When? and How?

Weitere ähnliche Inhalte

Was ist angesagt?

Первые шаги после установки WordPress
Первые шаги после установки WordPressПервые шаги после установки WordPress
Первые шаги после установки WordPressDarja Kruzhkova
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Глеб Тарасов
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...Тарасов Константин
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NETlugnsk
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1Natalia Odegova
 
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloudYandex
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеlugnsk
 
Vue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людейVue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людейKonstantin Komelin
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?buranLcme
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014Dmytro Zharii
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильноIhor Zenich
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановMoscowJS
 

Was ist angesagt? (20)

Первые шаги после установки WordPress
Первые шаги после установки WordPressПервые шаги после установки WordPress
Первые шаги после установки WordPress
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1
 
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
"Добро пожаловать в SoundCloud!". Александр Ковалёв, SoundCloud
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другие
 
Vue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людейVue.js - реактивный фронтенд фреймворк для людей
Vue.js - реактивный фронтенд фреймворк для людей
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
 
Videoblog
VideoblogVideoblog
Videoblog
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильно
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
 

Andere mochten auch

Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zLEDC 2016
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваLEDC 2016
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.LEDC 2016
 
Чеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающихЧеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающихLEDC 2016
 
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...LEDC 2016
 
Березовский Андрей - Social Authentication
Березовский Андрей - Social AuthenticationБерезовский Андрей - Social Authentication
Березовский Андрей - Social AuthenticationLEDC 2016
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!LEDC 2016
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersLEDC 2016
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APILEDC 2016
 
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)LEDC 2016
 
Александр Даниленко - Panels как философия
Александр Даниленко - Panels как философияАлександр Даниленко - Panels как философия
Александр Даниленко - Panels как философияLEDC 2016
 
Сергей Мирошниченко - SEO-friendly data migration
Сергей Мирошниченко - SEO-friendly data migrationСергей Мирошниченко - SEO-friendly data migration
Сергей Мирошниченко - SEO-friendly data migrationLEDC 2016
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовLEDC 2016
 
Денис Головняк - Продвинутый поиск с помощью Search API
Денис Головняк - Продвинутый поиск с помощью Search APIДенис Головняк - Продвинутый поиск с помощью Search API
Денис Головняк - Продвинутый поиск с помощью Search APILEDC 2016
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...LEDC 2016
 
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...LEDC 2016
 
Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8LEDC 2016
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаLEDC 2016
 

Andere mochten auch (18)

Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительства
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
 
Чеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающихЧеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающих
 
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
 
Березовский Андрей - Social Authentication
Березовский Андрей - Social AuthenticationБерезовский Андрей - Social Authentication
Березовский Андрей - Social Authentication
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated users
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
 
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
 
Александр Даниленко - Panels как философия
Александр Даниленко - Panels как философияАлександр Даниленко - Panels как философия
Александр Даниленко - Panels как философия
 
Сергей Мирошниченко - SEO-friendly data migration
Сергей Мирошниченко - SEO-friendly data migrationСергей Мирошниченко - SEO-friendly data migration
Сергей Мирошниченко - SEO-friendly data migration
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
 
Денис Головняк - Продвинутый поиск с помощью Search API
Денис Головняк - Продвинутый поиск с помощью Search APIДенис Головняк - Продвинутый поиск с помощью Search API
Денис Головняк - Продвинутый поиск с помощью Search API
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
 
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
 
Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импорта
 

Ähnlich wie Алексей Горобец - Building Drupal Distributions. Why? When? and How?

Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Alex Barkov
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Инсталляционные профили, создание сборок
Инсталляционные профили, создание сборокИнсталляционные профили, создание сборок
Инсталляционные профили, создание сборокAndrii Podanenko
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...Andriy Yun
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсDigital-агентство Мэйк
 
Сборка проектов с помощью ENB
Сборка проектов с помощью ENBСборка проектов с помощью ENB
Сборка проектов с помощью ENBAleksandr Boichenko
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиAlbina Tiupa
 
Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его примененияMedia Gorod
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?Oleksandr Torosh
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор БогатырёвMinsk PHP User Group
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Ruslan Sharipov
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаYury Vetrov
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами7bits
 
Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"zabej
 

Ähnlich wie Алексей Горобец - Building Drupal Distributions. Why? When? and How? (20)

Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Инсталляционные профили, создание сборок
Инсталляционные профили, создание сборокИнсталляционные профили, создание сборок
Инсталляционные профили, создание сборок
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейс
 
Сборка проектов с помощью ENB
Сборка проектов с помощью ENBСборка проектов с помощью ENB
Сборка проектов с помощью ENB
 
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модулиАндрей Юн Удобная разработка Drupal проекта. Полезные модули
Андрей Юн Удобная разработка Drupal проекта. Полезные модули
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его применения
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
 
Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"Мастер-класс "Привет, Drupal"
Мастер-класс "Привет, Drupal"
 

Mehr von LEDC 2016

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миLEDC 2016
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"LEDC 2016
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...LEDC 2016
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8LEDC 2016
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...LEDC 2016
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"LEDC 2016
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"LEDC 2016
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8LEDC 2016
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...LEDC 2016
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersLEDC 2016
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...LEDC 2016
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...LEDC 2016
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereLEDC 2016
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleLEDC 2016
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionLEDC 2016
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetLEDC 2016
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesLEDC 2016
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalLEDC 2016
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...LEDC 2016
 

Mehr von LEDC 2016 (20)

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
 

Алексей Горобец - Building Drupal Distributions. Why? When? and How?

  • 1. Делаем дистрибутивы Почему, Зачем и Как? Алексей Горобец asgorobets
  • 2. Обо мне * Senior Drupal Developer @ Propeople * 2 года в Drupal * Трейнер * Комьюнити лидер
  • 5. В зале у нас? * Разработчики
  • 6. В зале у нас? * Разработчики * Сайт-билдеры
  • 7. В зале у нас? * Разработчики * Сайт-билдеры * Front-end разработчики
  • 8. В зале у нас? * Разработчики * Сайт-билдеры * Front-end разработчики * Менеджеры проектов
  • 9. На повестке дня 1. Что такое дистрибутив и зачем они нужны? 2. В каких случаях стоит создавать свой дистрибутив? 3. Как создать и поддерживать свой дистрибутив
  • 12. Чего же не хватает в Drupal? * Листинг контента? * WYSIWYG? * Удобный интерфейс? * Менеджемент медиа? * Поле типа Date и Link?
  • 13. Два типа пользователей Все есть, только надо настроить. Вот тебе туториалы, смотри как все просто! К черту ваш Drupal. Неюзабельный и сложный он!
  • 15. Что такое дистрибутив? Дистрибутивы предоставляют упакованную версию ядра Drupal с контриб модулями предварительно настроенными под определенный тип сайта.
  • 24. COD
  • 28. Так вы хотите разработать дистрибутив? А стоит ли? So You Guys Want to Build a Drupal Distribution http://www.youtube.com/watch?v=ECrUuRGzuH0 http://prezi.com/k2d_x8eczfzu/so-you-want-to-build-a-drupal-distro/
  • 29. Так вы хотите разработать дистрибутив?
  • 30. Может вам нужен Install Profile? Distribution: Install Profile: * Брендированный продукт * Решает определенный юзкейс * Является публичным проектом и поддерживается сообществом * Фокус на конечного пользователя (готов к использованию) * Предустанавливает модули * Создает конфигурации * Для внутреннего использования * Фокус на разработчика (готов к началу разработки)
  • 31. Или build base? * У вас Continuous Integration? * Распределенная команда разработчиков? * Нужна стандартизация? * Нужно автоматическое тестирование? * Надоело повторяться?
  • 32. С чего начать? Install Profile myprofile.info myprofile.profile myprofile.install
  • 33. Install Profile myprofile.info name = My Profile description = Description of what the profile does. core = 7.x dependencies[] = block dependencies[] = color dependencies[] = comment dependencies[] = contextual dependencies[] = dashboard dependencies[] = help dependencies[] = image dependencies[] = list dependencies[] = menu dependencies[] = number dependencies[] = options
  • 34. Install Profile myprofile.profile То же что и .module для модулей. Здесь удобно определять hook_install_tasks и подобные вещи связанные с процессом инсталяции.
  • 36. Install Profile myprofile.install <?php/** * Implement hook_install(). * * Perform actions to set up the site for this profile. */function profilename_install() { include_once DRUPAL_ROOT . '/profiles/minimal/minimal.install'; minimal_install(); }?>
  • 40. FAQ и подводные камни * Как правильно упаковывать компоненты? Не создавайте фичи по принципу общего типа компонента. Гиганты вроде Acme Content Types, или Acme Views зделают вашу систему сильнозависимой, их нельзя будет отключить, а реорганизация покажется адом. Организовывайте фичи по принципу независимого функционала. Например: Blog, Gallery, Voting
  • 41. FAQ и подводные камни * Как организовать фичи для реутилизации полей Нет необходимости дублировать поля общего назначения. Создавайте общие поля указывая их характеристики в имени поля. Например: field_file_single_public Поле типа файл, принимающее единственное значение, использует Public директорию. field_link_single, field_content_ref, field_body_no_summary
  • 42. FAQ и подводные камни * Как избежать конфликтов с base fields Все field_base полезно экспортировать в отдельную фичу, а уже field_instance в фичу с контент тайпом. Например: Acme Base Fields - field_base:field_body Acme Blog - field_instance:field_body Acme Article - field_instance:field_body
  • 43. FAQ и подводные камни * Как экспортить мои File Display в фичу если они определяются в hook_default_COMPONENT? Любую фичу можно переиспользовать экспортирую только необходимые изменения с помошью Features Override
  • 44. FAQ и подводные камни * Как экспортить variables Не волнуемся, на помошь приходит модуль Strongarm
  • 46. Простой Drush make api = 2 ; Core project projects[drupal][version] = 7 ; Modules ; -------projects[ctools][version] = 1.3 projects[ctools][type] = "module" projects[libraries][version] = 2.1 projects[libraries][type] = "module" projects[wysiwyg][version] = 2.2 projects[wysiwyg][type] = "module" projects[views][version] = 3.7 projects[views][type] = "module"
  • 47. Drush make для дистрибутива Stub make Подтягивает ядро Drupal и сам install profile. Здесь есть одно преимущество - удобно подтягивать несколько install profiles в вашем дистрибутиве. Profile make Подтягивает модули, темы, библиотеки, применяет патчи
  • 48. Stub make distro.make api = 2 core = 7.x projects[drupal][type] = core projects[drupal][version] = "7.23" ; This fixes multiple upload fields in gsb_media_center. http://drupal.org/node/1620030 projects[drupal][patch][1620030] = http://drupal.org/files/1620030-d7-2.patch projects[drupal][patch][1702132] = http://drupal.org/files/drupal-7.14-ajax-showeffect-notfunction-1702132.patch projects[drupal][patch][1783278] = https://drupal.org/files/schema-relative-1783278-7-D7-do-nottest.patch projects[drupal][patch][1232416] = https://drupal.org/files/issues/autocomplete-1232416-17-7x.patch ; Add GSB Public Profile projects[gsb_public][type] = profile projects[gsb_public][download][type] = git projects[gsb_public][download][url] = https://github.com/gsbitse/gsb_public.git projects[gsb_public][download][branch] = 1.4
  • 49. Profile make profile.make api = 2 core = 7.x ; Feature Flag projects[feature_flag][type] = module projects[feature_flag][download][type] = git projects[feature_flag][download][url] = git@github.com:gsbitse/feature_flag.git projects[feature_flag][download][tag] = 1.0 projects[feature_flag][subdir] = custom ; GSB Acquia Tokens projects[gsb_acquia_tokens][type] = module projects[gsb_acquia_tokens][download][type] = git projects[gsb_acquia_tokens][download][url] = git@github.com:gsbitse/gsb_acquia_tokens.git projects[gsb_acquia_tokens][download][tag] = 1.0 projects[gsb_acquia_tokens][subdir] = custom etc...
  • 51. Обновления с hook_update_N() /** * Add a 'year' date format. */function myprofile_update_7000() { // Insert custom format: 2011 db_insert('date_formats') ->fields(array('format' => 'Y', 'type' => 'custom', 'locked' => 0)) ->execute(); // Insert custom format: 2011 db_insert('date_format_type') ->fields(array('type' => 'year', 'title' => 'Year', 'locked' => 0)) ->execute(); // Date Year Format variable_set('date_format_year', 'Y'); }
  • 52. Обновления с hook_update_N() * Все обновления из hook_update_N также идут в hook_install! * Новые модули активируем в: - dependencies (для первой инсталяции) - hook_update_N при помощи module_enable
  • 54. Билдим дистрибутив drush make distro.make Drush make рекурсивно вызывает .make файлы из подтягиваемых проектов! Таким образом запустив distro.make подтянются все модули из profile.make и так далее.
  • 55. Свой дистрибутив (варианты) 1. Начать с нуля 2. Использовать base distribution 3. Унаследовать дистрибутив
  • 56. Подход “с нуля” Преимущества * Включай только то что нужно (гибкость) Недостатки * Изобретение велосипеда. Придется все настраивать самим и экспортить в фичи, которые потом поддерживать * Дорого поддерживать контриб модули и следить за их обновлениями
  • 57. Подход “с базовой дистро” Преимущества * Готовые фичи из коробки * Поддержка базовой дистрибутив сообществом Недостатки * Не все фичи нужны, что-то придется отключать, а что-то переписыватьi * Big Drupal, больше модулей, больше шансов что всплывет баг
  • 59. Дистро на базе Panopoly Включить в profile.make фичи Panopoly: projects[panopoly_core][version] = 1.0-rc5 projects[panopoly_core][subdir] = panopoly projects[panopoly_core][patch][2087414] = https://drupal.org/files/issue-2087414.patch projects[panopoly_images][version] = 1.0-rc5 projects[panopoly_images][subdir] = panopoly projects[panopoly_theme][version] = 1.0-rc5 projects[panopoly_theme][subdir] = panopoly projects[panopoly_magic][version] = 1.0-rc5 projects[panopoly_magic][subdir] = panopoly projects[panopoly_widgets][version] = 1.0-rc5 projects[panopoly_widgets][subdir] = panopoly projects[panopoly_admin][version] = 1.0-rc5 projects[panopoly_admin][subdir] = panopoly projects[panopoly_users][version] = 1.0-rc5 projects[panopoly_users][subdir] = panopoly ; The Panopoly Toolset projects[panopoly_pages][version] = 1.0-rc5 projects[panopoly_pages][subdir] = panopoly projects[panopoly_wysiwyg][version] = 1.0-rc5 projects[panopoly_wysiwyg][subdir] = panopoly projects[panopoly_search][version] = 1.0-rc5 projects[panopoly_search][subdir] = panopoly
  • 61. Подход “наследование” Преимущества * Сканирует базовый инстал профайл на модули и темы * Возможность переписать родительский модуль поместив этот же модуль в дочерний профайл Недостатки * Патчим ядро * Пока никак нельзя унаследовать инсталл таски родителя
  • 62. Подход “наследование” 1. Ставим патч Make install profiles inheritable 2. Указываем родителя в .info base = BASE_PROFILE 3. Подробнее читаем Inheriting your Drupal profile from an existing distribution
  • 63. К дальнейшему изучению? * DrupalCon London 2011: BUILDING AND MAINTAINING A DISTRIBUTION IN DRUPAL 7 * Kit specification * Drush make * Apps Учимся по примеру: https://github.com/Gizra/Garment-Box https://github.com/gsbitse/gsb-distro а также проекты на drupal.org
  • 64. Demo
  • 65. Q&A