:::: MENÚ ::::

Creando un Plugin/Módulo “Hello World!” en Drupal

Con esta primera entrada voy a iniciar una serie de post explicando como se desarrolla un plugin/módulo básico en WordPress y Drupal. Aunque posiblemente lo extienda a otros CMS ahora mismo éstos son los que más uso.

Lo que vamos a desarrollar en ellos es un simple plugin/módulo que nos muestre el mensaje de “Hello World!” en la zona principal del CMS, para jugar e interactuar con la API y los hooks.

Para este primer post voy a usar Drupal en la versión 7.x ya que la versión 8.x todavía está en desarrollo, pero el proceso no debe de diferir mucho entre ellos.

Todo lo que voy a explicar aquí está sacado de la propia documentación de la web de Drupal, así que no me he inventado o sacado de la manga nada. Normalmente todos CMS que se aprecie tienen un API para atarcar y documentada, que es de lo que nos vamos a servir.

Emplazando el módulo

Lo primero que vamos hacer es crear una carpeta con el nombre de nuestro módulo en /sites/all/modules/. Sólo puede contener letras minúsculas y guión bajo. Yo he elegido para esta prueba como nombre rubenmartin.

Dentro de nuestro directorio crearemos dos archivos con el nombre de nuestro módulo y las extensiones .module y .info, que contendrá todo el grueso de nuestro módulo y la información (metadatos) del mismo, respectivamente. En mi caso los archivos se llaman rubenmartin.module y rubenmartin.info.

rubenmartin.info

En el archivo .info va toda la información (meta) del módulo como el nombre, la descripción y el core que usa. Esos son los campos básicos que deben de ir y que usaremos, aunque existe una lista más extensa para aportar más información y funcionalidades al mismo.

En él vamos a introducir los datos básicos del módulo:

name = Hello World!
description = Un simple módulo que muestra "Hello World!" en la zona principal de nuestro sistema Drupal.
core = 7.x

En name introducimos en nombre del módulo, description corresponde a la descripción (para los acentos usa el código HTML) y core que corresponde a la versión de Drupal en la que quieres que funcione. No uses una versión muy específica, por ejemplo 6.12 ya que no funcionará, sino 6.x.

Si fuéramos a usar css, javascript o incluir más archivos lo declararíamos aquí. Para saber más sobre esas funciones mira la documentación de .info file.

rubenmartin.module

Aquí irá el grueso de nuestro módulo, todo las funciones/acciones que deseamos que realice van escritas aquí.

Drupal tiene un sistema para engancharnos (hooks) para poder meter lo que nosotros deseamos en un lugar, momento o acción concreta. Hay una gran lista de hooks.

Nosotros vamos simplemente añadir un texto que diga “Hello World!”. Para ello vamos a crear un block que lo contendrá, así podremos mostrarlo por las distintas regions. Una vez que terminemos entenderéis el funcionamiento de los block.

El primer hook que vamos a usar es {hook}_block_info para registrarlo, pero antes de empezar a escribir código tengo que explicar dos cosas:

  1. Vamos a escribir código PHP, así que empezaremos abriendo con el tag <?php, pero, no lo cerraremos, no es necesario y hasta es requerido el no cierre.
  2. Todos los hooks se declaran como una function y el nombre de la misma debe der ser de la siguiente forma: {nombre_del_modulo}_{nombre_del_hook}, un ejemplo sería function rubenmartin_menu() { [...] }.

Lo primero que haremos es declarar el function con el nombre (en mi caso) rubenmartin_block_info(), y no es necesario recoger ninguna variable en este hook.

El uso de {hook}_block_info es sencillo, sólo deberemos retornar un array bidimensional, siendo la key del primero nivel el identificador único del block, y el segundo nivel contendría los datos del block de forma asociativa.

function rubenmartin_block_info() {
	
	$blocks['rubenmartin_helloworld'] = array(
		'info' => 'Hellow World!',
		'status' => TRUE,
		'region' => 'sidebar_first'
	);
	
	return $blocks;
	
}

En las propiedades del block he definido info que contiene el nombre y es obligatorio su aparición en la declaración, status para hacer que esté activo (la no declaración o FALSE haría que no estubiera activo), y region la zona en donde quiero que se muestre el block, en este caso en la barra lateral izquierda. Existen más propiedades que se pueden definir.

Ya tenemos nuestro block registrado en nuestro Drupal.

Ahora vamos a decirle que dentro está el texto “Hello World!”. Para tal desempeño usamos {hook}_block_view y debemos de recoger la variable $delta, para poder especificar exactamente gracias al identificador único el subject (título) y content (contenido) retornado en un array asociativa.

function rubenmartin_block_view( $delta = '' ) {

	if ( $delta == 'rubenmartin_helloworld' ) {
	
		return array(
			'subject' => 'Mi block',
			'content' => 'Hello World!'
		);
	
	}

}

No es obligatorio declarar subject. En content va el contenido que se va a mostrar y podemos usar HTML sin ninguna restricción, al igual que en subject.

Ahora sólo necesitaríamos activar nuestro módulo y ver nuestro “Hello World!” al final de la barra lateral izquierda.

Ten muy presente que a la hora de desarrollar el caché te va a molestar, tendrás que vaciarlo o desactivarlo para poder ver los cambios hechos en el código.

Esto es sólo un pequeñín aperitivo de lo que se puede hacer en Drupal. Con este pequeño tutorial no has rascado todo el potencial que hay detrás de la plataforma, node, menu, form api, database son algunas de las cosas que te quedan por tratar. Sé valiente y visita la API y descubre la magia que puedes hacer.

Module “Hello World!” for Drupal

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn2Share on Tumblr0Pin on Pinterest0Email this to someone