Está en la página 1de 6

Adems de una plataforma para desarrollo de aplicaciones, es un potente CMS o gestor de contenidos.

Orientado a programadores que conocen PHP, que han empezado a utilizar Drupal 7 a nivel de instalacin e interfaz de administracin, y que desean aprender a programar sus propios mdulos.

Nuestra intencin es trata de aprender a programar funcionalidades (mdulos = /sites/all/modules). 1Creamos una carpeta para nuestro mdulo, ejemplo saludar y dentro de esta creamos los archivos llamado saludar.info(este es un archivo de texto q contiene la informacin de definicin del archivo) y archivo saludar.module(programamos con php) saludar/saludar.info
name = Saludar -> modulo se llama saludar description = "Mdulo que dice hola mundo" ->descripcin de lo q hace package = Aprendiendo a programar con Drupal -> clasificamos en la categoria core = 7.x -> especificamos q es compatible con Drupal 7.x

2-

Comprobamos que hemos creado el mdulo correctamente. modulos. All encontraremos nuestra categora al final con nuestro primer mdulo, y una casilla para activarlo.

3-

Crearemos una pagina hola Programar la respuesta para una determinada url, utilizaremos la funcinhook_menu() Cuando drupal reciba la peticin de la pgina /saludar/hola-mundo. Se comprobar si alguno de los mdulos tiene programado un nombremodulo_menu() para esta direccin. Creamos la funcin saludar_menu() que servir de ndice para las direcciones a las que responder nuestro mdulo saludar(saludar/saludar.module)

saludar/saludar.module <?php /** * @file * Archivo para empezar a programar con Drupal */ /** * Implementa hook_menu(). */ function saludar_menu() { $items['saludar/hola-mundo'] = array(

'type' => MENU_CALLBACK,->para que no aparezca men navegacin. La opcin por defecto es MENU_NORMAL_ITEM

'title' => 'Saludar', 'page callback' => 'saludar_hola_mundo', 'access callback' => TRUE, ->acceso con permiso de todos los usuarios ); return $items; } /** * Callback que implementa la pgina: saludar/hola-mundo. */ function saludar_hola_mundo() { return "Hola Mundo"; }
Cada vez que se implemente un cambio en hook_menu() necesitamos vaciar la cach para poder visualizar estas modificaciones. Configuracin/rendimientos/clear cache(vaciar toda la cache) 4Maquetar el resultado con Html formatear un poco el resultado con HTML

function saludar_hola_mundo() { return '<p class="saludo"><em>Hola Mundo</em></p>'; }

5-

Separar contenido y presentacin. Maqueta Hola Mundo con HTML en un archivo de plantilla aparte.

function saludar_hola_mundo() { $variables = array( 'message' => 'Hola Mundo', ); return theme('saludar_hola_mundo', $variables); }
Para ello devolvemos el resultado de la funcin theme(): Para generar el resultado de salida La funcin theme(): invoca el nombre del hook.

hook_theme(), utilizando el primer parmetro 'saludar_hola_mundo' como

6-

implementar el hook_theme() , indicando la plantilla que formatear la salida de 'saludar_hola_mundo' La funcin que implementa el hook_theme() en el mdulo se denomina nombremodulo_theme()

