Je pense qu'une bonne stratégie consiste à utiliser installer le profil de l'API. Avec installez le profil de l'API, vous pouvez faire la plupart des choses que l'utilisation de Drupal outils d'administration de le faire. L'essentiel des formes tout simplement définir des variables dans le tableau variables. Pour être en mesure de raisonnablement version de votre base de données de contenu contenu c'est à dire la configuration, il est sage d'utiliser les fonctions de mise à jour.
Sur mon site, nous avons sur le module "ec" qui ne fait que très peu à l'écart à partir de ce.installer fichier contient des fonctions de mise à jour par exemple ec_update_6001()
Votre installation principale fonction peut prendre soin de réellement exécuter les mises à jour sur toutes les nouvelles installations que vous apportez à apporter vos modules jusqu'à ce jour.
function ec_install() {
$ret = array();
$num = 0;
while (1) {
$version = 6000 + $num;
$funcname = 'ec_update_' . $version;
if (function_exists($funcname)) {
$ret[] = $funcname();
$num++;
} else {
break;
}
}
return $ret;
}
Un exemple de fonction de mise à jour ou deux à partir de notre fichier de suivre maintenant
// Create editor role and set permissions for comment module
function ec_update_6000() {
install_include(array('user'));
$editor_rid = install_add_role('editor');
install_add_permissions(DRUPAL_ANONYMOUS_RID, array('access comments'));
install_add_permissions(DRUPAL_AUTHENTICATED_RID, array('access comments', 'post comments', 'post comments without approval'));
install_add_permissions($editor_rid, array('administer comments', 'administer nodes'));
return array();
}
// Enable the pirc theme.
function ec_update_6001() {
install_include(array('system'));
// TODO: line below is not working due to a bug in Install Profile API. See http://drupal.org/node/316789.
install_enable_theme('pirc');
return array();
}
// Add the content types for article and mtblog
function ec_update_6002() {
install_include(array('node'));
$props = array(
'description' => 'Historical Movable Type blog entries',
);
install_create_content_type('mtblog', 'MT Blog entry', $props);
$props = array(
'description' => 'Article',
);
install_create_content_type('article', 'Article', $props);
return array();
}
Effectivement la plupart du temps cela résout le problème de contrôle de version avec les bases de données et Drupal code. Nous utilisons intensivement. Il nous permet de promouvoir le nouveau code qui change de configuration de base de données sans avoir à les réimporter la base de données ou de faire vivre des changements. Cela signifie également que nous puissions bien des versions de test, sans crainte de la base de données caché changements.
Enfin cck et views soutenir cette approche. Voir cet extrait de code
// Enable CCK modules, add CCK types for Articles in prep for first stage of migration,
// enable body for article, enable migration modules.
function ec_update_6023() {
$ret = array();
drupal_install_modules(array('content', 'content_copy', 'text', 'number', 'optionwidgets'));
install_include(array('content', 'content_copy'));
install_content_copy_import_from_file(drupal_get_path('module', 'ec') . '/' . 'article.type', 'article');
$sql = "UPDATE {node_type} SET body_label='Body', has_body=1
WHERE type = 'article'";
$ret[] = update_sql($sql);
return $ret;
}