У меня есть собственный модуль, и в его файле .module я добавляю значение в настройки Drupal:
$variables['#attached']['drupalSettings']['мой модуль']['color_body'] = '#dd0000';
У меня есть именованная функция js, и я пытаюсь получить доступ к значению:
функция loadcal() {
var backgroundColor = drupalSettings.mymodule.color_body;
}
Я получаю сообщение об ошибке:
Uncaught TypeError: невозможно прочитать свойства неопределенного (чтение «мой модуль»)
в Object.attach (loadcal.js?rb7yo3:52:37)
Все рабочие примеры использования drupalSettings кажутся анонимными функциями:
(функция ($) {}
Я могу реорганизовать это как функцию DOMready, но предпочел бы, чтобы эта функция была вызываемой. Я пытался:
(функция loadcal($) {}
но это оставляет loadcal() не найденным при его вызове.
ОБНОВИТЬ
Я решил, что могу обойтись без названия функции. Я мог передать то, что мне было нужно в начале, и мне не нужно было делать последующие звонки. Вот задействованный код:
mymodule.libraries
мой модуль.календарь:
CSS:
составная часть:
css/календарь.css: {}
js:
js/loadcal.js: {вес: -18}
зависимости:
- ядро/Друпал
- ядро/JQuery
- настройки ядра/друпала
моймодуль.модуль
функция mymodule_preprocess_node($variables) {
$config = \Drupal::config('mymodule.settings');
$variables['#attached']['library'][] = 'mymodule/mymodule.calendar';
$variables['#attached']['drupalSettings']['mymodule']['color_body'] = '#dd0000';
}
loadcal.js
(функция (Drupal, drupalSettings, один раз) {
Drupal.behaviors.mymodule = {
прикрепить: функция (контекст, настройки) {
var calendar = новый FullCalendar.Calendar(calendarEl, {
dayCellDidMount: ({дата, эл.}) => {
el.style.backgroundColor = drupalSettings.mymodule.color_body;
}
}
}
)}
Ошибка консоли:
Uncaught TypeError: невозможно прочитать свойства неопределенного (чтение «color_body»)
хотя при проверке drupalSettings и настроек в Closure (прикрепить) или Closure.drupalSettings мой модуль отсутствует, хотя он отображается в Drupal.behaviors.