Ich denke, eine gute Strategie hier ist die Verwendung der Installationsprofil-API. Mit der Installationsprofil-API können Sie die meisten Dinge tun, die die Drupal-Admin-Tools verwenden. Die meisten Kernformen setzen einfach Variablen in der Variablentabelle. Um Ihre nicht-contentbezogenen Datenbankinhalte, z. B.Konfiguration ist es ratsam, Update-Funktionen zu verwenden.
Auf meiner Website haben wir auf Modul "ec", die sehr wenig abgesehen davon hat es ec.install Datei enthält Update-Funktionen, z. ec_update_6001()
Ihre Hauptinstallationsfunktion kann dafür sorgen, dass die Aktualisierungen bei jeder neuen Installation ausgeführt werden, die Sie durchführen, um Ihre Module auf den neuesten Stand zu bringen.
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;
}
Eine Probe Update-Funktion oder zwei aus unserer aktuellen Datei folgt nun
// 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();
}
effektiv meist dies die Versionierung Problem mit Datenbanken und Drupal Code löst. Wir benutzen es ausgiebig. Es ermöglicht uns, neuen Code zu promoten, der die Datenbankkonfiguration ändert, ohne die Datenbank neu importieren oder Änderungen live vornehmen zu müssen. Dies bedeutet auch, dass wir Releases ohne Angst vor versteckten Datenbankänderungen korrekt testen können.
Schließlich unterstützen Cck und Ansichten diesen Ansatz. Sehen Sie diesen 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;
}
hmm können Sie ein bisschen klären? sprichst du über Setup wie Einstellungen auf bestimmten Modulen im Grunde? – Owen
wirklich gute Frage, danke. – sepehr