При разработке сайтов часто возникает необходимость перенесения
К примеру, у нас есть три значения в базе (их мы создадим с помощью функции 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(); }