2010-08-02 5 views
4

Comment modifier les onglets de liens trouvés sur la page de profil utilisateur par défaut dans drupal? J'essaie d'éviter de créer un fichier user_profile.tpl.php et de reconstruire le profil entier à partir de zéro. S'il y a un moyen plus simple de le faire, je préfère le faire. Mais, si je suis obligé de créer un modèle personnalisé, comment puis-je contrôler les onglets de menu pour le profil? Je n'ai trouvé aucune documentation expliquant cette partie pour le moment.Comment modifier les onglets de liens trouvés sur la page de profil utilisateur par défaut dans drupal?

Répondre

1

Modifier

Je ne surprends que vous vouliez faire une modification générique des onglets de profil utilisateur, pas nécessairement les enlever. J'ai modifié mon code pour fournir quelques exemples différents de la façon dont vous pouvez modifier les onglets.

Edit 2

Suppression du user_access() contrôle sur la unset car il ne sera vérifié lors de la reconstruction menu. Ajouté l'exemple access callback à la place.


Vous pouvez le faire dans un module personnalisé avec hook_menu_alter() et unset():

function mymodule_menu_alter(&$items) { 
    // If you have the Devel module installed, uncomment to retrieve list 
    // of registered menu items to figure out what to unset. 
    // kpr($items); 

    // Change the name of the Edit tab 
    $items['user/%user_category/edit']['title'] = t('Awesome edit!'); 

    // Disable the user edit tab, but don't disable the page if you go navigate 
    // directly to it 
    // @see http://api.drupal.org/api/function/hook_menu/6 for other types 
    $items['user/%user_category/edit']['type'] = MENU_CALLBACK; 

    // Only allow people with administer site configuration permissions to 
    // access the user edit and user edit account tabs. 
    $items['user/%user_category/edit']['access callback'] = 'user_access'; 
    $items['user/%user_category/edit']['access arguments'] = array('administer site configuration'); 
    $items['user/%user_category/edit/account']['access callback'] = 'user_access'; 
    $items['user/%user_category/edit/account']['access arguments'] = array('administer site configuration'); 

    // Completely disable the user edit tab, even if you go directly to it 
    // This affects all users, including user 1. 
    unset($items['user/%user_category/edit']); 
    unset($items['user/%user_category/edit/account']); 
} 

Chaque élément de menu est enregistré avec Drupal en utilisant le tableau $items. Après avoir activé ce module, reconstruisez le cache et les onglets doivent être modifiés.

+0

Je vais vérifier cette méthode demain et vous faire savoir si cela a fonctionné. Merci! –

+0

Je n'ai pas compris que vous vouliez faire des modifications sur les onglets, sans nécessairement les supprimer complètement. J'ai mis à jour mon code pour vous donner quelques possibilités supplémentaires. –

+0

J'ai remarqué un problème avec ce code. La seule fois où cette fonction semble appelée est lorsque vous soumettez à nouveau les modules à partir des pages d'administration. Après cela, cela ne s'appelle plus. Et parce que vous ne pouvez pas soumettre à nouveau les modules sans avoir administrer les autorisations de configuration de site, la fonction unset ne sera jamais appelée. Mais, j'ai enlevé la déclaration if et ça a bien fonctionné. Dans mon cas, il est acceptable que l'administrateur ne voit pas ou n'accède pas à cet élément de menu particulier, car c'est vraiment un élément de menu inutile. Merci beaucoup! Cependant, il doit toujours y avoir un moyen de faire fonctionner l'instruction if. –

1

Vous pouvez utiliser le module Tab Tamer pour modifier les onglets de liens par défaut de Drupal qui apparaissent dans les pages de profil utilisateur.

Questions connexes