Creo que una buena estrategia aquí es usar la API de perfil de instalación. Con la API de perfil de instalación puedes hacer la mayoría de las cosas que hacen las herramientas de administración de Drupal. La mayoría de las formas básicas simplemente configuran variables en la tabla de variables. Para poder realizar una versión sensata de los contenidos de su base de datos no contenida, es decirconfiguración, es aconsejable usar las funciones de actualización.
En mi sitio tenemos el módulo "ec" que hace muy poco aparte de tener su archivo ec.install que contiene funciones de actualización, p. ec_update_6001()
Su función de instalación principal puede encargarse de ejecutar realmente las actualizaciones en cualquier instalación nueva que realice para actualizar sus módulos.
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;
}
una función de actualización de la muestra o dos de nuestro archivo real ahora siguen
// 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();
}
Efectivamente, esto resuelve el problema la mayoría de versiones con bases de datos y código de Drupal. Lo usamos ampliamente Nos permite promocionar un nuevo código que cambia la configuración de la base de datos sin tener que volver a importar la base de datos o realizar cambios en vivo. Esto también significa que podemos probar adecuadamente las versiones sin temor a cambios ocultos en la base de datos.
Finalmente, cck y views admiten este enfoque. Ver este fragmento de código
// 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 ¿Puedes aclarar un poco? ¿Estás hablando de configuración como la configuración en ciertos módulos, básicamente? – Owen
muy buena pregunta, gracias. – sepehr