3. Получили
● Определили, что является контентом, что конфигурацией.
● Разместили в отдельных хранилищах.
● Реализовали загрузку группами.
● Реализовали мультиязычность конфигурации.
● Организовали процесс миграции конфигурации.
4. Порядок доклада
● “Features в ядре”. Практический пример миграции конфигурационных
данных между проектами.
● Изменения, касающиеся разработчиков.
● Функциональная схема системы конфигурации.
● Дополнительные модули, функционал, который должен войти в ядро.
● Дискуссия.
● Всё.
5. Перейдём к практическому применению
Рассмотрим стандартный фунционал Drupal 8, который впитал
в себя наилучшие практики модуля Features.
7. Процесс миграции конфигурации
● Изменим настройки на проекте live.
● Переренесём настройки с live active → local staging.
● Обновим настройки на проекте local.
● Проверим результат миграции конфигурации.
13. Перемещаем файлы конфигурации между проектами
● Перемещаем файлы между проектами live и local
● Обновляем файловую конфигурацию с помощью утилиты drush, rsync
drush rsync -d @sm.live:%conf_active @sm.local:%conf_active
22. Пример использования
// Получаем название сайта.
$site_name = variable_get('site_name', 'Drupal');
// Изменяем название сайта на какое-нибудь другое.
variable_set('site_name', 'This is the dev site.');
// Загружаем набор данных, получаем название сайта.
$config = config('core.site_information');
$site_name = $config->get('site_name');
// Изменяем и сохраняем.
$config->set('site_name', 'My Awesome Site');
$config->save();
Было
Сейчас
24. Пример описания структуры конфигурационного файла
# Simple extended data types:
# Human readable string that must be plain text and editable with a text field.
label:
type: string
label: 'Label'
translatable: true
# Internal Drupal path
path:
type: string
label: 'Path'
# Human readable string that can contain multiple lines of text or HTML.
text:
type: string
label: 'Text'
translatable: true
27. Типизированные конфигурационные файлы
$new_slogan = 'Great new site slogan';
$typed_site_info = config_typed()->get('system.site');
$typed_site_info->set('slogan', $new_slogan);
Если вы не используете типизированную конфигурацию,
просто используйте config(),
что намного правильнее и быстрее.
28. Практика использования
Избегайте множественную инициализацию объектов config в одной функции.
Это сказывается на производительности.
config('foo.bar')->set('foo', 'foo')->save();
config('foo.bar')->set('bar', 'bar')->save();
Лучшим решением будет инициализировать объект config один раз, провести
с ним работу, сохранить.
$config = config('foo.bar');
$config->set('foo', 'foo');
$config->set('bar', 'bar');
$config->save();
37. Терминология
● From - a site from, a live site.
● To - a site to, a development site.
● Environment, site - synonymous sometimes.
● Active directory – Current site setting paces in the file system.
● Staging directory – Data is stored there before importing.
● File storage – Current site settings located in the file system.
● Active storage - “Data base” storage, data that is used.
38. Ресурсы
● Использование системы конфигурирования в Drupal 8
http://goo.gl/g4nbn
● Управление конфигурацией в Drupal 8
http://goo.gl/tvz9I
● Синхронизация сайтов Drupal. Staging в процессе разработки
http://goo.gl/ocLsb
● Примеры использования.
https://drupal.org/node/1809490#config-writing
● Объяснение схем, информации(meta) систем конфигурирования
https://drupal.org/node/1905070