При разработке сайтов часто возникает необходимость перенесения
К примеру, у нас есть три значения в базе (их мы создадим с помощью функции variable_set() позже), которые нужно перенести на другой сайт. При этом нужно выбрать, какие значения экспортировать, а какие нет.
1) Устанавливаем модуль Features.
2) Создаем свой модуль.
В нашем случае он будет называться idevels. В файле idevels.module добавляем hook_features_api(). С помощью этого хука мы объявим о своей фиче и зададим ей некие параметры.
/**
* Implements hook_features_api().
*/
function idevels_features_api() {
return array(
'values' => array(
'name' => t('Deploy values'),
'default_hook' => 'values_defaults',
'default_file' => FEATURES_DEFAULTS_INCLUDED,
'feature_source' => TRUE,
'file' => drupal_get_path('module', 'idevels') .'/idevels.features.inc',
),
);
}
Теперь создаем файл в корне модуля, который указали в hook_features_api. На нашем примере это idevels.features.inc.
В этом файле добавляем хук hook_features_export_options().
Обратите внимание на важный момент: хуки, которые касаются работы фичи нужно именовать не названием модуля, а названием фичи. В нашем случае это values.
/**
* Implements hook_features_export_options().
*/
function values_features_export_options() {
//only create variables
variable_set('value1', 'value1');
variable_set('value2', 'value2');
variable_set('value3', 'value3');
return array(
'value1' => t('VALUE 1'),
'value2' => t('VALUE 2'),
'value3' => t('VALUE 3'),
);
}
Для наглядности создадим три значения с помощью функции variable_set().
В хуке hook_features_export_options() задаем перечень опций, которые пользователь может переносить. Это будет выглядеть следующим образом:
/**
* Implements of hook_features_export().
*/
function values_features_export($data, &$export, $module_name = '') {
foreach ($data as $name) {
$export['features']['values'][$name] = $name;
}
return array();
}
