Drupal 6.x, está llegando a la madurez

Esto no pretende ser un análisis exhaustivo de las nuevas funcionalidades de drupal 6, más bien unas notas personales que iré actualizando conforme encuentre elementos interesantes.

Sí, ya sé que drupal en su versión 6.x lleva con nosotros unos meses, pero en investic ya aprendimos la lección de no apresurarnos con este querido CMF. Teniendo en cuenta que empezamos los desarrollos con la rama 4.6.x algo ha llovido desde entonces, y las urgencias relativas al cambio de versiones las gestionamos con más tranquilidad.

Nuestro compañero Victor Kane hacia un comentario al respecto de estos temas, y es que él daría soporte de actualización de los sitios desarrollados con drupal cuando la rama entrante tuviera un 80% de las funcionalidades portadas (siempre y cuando el 20% no sea determinante)

Desde la vuelta de las vacaciones Drupal 6.x y sus módulos importantes están llegando a ese punto de estabilidad como para plantearse lo que dice Victor.

Hemos empezado a profundizar un poco más, tanto en el core como en módulos importantes, las pruebas las hemos realizado por dos vías.

  • Instalación de cero
  • Actualización de un drupal en producción (cocinandocondrupal.net)

En la instalación desde cero se puede ver que la integración con el sistema multilingue es mucho más sencilla que antes:

winvestic@lugar:/var/www/drupal6$ tar -zxvf es-6.x-1.0.tar.gz
CONTRIBUTORS.es.txt
LICENSE.es.txt
README.es.txt
STATUS.es.txt
modules/system/translations/general.es.po
modules/system/translations/includes.es.po
profiles/default/translations/es.po
modules/aggregator/translations/modules-aggregator.es.po
modules/block/translations/modules-block.es.po
modules/blog/translations/modules-blog.es.po
modules/blogapi/translations/modules-blogapi.es.po
modules/book/translations/modules-book.es.po
modules/color/translations/modules-color.es.po
modules/comment/translations/modules-comment.es.po
modules/contact/translations/modules-contact.es.po
[..]

Se descomprime el tarball del idioma en el raíz de la instalación y como se puede comprobar directamente añade el fichero modules-MODULO.es en el directorio translations. También añade profiles de instalación que luego te permite elegir en el proceso de instalación, conforme vamos activando los distintos módulos de drupal en nuevo sistema de instalación tiene en cuenta las posibles traducciones y las incorpora a nuestro drupal.

También en la instalación pide la nueva contraseña de la cuenta de admin y vemos como han añadido la funcionalidad que indica la robustez del la contraseña.

A simple vista se ven pocos cambios, pero conforme empezamos a profundizar aparecen como margaritas en una mañana de primavera. Una de las más llamativas es la incorporación de un sistema de Drag and drop (arrastrar) en elementos concretos de nuestro drupal para asignarles posiciones (jerarquías).

arrastrar

En la imagen se pude ver como un elemento de menú con un icono en forma de cruz esta sangrado hacia dentro, esto se hace con arrastrar desde ese icono y posicionar el elemento en el lugar que deseemos. Esta funcionalidad sustituye al engorroso sistema de pesos con desplegable y números positivos y negativos. Jquery al rescate, como no :) También podemos usar esta funcionalidad en otros elementos, Bloques. campos etc.

Aparte de estos cambios un tanto espectaculares, una de las cosas que se notan es la agilidad y rapidez de nuestro nuevo drupal. Esto lo hemos comprobado en la versión de desarrollo que hemos creado de la actualización de cocinando con drupal. En general todo se carga mas rápido.

Han habido cambios importantes para los programadores. Se ha modificado el sistema instalación de los módulos. Integra un nuevo sistema para definir la estructura para la base de datos, ahora se definen las tablas y campos con arrays de forma similar al sistema de formularios. Este es un ejemplo con el modulo gears.

Sistema install drupal 5.x
// $Id: gears.install,v 1.1.4.6 2008/06/19 19:12:48 investic Exp $

function gears_install() {
switch ($GLOBALS['db_type']) {
case 'mysqli':
break;
case 'mysql':
db_query("CREATE TABLE {gears_manifest} (

manifest varchar(255) UNIQUE,
hash varchar(255) NOT NULL
) ");
break;
case 'pgsql':
break;
}
}
function gears_uninstall() {
db_query('DROP TABLE {gears_manifest}');
variable_del('gears_existing');
}
?>

