Créer dynamiquement le titre d’une page avec Drupal: title call back et title arguments

Lorsque nous programmons un module, bien souvent nous avons besoins de créer des pages spécifiques pour ce dernier. Dans ce cas nous utiliserons le hook hook_menu de Drupal.
 
Dans les ‘items’ de ce hook, nous avons la propriété ‘title’ qui nous permet de définir une chaine alphanumérique comme titre, souvent accompagnée de la fonction t() pour les traductions. 
 

<?php
/* *
* Implementation of hook_menu().
*/

function monmodule_menu(){
   
$items = array();
   
// Page articles
   
$items['voir-les-articles/%'] = array(
       
// la propriété title
       
'title' => t('Les articles du jour'),
          
// le reste des propriétés
       
'page callback' => 'page_voir_les_articles',
       
'file' => 'monmodule.page_voir_les_articles.inc',
       
'page arguments' => array(1),
       
'access callback' => TRUE,
       
'type' => MENU_CALLBACK,
    );
    return
$items;
}
?>

 
Mais comment faire lorsque nous voulons générer dynamiquement le titre en fonction de notre contenu ou d’un utilisateur ? ou même d’un argument passé par le path ?
 
Dans ce cas nous allons utiliser deux nouvelles propriétés de nos items (menu items) en D6 : ‘title callback’ et ‘title arguments’.
‘ title call back’ nous permet d’exécuter une fonction qui retournera le titre dont nous avons besoin.
‘title arguments’ nous permet de passer un ou plusieurs paramètres (arguments) à la fonction invoquée para ‘title callback’
 
Imaginons que nous voulions une page qui nous donne tous les nodes pour une date donnée (par argument dans le path) et dont le titre inclut cette date et le nom de l’utilisateur. 
 
Nous aurions donc un path du type /voir-les-articles/20100515 et un titre comme suit : Les articles du 15-05-2010 pour  Jean Dupont.
 

<?php
/* *
* Implementation of hook_menu().
*/

function monmodule_menu(){
   
$items = array();
   
// Page articles
   
$items['voir-les-articles/%'] = array(
       
// la fonction qui va traiter le titre
       
'title callback' => 'page_article_titre',
       
// les arguments que nous allons passer à la fonction
       
'title arguments' => array(1),
       
'page callback' => 'page_voir_les_articles',
       
'file' => 'monmodule.page_voir_les_articles.inc',
       
'page arguments' => array(1),
       
'access callback' => TRUE,
       
'type' => MENU_CALLBACK,
    );
    return
$items;
}

/* *
* page_article_titre().
* @arg
*     $date - la date
* @return
*     le titre comme un string qui inclut la date et le nom de l'utilisateur
*/
function page_article_titre($date){
    global
$user;
   
// process sur la date
    //...
   
   
return "Les articles du $date pour ".$user->name;
}
?>

 
Dans ce cas nous avons un title callback qui appelle la fonction page_article_titre()  et un title arguments qui définit par le deuxième élément du path en commençant par zéro, donc 1. 
 
La fonction page_article_titre() prendra comme paramètre la date et nous récupérons les informations sur l’utilisateur actuel grâce a l’objet global $user qui est toujours disponible.
 
Voilà, si vous avez des questions, n’hésitez pas a poster un commentaire, j’y répondrai avec plaisir. 
 

Tags:

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • Vous pouvez publier du code en utilisant les balises <code>...</code> (generic) ou bien <?php ... ?> (PHP colorié).
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plus d'informations sur les options de formatage

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

Toutes les langues

A propos

En savoir plus... Karim Boudjema. Un développeur belge dans les Andes boliviennes.

Voir mon profil sur LinkedInVoir mon profil sur Twitter

>> En savoir plus...

Commentaires récents