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

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Хранение конфигурации в Drupal 8

30/04/2020, by maria

По умолчанию информация о конфигурации в Drupal 8 хранится в базе данных.

Формат файла конфигурации (YAML)

Расширения (модули, темы и профили) предоставляют данные конфигурации в файлах YAML.

Вот пример файла конфигурации:

some_string: 'Woo kittens!'
some_int: 42
some_bool: true

Конфигурация также может быть вложенной. Вот пример:

name: thumbnail
label: 'Thumbnail (100x100)'
effects:
  1cfec298-8620-4749-b100-ccb6c4500779:
    id: image_scale
    data:
      width: 100
      height: 100
      upscale: true
    weight: 0
    uuid: 1cfec298-8620-4749-b100-ccb6c4500779

Схема конфигурации

Конфигурация имеет схему. Это описано в схеме конфигурации/документации метаданных.

Конфигурация по умолчанию для расширения

Расширение (модуль, тема или профиль), предоставляющее значения по умолчанию для своей конфигурации, должно поместить эту конфигурацию в файлы YAML в своем подкаталоге config/install.

Если расширению нужны только базовые параметры простой конфигурации, все настройки по умолчанию могут быть помещены в один файл modulename.settings.yml. Для более сложных настроек вы можете разделить вашу конфигурацию на несколько файлов. Каждый объект конфигурации должен быть помещен в свои собственные файлы YAML, и они должны быть сгенерированы, если модуль запишет свою конфигурацию (не пытайтесь записать их вручную).

Чтобы предоставить значения по умолчанию для конфигурации, которая требует динамического значения (которое, следовательно, не может быть установлено в modulename.settings.yml), сделайте это в hook_install(). Например:

/**
 * Implements hook_install().
 */
function modulename_install() {
  // Set default values for config which require dynamic values.
  \Drupal::configFactory()->getEditable('modulename.settings')
    ->set('default_from_address', \Drupal::config('system.site')->get('mail'))
    ->save();
}

Необязательная конфигурация для расширения

Необязательные элементы конфигурации для расширения (модуля или темы) хранятся в подкаталоге config/option.

Это элементы конфигурации, которые зависят от чего-то, от чего само расширение явно не зависит, поэтому они устанавливаются только при соблюдении всех их зависимостей.

Например, в сценарии, в котором модуль A имеет необязательную конфигурацию, для которой требуется модуль B, но сначала устанавливается модуль A, а через некоторое время модуль B, тогда каталог config/option модуль A будет сканироваться в это время на наличие недавно обнаруженных зависимостей, и Конфигурация будет установлена ​​тогда. Если модуль B никогда не устанавливается, дополнительный элемент конфигурации также не будет установлен.

Активная конфигурация хранилища

По умолчанию Drupal 8 сохраняет активную конфигурацию в базе данных для повышения производительности и масштабируемости. См. «Активная конфигурация по умолчанию» изменена с хранилища файлов на хранилище БД для получения дополнительной информации.

Обновить конфигурацию из yaml в базу данных

Если во время разработки вам нужно обновить конфигурацию с yaml до базы данных, вы можете использовать команду drush config-import (cim).
Вы редактируете файл конфигурации yml в папке активной конфигурации (как определено в файле settings.php, например, sites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync), а затем запускаете drush cim. Очистите кэши (drush cr), чтобы увидеть изменения.
Если вы удовлетворены настройками в файле yml, вы копируете их в свой модуль или тему.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.