Extra Block Types (EBT) - New Layout Builder experience❗

Introducing Drupal Extra Block Types (EBT) - Revolutionize your website's layout design with our powerful new Layout Builder experience. With EBT, unleash your creativity and take control of your content presentation like never before. Seamlessly create custom block types, effortlessly arrange content elements, and effortlessly build stunning layouts that captivate your audience. Elevate your website design game and bring your visions to life with ease. Experience the future of layout building today.

Demo EBT modules Download EBT modules

12.9. Работа с конфигурациями в Drupal 8. Active, Sync конфиги, перенос конфигов с DEV на LIVE.

19/11/2019, by Ivan

Конфигурация в Drupal 8 это основа всех настроек типов материалов, полей, конфигурационных форм и переменных. С помощью конфигурации мы можем переносить изменения с одного сайта на другой, разрабатывать таким образом разные фичи одновременно и не мешая друг другу.

Конфигурации можно выгрузить в YML файлы и добавить их в Git репозиторий, таким образом вы можете закоммитить свои изменения в настройках сайта и передать изменения на Dev или Live. Идея конфигураций в Drupal 8, похожа на то как работает модуль Features:

https://www.drupal.org/project/features

Только features интегрирован не со всеми модулями и не всегда можно было перенести все настройки сайта через Features. Конфигурация в Drupal 8 работает со всеми настройками и позволяет выгрузить все в файлы.

При установке Drupal создает папку для выгрузки конфигурации. По умолчанию это папка с длинным именем, которая лежит в sites/default/files:

config

Название папке генерируется случайным образом, это нужно потому что папка лежит в открытом доступе в папке files, у которой права доступа 777. Такое длинное название не даст возможность подобрать название папке к конфигам, чтобы скачать их. Дело в том, что конфиги могут содержать доступы к API, Solr, SMTP и эта информация должна быть скрыта. Мы можем указать путь к папке конфигов через файл settings.php:

$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';

Sync папка будет использоваться для переноса конфигов между сайтами. Drupal по умолчанию хранит конфиги в базе данных и использует active конфигурацию. Вы можем хранить active конфигурацию в файлах как и sync папку, но лучше всего оставить active конфигурацию в базе даннах, так друпал будет работать быстрее. Вы можете посмотреть таблицу config с конфигами через PhpMyAdmin или Adminer:

config

Здесь храняться сериализованные массивы с конфигурациями.

Обычно sync папку с конфигами хранят вне sites/default/files, потому что files папка не храниться в гите. Давайте сменим путь к папке с конфигами:

$config_directories['sync'] = 'config/sync';

Теперь мы можем добавить наши конфиги в git. Можно выгрузить конфигурацию вручную:

/admin/config/development/configuration/full/export

 Configuration -> Configuration syncronization -> Export 

export

Если вы нажмете на кнопку Export, то друпал выдаст архив со всеми конфигурациями. Теперь вы можете добавить эти конфигурации в гит:

configuration

Ручная выгрузка конфигов через сайт не всегда работает. Когда у вас становится много конфигов, то выгрузка может прерваться. Поэтому лучше всего делать выгрузку через drush:

drush config-export

или через Drupal Console:

drupal config:export

Тоже самое и с импортом, этом можно делать через drush

drush config-import

и drupal Console: 

drupal config:import

Хранить конфиги в корне сайта не очень хорошая идея. Лучше всего хранить конфиги в папке вне сайта, для этого нужно поменять настройки settings.php:

$config_directories['sync'] = '../config/sync';

Пока вы изучаете друпал, то вы можете оставить папку с конфигами как есть в корне сайта.

Теперь когда вы выгрузили конфигурацию и добавили ее в гит, на другом сайте вы можете загрузить эту конфигурацию. Давайте изменим какие-нибудь настройки на сайте, например имя сайта:

/admin/config/system/site-information

И зайдем на страницу Configuration Syncronization:

/admin/config/development/configuration

syncronize

Друпал сравнивает текущую конфигурацию active из таблицы config с конфигурацией sync и если есть различия, то на этой странице вы можете их посмотреть. Если вы нажмете кнопку Import all, то друпал загрузить вашу конфигурацию  sync в вашу активную конфигурацию в таблицу config. Таким образом вы можете заливать свои изменения на другие инстансы вашего сайта.