Comment puis-je ajouter de nouvelles conditions en plus des conditions existantes qui déterminent si un élément de menu est visible? Ces conditions ne doivent pas être limitées aux paramètres d'autorisations.
À titre d'exemple d'utilisation (pas nécessairement la raison de cette question): Supposons que j'ai un type de contenu dont les utilisateurs ne sont autorisés à créer qu'un seul nœud. J'ai un élément de menu pour ajouter ce type de contenu. Mais si l'utilisateur a déjà créé un nœud de ce type de contenu, je souhaite masquer l'élément de menu. Ma première pensée est d'exécuter une requête pour vérifier l'existence d'un nœud créé par l'utilisateur actuel qui est du type de contenu spécifique. S'il en existe un, masquez l'élément de menu.
Je pense que ce type de fonctionnalité devrait y entrer hook_menu_alter()
et y ajouter la logique requise. Mais je ne sais pas comment faire cela sans contourner les vérifications existantes, comme vérifier si l'utilisateur a les autorisations pour créer ce type de contenu. Dois-je inclure cette logique dans ma propre condition? Ou puis-je ajouter à la logique d'accès existante sans l'écraser?
Modifier: certaines personnes semblent se concentrer sur la réponse "comment puis-je limiter un utilisateur à la création d'un nœud d'un type de contenu". Ce n'est pas la question ici. La question est de savoir comment ajouter des conditions d'accès personnalisées à un élément de menu.
En réponse aux commentaires ci-dessus, la solution dans D7 serait d'utiliser:
la source
Vous recherchez le module API Chain Menu Access .
Il y a au moins un exemple sur Drupal Stack Exchange sur la façon de l'utiliser.
la source
Une option serait de créer un nouveau rôle disposant de l'autorisation de création de contenu pour votre type de contenu. Une fois qu'un utilisateur a créé un nœud de ce type, supprimez ce rôle et il ne pourra plus en créer.
la source
Vous devriez peut-être essayer le module Node Limit .
Depuis la page du projet:
la source