2010-11-16 31 views
3

Je souhaite ajouter un élément de menu à côté des liens de menu [afficher] [modifier] [fichiers] ... en haut de la page du profil utilisateur. Lorsqu'un utilisateur clique dessus, il doit se comporter comme les autres, en ce sens qu'il ne se contente pas de lancer une nouvelle page, mais que l'élément de menu sur lequel il a cliqué (appelons "Funky Button") devient grisâtre et que l'utilisateur reste dans la zone de profil utilisateur.Onglets Menu personnalisé dans la page de profil utilisateur Drupal

J'ai créé un crochet comme ci-dessous:

function my_module_funky() { 
    // TODO: what to do? 
} 


function my_module_menu() { 

    $items['user/%user/funky'] = array(
     'title' => t('Funky Button'), 
     'page callback' => 'my_module_funky', 
     'page arguments' => array(1), 
     'access callback' => TRUE, 
     'access arguments' => array('access funky button'), 
     'type' => MENU_LOCAL_TASK, 
    ); 

    return $items; 
} 

Donc, cet extrait de code ci-dessus ajoute le bouton - mais je ne peux pas comprendre comment l'obtenir pour afficher comme la vue et les boutons d'édition affichage leur contenu. Merci!

+0

cela a fonctionné pour moi. merci –

Répondre

0

Votre rappel doit retourner la chaîne contenant le code HTML de la page pour afficher, par exemple:

function my_module_funky($user){ 
drupal_set_title('Funky page'); 
return 'This is the $user value: <pre>'.var_export($user, true).'</pre>'; 
} 

$user vient de la ligne 'page arguments' => array(1) de votre hook_menu mise en œuvre qui transmet la valeur du %user wildcard comme premier argument de votre rappel de page.


Si c'est une page complexe, vous pouvez créer une fonction de thème avec un fichier de modèle, de cette façon vous pouvez stocker le code de la page dans un fichier .tpl.php, ce qui le rend plus facile à maintenir (en particulier si votre module crée beaucoup de ces pages personnalisées). Cela aurait également l'avantage de permettre aux thèmes de personnaliser la sortie de la page en fournissant leur propre version du fichier .tpl.php si votre module devient populaire ou si d'autres modules pourraient pré-traiter la page pour ajouter/modifier des variables.

+0

Parfait juste ce dont j'avais besoin, merci – Andrew