Está en la página 1de 19

Drupal 7

Desarrollando Módulos

Roger Limachi Orellana


Introducción
 Drupal tiene un verdadero framework
modular que lo hace realmente productivo al
momento de trabajar en equipos de trabajo.

 Todo lo que se puede manejar de Drupal


desde el navegador web(La interfaz
administrativa), incluyendo las características
de módulos contribuidos, se pueden realizar
las mismas acciones por código fuente es
decir por PHP.
 Todas las funcionalidades que tiene Drupal y
las que extendemos esta incluidos en
módulos, los cuales son activados o no.

 Pero que pasa si no existe la funcionalidad


especifica que deseamos?, entonces tenemos
que pasar al siguiente nivel de Drupal, usar
su framework, es decir desarrollar módulos.

 Para eso Drupal nos provee un API para


interactuar con el núcleo de Drupal,
Sistema de módulos
 La forma mas común para interactuar con el
núcleo de Drupal es a traves de hooks.

 Hooks o callbacks
Son sufijos de funciones en PHP que nos
permiten interactuar con el núcleo de
Drupal, se disparan cada vez que un
modulo se requiere en el bootstrap. Son
eventos que están a la espera de ser
ejecutados.
Creando un Modulo
 Estructura de un modulo: (Estructura del
folder)
1. nombre_modulo
1.1 nombre_modulo.info (Información)
1.2 nombre_modulo.module (Codigo PHP)

Dicho modulo se deber copiar en:


sites/all/modules/custom/ o en
sites/nombre_sitio/modules/custom
Consideraciones
 El nombre del modulo no debe contener caracteres
especiales debe ser un nombre en minúscula que
podría ser separado por _
 EL archivo .info solo contiene información del
modulo, muy útil para informarnos acerca de la
estructura del modulo a simple vista.
 El archivo .module es un script de PHP que declara
e implementa funciones PHP de paquete, aquí se
hacen uso de los hooks, estas funciones deberían
comenzar por el nombre del modulo. Se debe evitar
el uso de programación PHP fuera de las funciones.
Estructura basica del archivo .info
; Created for rogerex at 26 dec 2010 (Comentarios)
name = "Module Name"
description = "Description module."
core = "7.x"
package = "My package"
files[] = name_module.module
files[] = includes/something.inc

dependencies[] = name_folder_module

; Additional Information
version = "7.x-1.0.0-dev"
project = "the project"
datestamp = "1303820076 "
Estructura básica del archivo .module
<?php

/**
* @file
* Description of file
*
* Complete Description of file
*/

/**
* Implements hook_something()
*/
function nombre_module_something() {
//code
}
Sistema de menús
 Define los menús de navegación y rutas de
peticiones a paginas basándose en URL

 El sistema de menús de Drupal maneja una


simple jerarquía por rutas

 a/b/c
 a/b/c/d
 padre/hijo
Hook_menu()
 Este hook nos permite crear rutas (URL) para
acceder a funciones de nuestro
archivo .module

function nombre_modulo_menu() {
$items = array();
//Implementacion del menú ítem PDO
return $items;
}
Menú Ítem PDO estático
$items['ruta/que/deseamos'] = array(
'title' => 'Titulo de enlace',
'description' => 'Descripcion del enlace',
'page callback' => 'nombre de funcion',
'access arguments' => array('permiso'),
);
 Los atributos que maneja un menú ítem PDO

son muchos pero básicamente usaremos estos


para una ruta estática.
 permiso es el index del array de permisos.
Menú Ítem PDO dinámico
$items['ruta/%/deseamos/%'] = array(
'title' => 'Titulo de enlace',
'description' => 'Descripcion del enlace',
'page callback' => 'nombre de funcion',
'page arguments' => array(1, 3),
'access arguments' => array('permiso'),
);
 El wildcard % puede tener cualquier valor de
texto para que nosotros lo enviemos como
argumento a nuestra función PHP.
Hook_permission()
function nombre_module_permission() {
return array(
'nombre permiso' => array(
'title' => t('Acceso a la ruta'),
'description' => t('Permite el acceso a la ruta.'),
),
);
}

nombre permiso es el key del array de permisos


Hola Mundo con Modulo
 Nombre del Modulo: hola_mundo

 Estructura del folder:


hola_mundo
hola_mundo.info
hola_mundo.module
hola_mundo.info
 ; Created for rogerex at 26 dec 2010
 name = "Hola Mundo"
 description = "Nos brinda el famoso Hola Mundo con Modulo
Drupal."
 core = "7.x"
 package = "Mis modulos"
 files[] = hola_mundo.module

 dependencies[] = user

 ; Additional Information
 version = "7.x-1.0.0-dev"
 project = "curso drupal 7 m1"
 datestamp = "1303820076"
hola_mundo.module parte 1
 <?php

 /**
 * @file
 * Hola Mundo
 *
 * Esto contiene la caracteristicas basicas del hola mundo
 */

 /**
 * Implements hook_menu()
 */
 function hola_mundo_menu() {
 $items = array();
 //Implementacion del menú ítem PDO
 $items['hola/mundo'] = array(
 'title' => 'Hola Mundo',
 'description' => 'Muestra el Hola mundo',
 'page callback' => 'hola_mundo_decirHola',
 'access arguments' => array('hola_mundo permiso'),
 );

 return $items;
 }
hola_mundo.module parte 2
 /**
 * Implements hook_permission()
 */
 function hola_mundo_permission() {
 return array(
 'hola_mundo permiso' => array(
 'title' => t('Acceso a hola mundo'),
 'description' => t('Permite el acceso a hola mundo.'),
 ),
 );
 }

 /**
 * Funcion que muestra el Hola mundo
 */
 function hola_mundo_decirHola() {
 return '<strong>Hola Mundo</strong>';
 }
Usando wildcard en el modulo
hola_mundo
$items['hola/mundo/%'] = array(
'title' => 'Hola Mundo',
'description' => 'Muestra el Hola mundo',
'page callback' => 'hola_mundo_decir',
'page arguments' => array(2),
'access arguments' => array('hola_mundo permiso'),
);

Debemos implementar la función


hola_mundo_decir($arg1) ya que recibe un parámetro
gracias al menú ítem dinámico
Implementación de función
hola_mundo_decir
function hola_mundo_decir($arg1) {
return '<strong>' . $arg1 . '</strong>';
}

 Donde $arg1 es el argumento que enviamos


por URL es decir por hola/mundo/algun-dato

También podría gustarte