Sistema Drupal 6.x
/**
* @file gears.install
* Contains install and update functions for Gears
*/
function gears_install() {
drupal_install_schema('gears');
}
function gears_uninstall() {
drupal_uninstall_schema('gears');
}

/**
* Implementation of hook_schemea
*/
function gears_schema() {
$schema['gears_manifest'] = array(
'description' => t('Descripcion de la tabla'),
'fields' => array(
'manifest' => array(
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
'description' => t('Manifest name'),
),
'hash' => array(
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
'description' => t('Hash, para comprobar si el nodo ha sido cambiado...'),
),
),
'unique key' => array('manifest' => array('manifest')),
);
return $schema;
}
?>

A este nuevo sistema se le incorpora toda una batería de funciones para trabajar con el hook_schema abriéndose un abanico de posibilidades importantes sobre todo trabajando con otro sistemas como cck o views. También se facilita mucho trabajar con otros motores de bases de datos, como postgresql, o sqlite.

Es una primera versión pero pinta muy bien.

Posiblemente uno de los apartados que ha sufrido más cambios ha sido el sistema de plantillas (themes) sobre todo a la hora de programar nuestro propios módulos, pero esto lo tratare en un post específico ya que tiene bastante enjundia. Para abrir boca el sistema de plantillas en drupal 6.x es provisto de un nuevo archivo *.info que incorpora mejoras considerables, pero también nos obliga a definir un poco mejor distintos elementos de nuestra plantilla. En este fichero tenemos parámetro obligados y otros opcionales esta es la lista:

Los que dispone de * son obligados y este sería un ejemplo sencillo:


; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $
name = Garland
description = Tableless, recolorable, multi-column, fluid width theme (default).
version = VERSION
core = 6.x
engine = phptemplate
stylesheets[all][] = style.css
stylesheets[print][] = print.css

; Information added by drupal.org packaging script on 2008-02-13
version = "6.0"
project = "drupal"
datestamp = "1202913006"

Como se puede ver ahora es aquí donde se definen elementos como las regiones o diferentes css, este fichero *.info hace que el sistema de plantillas sea más claro. Una de las cosas que me han parecido más útiles en las plantillas, es la capacidad de definir configuraciones propias, la plantilla de desarrollo Zen incorpora una funcionalidad en la configuración que permite modificar el carácter del breadcrumb. Esto lo hace desde nueva funcionalidad.

También se incorporan dos nuevos elementos actions y triggers permitiendo crear acciones a situaciones generadas por drupal y lanzadores específicos. Esto hace que se pueda definir de forma nativa flujos de trabajos (workflows) haciendo más capaz a nuestro querido Drupal.

Como he comentado una de las pruebas realizadas ha sido la actualización de un drupal en producción como es el caso de cocinando con drupal. Todavía estamos en el proceso ya que queremos exprimir al máximo el nuevo drupal. Pero con esta actualización hemos podido comprobar que una gran cantidad de módulos ya han sido portados incluso otros ya solo están para esta versión. El mayor problema para actualizar es encontrar los módulos no portados y desinstalarlos previamente para evitar problemas con el update.php. Se tiene que tener en cuenta al módulo views que ha sufrido cambios importantes y que no se añadirán las vistas anteriores, pero que sí podremos exportar e importar de una versión a otra.

Bueno esto es todo por ahora, prometo seguir.

Comentarios

  1. Lokiyo (no verificado) dijo:

    Deberíais ayudaros del módulo de Upgrade Status para planificar las migraciones de las webs. Este módulo os permite ver qué modulos de un Drupal 5.x están actualizados o en proceso de actualización para Drupal 6, con lo que decidir si se migra o se desactivan módulos se hace completamente trivial.

    Espero que os sirva.

  2. karlos dijo:

    Kaixo

    Muy interesante, nosotros lo hemos hecho con el uptade status, que por lo que veo hace use de este módulo el upgrade estatus, voy a probarlos y lo comentare.

    Gracias.

    karlos g liberal (patxangas)


Diseño y desarrollo INVESTIC con DRUPAL