Crear una página dinámica en Drupal 7
Una de las grandes ventajas de los CMS es poder crear contenidos mediante formularios, sin necesidad de conocer lo que hay detrás. Pero a veces necesitamos todo el potencial que nos ofrece la programación para poder programar comportamientos dinámicos a través de parámetros que pueden venir, por ejemplo, desde la URL.
Crear la URL
Tendremos que crear un módulo personalizado que tenga el hook_menu implementado. En él definiremos la ruta elegida para la página dinámica, y mediante porcentajes (%) definiremos la posición de los valores dinámicos. Después tendremos que definir la función que se encargará de generar el contenido con el parámetro ‘page callback’ y los parámetros que tomará, que se tomarán de la URL. Aquí definiremos su posición dentro de la URL, comenzando por la posición cero para el primer parámetro, la posición uno para el siguiente (separados por la barra [/]) y así sucesivamente. Podemos definirle un permiso para que no pueda acceder cualquier usuario, y el título de la página.
1 2 3 4 5 6 7 8 9 10 11 |
function MIMODULO_menu() { $items['registro/confirmacion/%/%'] = array( 'page callback' => '_MIMODULO_confirmation_page', 'page arguments' => array(2, 3), 'access arguments' => array("access content"), 'type' => MENU_CALLBACK, 'title' => 'Envío realizado', ); return $items; } |
Definir la salida de la página
Ahora crearemos esa función que va a generar la salida de la página. Podemos hacer todo el procesamiento que queramos, utilizando cualquier función que nos ofrece el core de Drupal y sus módulos. Si queremos mostrar la salida utilizando el theme actual de nuestra instalación devolveremos el valor mediante ‘return’. Si quisiéramos que el contenido usara un HTML en blanco, con un ‘print’ en su lugar sería suficiente:
1 2 3 4 5 |
function _MIMODULO_confirmation_page($parametro1, $parametro2) { $output = '<p>Hola '.$parametro1.'</p><p>Bienvenido a '.$parametro2.'</p>'; return $output; // print $output; } |
Ahora activamos el módulo y accedemos a http://www.example.com/registro/confirmacion/Jorge/casa y mostraría:
‘Hola Jorge. Bienvenido a casa‘