12 May 2016 15:06
Разработка с использованием профилей и features даёт больший контроль над конфигурацией приложения на Drupal. Но возникает ряд вопросов по выгрузке конфигурации в этом случае:
Настройки модуля можно установить через variable_set внутри функции инсталляции Вашего профиля - для того, чтобы понять, какие именно variable хранят нужные нам настройки надо смотреть как работает системная форма настроек и какие alter к ней применяются. Например: admin/config/media/file-system и модуль transliteration
Пример установки настройки модуля transliteration в Вашем профиле your_profile:
<?php /** * @file your_profile.install * */ /** * Implements hook_install(). */ function your_profile_install() { variable_set('transliteration_file_uploads', TRUE); }
Блоки. В основ это блоки views либо кастомные(программные блоки). А- надо будится что добавленна вьюха которая создает Блок. Б - при инсталяции профиля сделать нужные записи в БД. Пример можно посмотреть в profiles/standart/standart.install: https://yadi.sk/i/UsqQXM0Vrem8V . Пример реализации внутри Вашего профиля your_profile:
<?php /** * @file your_profile.install * */ /** * Implements hook_install(). */ function your_profile_install() { _your_profile_enable_blocks('bartik'); } /** * Enable default blocks. */ function _your_profile_enable_blocks($default_theme) { $values = array( array( 'module' => 'user', 'delta' => 'login', 'theme' => $default_theme, 'status' => 1, 'weight' => 0, 'region' => 'sidebar_first', 'visibility' => 0, 'pages' => '', 'cache' => -1, ), array( 'module' => 'system', 'delta' => 'management', 'theme' => $default_theme, 'status' => 1, 'weight' => 1, 'region' => -1, 'visibility' => 0, 'pages' => '', 'cache' => -1, ), // ... Пример выгрузки блока views. array( 'module' => 'views', // Машинное имя блока, можно узнать на странице конфигурации блоков посмотрев в URL. 'delta' => '-exp-erp_cities-page', 'theme' => $default_theme, 'status' => 1, 'weight' => -9, 'region' => 'content', 'visibility' => 1, 'pages' => 'dictionary/tradepoints/cities', 'cache' => -1, ), ); $query = db_insert('block')->fields(array('module', 'delta', 'theme', 'status', 'weight', 'region', 'visibility', 'pages', 'cache')); foreach ($values as $record) { $query->values($record); } $query->execute(); } ?>
Здесь возможны два варианта.
<?php <span class="redactor-invisible-space">/** * @file your_profile.install * */ <span class="redactor-invisible-space"> </span></span>/** * Implements hook_install(). */ function your_profile_install() {<span class="redactor-invisible-space"></span> // Получаем набор настроек темы Bartik. $tsettings = variable_get('theme_bartik_settings', array()); // Тема не будет использовать стандартную иконку. $tsettings['default_favicon'] = 0; // Указываем путь к кастомной иконке. $tsettings['favicon_path'] = drupal_get_path('module', 'custom_module') . '/favicon.png'; // Указываем что темы использует фавикон. $tsettings['toggle_favicon'] = 1; // Сохраняем. variable_set('theme_admin_btl_settings', $tsettings); } ?>