Представьте себе модуль под названием Configurable Picture. Вы хотите, чтобы путь к изображению можно было настроить через пользовательский интерфейс администратора. Путь — это строка, поэтому первое, что нужно сделать, — определить конфигурацию пути. В этом случае объект конфигурации будет configurable_picture.settings
путь_к_картинке
.
configurable_picture/config/schema/configurable_picture.schema.yml:
configurable_picture.settings:
тип: config_object
label: 'Настраиваемые параметры изображения'
сопоставление:
путь_к_картинке:
тип: строка
label: 'Путь к изображению'
Следующим шагом является создание формы конфигурации, которая позволяет вам редактировать элемент конфигурации, определенный в приведенной выше схеме. Вот документация по созданию форм конфигурации: https://www.drupal.org/docs/drupal-apis/configuration-api/working-with-configuration-forms
Выполнив описанные выше шаги, вы сможете сохранить путь к изображению на созданной вами странице конфигурации.
Чтобы указать этот параметр конфигурации в файле JavaScript, необходимо выполнить два шага. Первый — добавить зависимость к core/drupalSettings
в вашу библиотеку JS.
конфигурируемая_картинка/configurable_picture.libraries.yml:
картина_форма:
js:
путь/к/file.js: {}
зависимости:
- настройки ядра/друпала
Затем вы прикрепляете библиотеку и настройки к форме:
$form['#attached']['library'][] = 'configurable_picture/picture_form';
// Ключ configurableSettings станет пространством имен внутри
// объект drupalSettings в файле JS.
$form['#attached']['drupalSettings']['configurablePicture'] = [
// Установить путь на основе значения, сохраненного в конфигурации:
'pathToPicture' => \Drupal::config('configurable_picture')->get('path_to_picture'),
];
Затем path/to/file.js может получить доступ к объекту настроек следующим образом:
(функция ($, Drupal, drupalSettings) {
функция getPathToPicture() {
вернуть drupalSettings.configurablePicture.pathToPicture;
}
// Или из объекта настроек в Drupal.behaviors:
Drupal.behaviors.configurablePicture = {
прикрепить: функция (контекст, настройки) {
console.log(settings.configurablePicture.pathToPicture);
}
};
}(jQuery, Drupal, настройки drupal));