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);
}
?>