/**

* Implementa hook_theme(). */ function saludar_theme() { return array( 'saludar_hola_mundo' => array( 'template' => 'saludar-hola-mundo',->estamos llamando a la plantilla saludar-hola-mundo, ), ); }
*En nuestro hook_theme() estamos llamando a la plantilla (template): saludar-hola-mundo *para maquetar el callback: saludar_hola_mundo. *Falta crear la plantilla (archivo con el nombre del template acabado en .tpl.php.

7-

Crear la plantilla saludar/saludar-hola-mundo.tpl.php

saludar/saludar-hola-mundo.tpl.php

<p class="saludo"><em><?php echo $message; ?></em></p> **$message: que definimos en la funcin saludar_hola_mundo().puedes aadir nuevas variables de contenido (por
ejemplo la fecha)

8-

Crear un bloque para colocar nuestro contenido en la regin de la pgina o pginas donde queramos ubicarlo.

La funcin hook_block_info(), define todos los bloques que nuestro mdulo va a proveer: ** * Implementar hook_block_info(). */ function saludar_block_info() { $blocks['hola_mundo'] = array( 'info' => 'Bloque para Hola Mundo', ); return $blocks; }
En el array $blocks definimos todos los bloques de nuestro mdulo y proporcionamos las opciones por defecto de cada bloque. Aqu hemos definido solamente info, pero podramos haber definido si por defecto aparece activado o no, en qu regin, con qu peso, etc. *Estas opciones las podemos configurar structure/block. Veremos nuestro bloque, en la seccin Desactivado.

Para ver el bloque, construimos el bloque con el contenido, mediante hook_block_view(): /** * Implementa hook_block_view(). */ function saludar_block_view($delta = '') { switch ($delta) {

case 'hola_mundo': $block['content'] = saludar_hola_mundo(); return $block; } break; }


En esta funcin definimos lo que se ve en cada bloque que implementa nuestro mdulo. $delta: es la que nos identifica el bloque, caso 'hola_mundo': establecemos su contenido reutilizamos la funcin saludar_hola_mundo()

9- As

Hacer el saludo configurable desde la interfaz de administracin


Drupal, adems de una plataforma para desarrollo de aplicaciones, es un potente CMS o gestor de contenidos. Esto es as porque la mayora de los mdulos no solo Extienden la funcionalidad aportando algo nuevo Pone en manos de los usuarios administradores herramientas para configurar esa funcionalidad y gestionar su contenido. Los modulos deben ser programado para que sea configurable, implementar el formulario de administracin de las opciones del mdulo es bastante sencillo. Vamos a crear una pgina donde configurar el saludo de nuestro mdulo, as el administrador podr cambiar el texto del mensaje Hola mundo por cualquier otro saludo. Primero Colocaremos el acceso a esta pgina en el men de Configuracin dentro de la zona de Administracin, en la url /admin/config:

<?php /** * @file * Callbacks de administracin del mdulo saludar. */ /** * Define el formulario de opciones de configuracin. */ function saludar_configuracion() { //definimos los elementos del formulario en un array $form['saludar_saludo'] = array( '#title' => 'Saludo que se muestra al usuario', '#type' => 'textfield', //textfield: campo de texto textfield para establecer el Saludo que se muestra al usuario. Consultar https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7 '#default_value' => variable_get('saludar_saludo', 'Hola Mundo'), variable que llamaremos saludar_saludo ); $form['submit'] = array( '#type' => 'submit', // define el botn de submit //Este saludo lo vamos a guardar en la base de datos con una

'#value' => 'Guardar configuracin', ); $form['#submit'][] = 'saludar_configuracion_submit'; //la funcin que procesar el envo y devuelve el formulario. return $form; } /** * Valida el formulario de opciones de configuracin. */ function saludar_configuracion_validate($form, &$form_state) { if (trim($form_state['values']['saludar_saludo']) == '') { // que no se haya enviado una cadena vaca accediendo al valor del campo que recibimos del array $form_state['values']. form_set_error('saludar_saludo', 'El saludo no puede quedar vaco.'); //Si hay un error invocamos la funcin form_set_error(), definiendo el campo donde se ha producido y el mensaje de error correspondiente } } /** * Procesa el envo del formulario ya validado de opciones de configuracin. */ function saludar_configuracion_submit($form, $form_state) { variable_set('saludar_saludo', $form_state['values']['saludar_saludo']); //procesamos el envo validado guardando el saludo en la base de datos mediante la funcin variable_set(), drupal_set_message("Se han guardado las opciones de configuracin."); //emitimios un mensaje de confirmacin mediante drupal_set_message(). }

Podramos hacerlo mucho ms sencillo (simplificar el ejercicio) 12validando el campo obligatorio directamente con '#required' => TRUE utilizando la funcin system_settings_form(): esta aade el botn de submit, e invoca internamente tras el envo a la funcin system_settings_form_submit()(que se encarga de guardar el valor del campo en una variable con el mismo nombre que el campo)

Simplificando el ejercicio, podramos dejar el archivo saludar.admin.inc slo con esta funcin: function saludar_configuracion() { $form['saludar_saludo'] = array( '#title' => 'Saludo que se muestra al usuario', '#type' => 'textfield', '#default_value' => variable_get('saludar_saludo', 'Hola Mundo'), '#required' => TRUE, ); return system_settings_form($form); }

Ahora solo nos queda utilizar el valor de configuracin guardado para mostrarlo en el saludo. Para hacer esto modificamos la funcin saludar_hola_mundo() del archivo saludar.module, que quedar as: function saludar_hola_mundo() { $variables = array( 'message' => variable_get('saludar_saludo', 'Hola Mundo'), ); return theme('saludar_hola_mundo', $variables); } ** LOS HOOKS HOOK_BLOCK_CONFIGURE() Y HOOK_BLOCK_SAVE():LOS BLOQUES ADEMS TIENEN UNA PGINA DE CONFIGURACIN
ESPECFICA EN LA QUE PODRAMOS HABER INCLUIDO EL CAMPO PARA CONFIGURAR EL SALUDO, DE MANERA SIMILAR A CMO LO HEMOS HECHO EN SALUDAR.ADMIN.INC,

Ganchos(hook) Permitir mdulos para interactuar con el ncleo de Drupal. Sistema de mdulos de Drupal se basa en el concepto de "ganchos". Un gancho es una funcin PHP que se nombra foo_bar (), donde "foo" es el nombre del mdulo (cuyo nombre es, pues foo.module) y "bar" es el nombre del gancho. Cada gancho tiene un conjunto definido de parmetros y un tipo de resultado especificado. Para extender Drupal, un mdulo necesita simplemente implementar un gancho. Cuando Drupal desea permitir la intervencin de los mdulos, determina qu mdulos implementan un gancho y pide que se enganchen en todos los mdulos habilitados para que lo implementen. Los ganchos disponibles para la aplicacin se explican en la seccin de ganchos de la documentacin para desarrolladores. La cadena "gancho" se utiliza como marcador de posicin para el nombre del mdulo en las definiciones de gancho. Por ejemplo, si el archivo de mdulo se llama example.module, a continuacin, hook_help () que se aplica en ese mdulo se definira como example_help (). El ejemplo de las funciones incluidas no son parte del ncleo de Drupal, no son ms que modelos que se pueden modificar. Slo los ganchos implementados dentro de los mdulos se ejecutan al ejecutar Drupal. Devoluciones de llamada(callback) El API de Drupal a veces usa las funciones de devolucin de llamada que le permite definir cmo se produce algn tipo de procesamiento. Un callback es una funcin con una firma definida, que se define en un mdulo. A continuacin, se pasa el nombre de la funcin como parmetro a una funcin API de Drupal o devolverlo como parte de un valor de retorno aplicacin de gancho, y su funcin es llamada en el momento oportuno. Por ejemplo, al configurar el procesamiento por lotes puede que tenga que proporcionar una funcin de devolucin de llamada para cada paso del proceso y / o una devolucin de llamada para cuando se haya completado el procesamiento, que hara que, al definir estas funciones y que pasa sus nombres en la funcin de configuracin por lotes. Firmas de funcin de devolucin de llamada, como las definiciones de gancho, se describen mediante la creacin y documentacin de las funciones ficticias en un archivo * api.php;. Normalmente, el nombre de la funcin de devolucin de llamada ficticia debe comenzar con "callback_", y debe documentar los cambios y volver al valor y proporcionar un cuerpo de funcin muestra. A continuacin, la documentacin de la API se puede referir a la funcin de devolucin de llamada en su documentacin. Un usuario de la API por lo general puede nombrar su funcin de devolucin de lo que quieran, aunque un nombre estndar sera sustituir "callback_" con el nombre del mdulo.

También podría gustarte