Comment puis-je cacher un lien particulier dans le menu principal aux utilisateurs anonymes sans rendre le menu entier invisible?
Vous ne configurez pas tellement la visibilité des liens directement, mais vous configurez plutôt les autorisations de types de contenu spécifiques, et tout lien vers le contenu d'un type particulier sera visible ou invisible en fonction des autorisations du contenu vers lequel le lien pointe. .
Vous pouvez configurer les autorisations sur tout élément de contenu donné en accédant à la section Autorisations dans Administration et en trouvant le type de contenu sur lequel vous souhaitez restreindre les autorisations, et configurez ces autorisations (cases à cocher pour afficher, créer, modifier, etc.) en fonction sur le rôle de manière appropriée.
Si vous devez configurer l'accès à des nœuds/contenus spécifiques, vous pouvez consulter Content Access .
Vous pouvez le faire facilement avec un peu d'huile de coude!
Il y a deux hooks pour cela selon que votre menu est généré par un module ou par Drupal lui-même. Dans un module personnalisé vous utiliseriez soit hook_men ou hook_menu_alter .
Ces deux crochets ont un paramètre, access callback
où vous pouvez lui donner une fonction qui retourne un BOOL. Si la fonction renvoie VRAI, l'accès est autorisé et le lien du menu est affiché. Si FALSE est retourné, l'accès n'est pas autorisé et le lien du menu n'est pas affiché.
//Small example
function <your_module>_menu_alter(&$items) {
// Example - disallow access for anonymous to node 15 from custom module
$items['node/15']['access callback'] = '_accessCheck';
}
Ensuite, plus bas, vous définissez le rappel:
function _acccessCheck(){
global $user;
if ($user->uid) { // user is logged in
return TRUE;
} // Anonymous
return FALSE;
}
J'espère que cela aide, codage heureux!
vous pouvez restreindre les utilisateurs à voir certains des liens du menu en utilisant le module Menu par rôle .
Il vous permet de restreindre l'accès aux éléments de menu en fonction des rôles d'utilisateur. Vous pouvez donc masquer un lien de menu particulier d'un rôle particulier et le montrer aux autres.
Vous pouvez le faire manuellement. Ce n'est peut-être pas la meilleure forme, mais cela peut résoudre temporairement votre problème.
Vous pouvez ajouter un fichier JavaScript à votre principal .tpl.php
. Dans ce fichier, vous pouvez jouer avec les éléments parents et enfants de votre code (http://api.jquery.com/parent), par des méthodes JavaScript. Donc, vous devez d'abord obtenir votre élément, par quelque chose comme #idelement
(Il peut être positionné dans le code de menu entre toutes les feuilles du menu), puis masquer l'élément par .hide()
. En outre, vous devez ajouter à votre code que le fichier JavaScript ajouté au .tpl.php
Uniquement si l'utilisateur est connecté. Comme:
if(user_is_logged_in()){
drupal_add_js(yourjSFile);
}
Je répète que c'est une solution temporaire.
Si vous avez modifié votre code ou élément dans le menu, cette solution doit également être modifiée.
Cela ne masquera qu'un élément de menu, et non les types de contenu.
http://drupal.org/project/content_access fonctionne très bien pour moi avec Drupal 7.22.
Il masque même les liens du menu principal pointant vers un contenu restreint.