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.



Commentaires
Poster un nouveau commentaire