Модуль Config Pages позволяет создавать страницы конфигурации для вашего модуля, всего сайта, или может быть просто одного из разделов сайта. Потом эти значения можно читать из программы и использовать так, как вам требуется. Но API Config Pages не содержит функции, позволяющей записывать данные обратно в конфигурацию из вашего кода.
Такая операция не предусмотрена API модуля, что делать, если это необходимо?
Это может потребоваться для исправления уже существующих настроек, если настройки зависят от каких то условий и т.п., к примеру, если вы пишите код в файле модуля my_module.install.
Вам потребуется знать системное имя вашей страницы конфигурации. Подсмотреть его можно в админке — /admin/config/development/config_pages_types. Каждая страница в списке имеет значение «Machine name».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// загружаем экземпляр данных страницы конфигурации $type = 'machine name вашей страницы конфигурации'; $context = config_pages_context_get($type); $config = config_pages_load_entity($type, $context); // если entity с данными еще не существует, // но тип страницы конфигурации уже определен // то можно использовать вот такой код: if (empty($config)) { $config = new ConfigPages(); $config->type = $type; } // дальше вы можете менять значения полей объекта $config, // используя привычный Drupal Field Api, // например: $config->field_mytextfield = array(LANGUAGE_NONE => array(array( 'value' => 'Текстовое значение', ))); // сохраним изменения $config->save(); |
Если данные операции требуется выполнять регулярно, можно «упаковать» данный подход в функцию config_pages_set(), которой так не достаёт в API модуля.