Crear dinámicamente el titulo de una página con Drupal: title call back y title arguments

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é.
 

Tags:

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

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

By submitting this form, you accept the Mollom privacy policy.

Arcerca del autor

Karim Boudjema Karim Boudjema. Un programador belga en los Andes de Bolivia.

Ver mi perfil en LinkedInVer mi perfil en Twitter

>> Más...

Comentarios recientes