Cuando desarrollamos un módulo en Drupal, muchas veces necesitamos crear páginas y también títulos dinámicos. Es decir que según el contenido de la página, necesitamos que cambie el título en función a este contenido. En este caso utilizaremos el hook hook_menu de Drupal.
En los ‘items’ de este hook, tenemos una propiedad ‘title’ que nos permite definir una cadena alfanumérica como título, siempre acompañada de la fonction t() para las traducciones.
<?php
/* *
* Implementation of hook_menu().
*/
function mimodule_menu(){
$items = array();
// Page articles
$items['ver-los-articulos/%'] = array(
// la propiedad title
'title' => t('Los artículos del día'),
// el resto de las propiedades
'page callback' => 'page_ver_los_articulos',
'file' => 'mimodule.page_ver_los_articulos.inc',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
?>
En el ejemplo de arriba, creamos una página con el path ‘ver-los-articulos’ y con el título ‘Los artículos del día’.
Pero como podemos hacer para generar dinámicamente el titulo de la página en fonction al contenido o a un usuario y/o de un argumento que pasamos por el path?
En este caso vamos a utilizar dos propiedades nuevas: ‘title call back’ y ‘title argument’.
‘title call back’ nos permite ejecutar una función que nos devolverá el titulo.
‘title arguments’ nos permite pasar un argumento desde el path hacía la fonction llamada por ‘title call back’
Imaginemos que deseamos una página que nos muestre todos los artículos de un día en particular (pasaremos la fecha como argumento en el path) para la cual el titulo incluye esta fecha y el nombre del usuario.
Tendriamos entonces un path como sigue: ‘/ver-los-articulos/20100515’ y un título de la página: ‘Los artículos del día 15-05-2010 para Luis Guerra’.
<?php
/* *
* Implementation of hook_menu().
*/
function mimodule_menu(){
$items = array();
// Page articulos
$items['ver-los-articulos/%'] = array(
// la función que nos da el título
'title callback' => 'page_articulo_titulo',
// los argumentos que pasamos a la función
'title arguments' => array(1),
'page callback' => 'page_ver_los_articulos',
'file' => 'mimodule.page_ver_los_articulos.inc',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/* *
* page_article_titre().
* @arg
* $date – la fecha
* @return
* el titulo como un string que incluye la fecha
* y el nombre del usuario
*/
function page_articulo_titulo($date){
global $user;
// process sobre la fecha
//...
return "Los artículos del $date para ".$user->name;
}
?>
En este ejemplo, tenemos un ‘title call back’ que llama a la función page_articulo_titulo() y a esta función le pasamos como argumento el segundo elemento del path (empezando de 0, entonces 1) con la propiedad ‘title arguments’.
La función page_articulo_titulo() tomará como argumento la fecha y recuperamos los datos del usuario registrado con el objeto global $user, que siempre está disponible.
Voilà, si tienen preguntas, postean un comentario, con gusto les responderé.


Comentarios
Ayuda, como cambiar el titulo a lista de seleccion
Hola, buscando por la web llegue a tu post, no se si puedas ayudarme, requiero que el campo titulo pueda desplegar una lista de seleccion, gracias.
Más info
Antonio, me puedes dar más info sobre tu requerimiento? Así tal vez te podré ayudar :)
Enviar un comentario nuevo