29
Ago
2010
Papaya Media

Desarrollo de Módulos en Drupal: ¿Cómo empezar?

Como últimamente he estado haciendo desarrollo de módulos en Drupal empezaré a publicar una serie de tutoriales para mostrar cómo funciona.

Para empezar, debo mencionar que Drupal es desarrollado en PHP, así que todo el desarrollo de módulos en Drupal es en ese lenguaje de programación, y además de que Drupal tiene un API muy completo, todo el conocimiento que tengamos acerca de PHP nos ayudará bastante.

Aquí, como ejemplo, haremos un módulo que tendrá un bloque con un contador. Esto nos servirá para mostrar cómo crear bloques con nuestro módulo y también mostraremos el uso del sistema de variables de Drupal.

Bueno, lo primero que hay que hacer es escoger un nombre para el módulo dependiendo de si el módulo es para uso personal o para publicar en la página de módulos de Drupal, pues al publicarlo en dicha página no podemos usar el nombre de ningún módulo que ya exista. Por el momento lo haremos todo para utilizar el módulo de manera personal, entonces no nos preocuparemos por el nombre.

El nombre que escogeremos para este ejemplo será: Contador (¡qué original!).

Ahora crearemos una carpeta en la carpeta de los módulos en la que guardaremos nuestros módulos personales, los míos los guardaré en una carpeta llamada papayamedia, y dentro de esta carpeta crearemos la carpeta contador (la de nuestro primer módulo).

En la carpeta contador crearemos los archivos de texto contador.info y contador.module. Siempre se tiene que usar el nombre del módulo con las extensiones .info y .module

En contador.info pondremos los datos de nuestro módulo, y el contenido inicial sería:

; $Id$
name = Contador
description = Un contador básico de páginas vistas.
core = 6.x
dependencies[] = block
package = Papaya Media

La primera línea es usada por el sistema de control de versiones de los módulos de Drupal cuando nuestro módulo va a ser montado en la página de módulos. Aunque no lo necesitamos igual no afecta dejarlo. Ahora una breve explicación del resto de las líneas:

  • name tiene el nómbre de nuestro módulo.
  • description tiene la explicación del módulo que aparece en la lista de módulos del sitio.
  • core es la versión de Drupal para la que está diseñado el módulo. Al usar 6.x dejamos abierta la opción de utilizar el módulo en cualquiera de las versiones de Drupal 6.
  • dependencies es un arreglo con la lista de módulos que tienen que estar instalados para que nuestro módulo funcione. Si el módulo depende de 2 o más módulos se creará una línea dependencies[] = nombre_del_modulo por cada uno.
  • package es el grupo en el que aparecerá el módulo en la lista de módulos. Si el nombre que usamos ya existe entonces este se añadirá a la lista, pero si el nombre es nuevo se creará un nuevo grupo.

En contador.module va la programación de nuestro módulo. Este será un módulo muy básico y sólo usaremos el hook para el manejo de bloques.

Los hooks son funciones que se llaman desde otros módulos. Drupal trae bastantes, pero es posible crear nuestros propios hooks para que otros módulos puedan usarlos también. Aquí hay más información acerca de los hooks y aquí pueden ver la documentación especifica de hook_block, el que usaremos en este ejemplo.

Aquí está el contenido de contador.module:

<?php
 
function contador_block($op = 'list', $delta = 0, $edit = array()) {
    switch (
$op) {
      case
'list':
       
$blocks['contador']['info'] = t('Contador de Vistas de Páginas');
       
$blocks['contador']['cache'] = BLOCK_NO_CACHE;
        return
$blocks;
        break;
      case
'view':
       
$block['subject'] = t('Contador de Vistas de Páginas');
       
variable_set('contador_visitas', variable_get('contador_visitas', 0) + 1);
       
$block['content'] = variable_get('contador_visitas', 0);
        return
$block;
        break;
    }
  }
?>

Como pueden ver, el módulo sólo llama al hook block que es el que se usa para la creación de bloques. Los hooks se llaman usando el nombre del módulo y adicionándole el nombre del hook, en nuestro caso contador_block. Y los argumentos de la función no nos los podemos inventar, son los que están en la documentación del hook.

Aunque el hook block tiene más opciones para poder crear bloques configurables más avanzados, aquí sólo usamos las opciones list y view, que son necesarias para poder mostrar hasta el más básico de los bloques (como el nuestro).

En list tenemos que devolver un arreglo cuyas llaves son los bloques que queremos crear, en nuestro caso sólo el bloque 'contador', que a su vez es un arreglo con las llaves 'info', el nombre del bloque en la lista de bloques, y 'cache', con lo que le estamos diciendo que no guarde el dato en caché. Eso es todo.

En view se configura qué es lo que se va a mostrar en el bloque, y tenemos que devolver un arreglo con las llaves 'subject', que es el título del bloque, y 'content', que será el contenido. Al igual que en los bloques que creamos con el administrador de Drupal, si 'content' no imprime nada en pantalla el bloque no aparecerá.

En view pueden ver que estamos usando las funciones de drupal variable_set y variable_get. Con variable_set creamos variables en el sistema de Drupal (las cuales guarda en la base de datos), los argumentos que recibe son el nombre de la variable y el valor de la misma. Con variable_get se recupera el valor de la variable, y los argumentos que recibe son el nombre de la variable y un valor por defecto por si la variable no existe.

Lo que hace el bloque básicamente es sumarle 1 a la variable 'contador visitas' y ponerlo en el contenido del bloque.

Este bloque lo configuré por medio del administrador de bloques de Drupal para que apareciera sólo en esta página (node/13).

Eso es todo en este primer tutorial de desarrollo de módulos en Drupal... dejen sus comentarios si tienen dudas acerca de este módulo o si quieren proponer nuevos módulos para desarrollar por acá.

Aquí pueden descargar el módulo Contador.

Nuestro módulo en la lista de módulos de Drupal
El bloque de nuestro módulo en la lista de bloques de Drupal
Configuración del bloque para que aparezca solamente en esta página de contenido
El bloque en la esquina superior derecha de esta página

Realmente muy interesante. Me

Enviado por actividades solteros (no verificado) el Mar, 10/18/2011 - 12:34.

Realmente muy interesante. Me ha servido y funciona

gracias

Videotutoriales sobre Drupal

Enviado por Anónimo (no verificado) el Dom, 09/25/2011 - 16:44.

Videotutoriales sobre Drupal http://www.masquebits.com, para el que le interese.

¿ Y Como lo muestro en

Enviado por Jorge (no verificado) el Lun, 08/08/2011 - 11:27.

¿ Y Como lo muestro en drupal? eso es lo que me gustaría saber.

Para mostrarlo en Drupal va a

Enviado por Papaya Media el Lun, 08/08/2011 - 12:11.

Para mostrarlo en Drupal va a la página de administración de bloques y ahí aparece en la lista... entonces ahí puede escoger en qué región ubicarlo. Si no le aparece el bloque en la lista de bloques entonces algo está mal.

Me olvide decir que estoy con

Enviado por actividades solteros (no verificado) el Mar, 10/18/2011 - 13:54.

Me olvide decir que estoy con drupal 7. He cambiado la info del modulo para que sea la 7

Esto me ayuda a entender el

Enviado por Hei$$en (no verificado) el Dom, 12/26/2010 - 21:20.

Esto me ayuda a entender el funcionamiento de drupal,
gracias de verdad

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • No se admite ninguna etiqueta HTML
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato