Afficher les éléments de menu avec un accès limité aux utilisateurs anonymes

9

J'ai un site Web qui utilise un module privé pour définir l'accès au contenu, et bien sûr certaines de mes pages ont des éléments de menu. Maintenant, si je définissais une page comme privée, seuls les utilisateurs disposant des autorisations appropriées pouvaient voir cela, ce qui est génial et ce que je voulais.

Mais j'ai un petit problème avec les éléments du menu, ils disparaissent si le contenu qui leur est attribué n'est pas public (c'est-à-dire que la page qui leur est attribuée est privée), c'est OK mais j'aimerais pouvoir toujours montrer ces éléments dans la navigation, donc si l'utilisateur clique dessus, il les amènera à la page de connexion leur demandant de saisir leurs coordonnées afin de voir cette page particulière.

Donc, fondamentalement, je voudrais changer le comportement des éléments de menu de manière à ce qu'ils soient toujours visibles pour les membres anonymes et enregistrés du site Web, mais lorsque vous cliquez dessus, vous pourrez soit voir la page (si vous êtes connecté) dans) ou être redirigé vers la page de connexion (si anonyme)

J'ai trouvé cette solution qui n'est pas la meilleure pour moi car j'ai beaucoup de pages comme ça donc je cherche une meilleure approche. J'ai même essayé le module de visibilité des éléments de menu, mais cela n'a pas aidé non plus!

Comment puis-je y parvenir s'il vous plaît?

Luca

Luca
la source
J'ai du code sur github.com/bbinkovitz/derpl/tree/master/foreshadow_menu qui pourrait vous être utile. Vous devrez probablement modifier certaines valeurs ou nommer vos menus de la même manière que moi, mais cela pourrait vous aider à démarrer.
beth

Réponses:

4

Votre problème est assez courant.

Voici une discussion sur la façon de mettre en œuvre une telle astuce dans Drupal 6 et 7 et 8: http://drupal.org/node/300607

Drupal 6 (et 7) a supprimé la possibilité d'afficher les éléments de menu auxquels l'utilisateur n'a pas accès. Cependant, dans certains cas, il est souhaitable d'afficher un élément de menu même si l'utilisateur n'a pas accès à l'élément de menu. Par exemple, si vous utilisez un mécanisme d'authentification qui tente d'acquérir l'authentification lorsqu'un 403 est affiché, vous souhaitez toujours afficher l'élément de menu afin que les utilisateurs aient la possibilité de fournir des informations d'identification pour se connecter.

La solution pour Drupal 7 peut être trouvée ici: http://drupal.org/node/300607#comment-4450062

Si vous préférez un module prêt - vous pouvez le télécharger ici https://github.com/systemseed/always_visible

Eugene Fidelin
la source
Merci beaucoup. Je souhaite qu'ils aient cette option intégrée Drupal
Luca
1

J'ai eu une situation similaire où les pages devaient apparaître dans le système de menus, mais le contenu ne devrait apparaître qu'aux utilisateurs connectés. La solution finale était très simple et continue de fonctionner.

Au lieu de contrôler l'accès au contenu, le modèle de nœud vérifie si l'utilisateur est connecté. Si tel est le cas, il affiche le contenu. Sinon, du texte apparaît avec des liens pour vous connecter ou vous inscrire.

Ils ne sont pas automatiquement redirigés, donc si c'est critique, ce n'est pas la solution.

Le code en bref:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="https://drupal.stackexchange.com/user/login">log in</a> or <a href="https://drupal.stackexchange.com/user/register">register</a> etc etc.'
endif; 
?>
keva
la source
Merci, mais ce ne serait pas une bonne solution pour de nombreuses raisons, une que j'utilise un autre type de système de modèles et que je souhaite avoir accès au contenu.
Luca
Ah oui. J'espère que vous trouverez une réponse. Il semble que ce serait un cas d'utilisation assez courant.
keva