Menüelemente mit beschränktem Zugriff auf anonyme Benutzer anzeigen

9

Ich habe eine Website, die das Modul " Privat" verwendet , um den Zugriff auf den Inhalt festzulegen, und natürlich enthalten einige meiner Seiten Menüelemente. Wenn ich nun eine Seite als privat einstelle, können nur Benutzer mit der entsprechenden Berechtigung das sehen, was großartig ist und was ich wollte.

Ich habe jedoch ein Problem mit den Menüelementen. Sie verschwinden, wenn der ihnen zugewiesene Inhalt nicht öffentlich ist (dh die ihnen zugewiesene Seite ist privat). Dies ist in Ordnung, aber ich möchte diese Elemente weiterhin anzeigen können Wenn der Benutzer in der Navigation auf sie klickt, werden sie zur Anmeldeseite weitergeleitet und aufgefordert, ihre Daten einzugeben, um diese bestimmte Seite anzuzeigen.

Grundsätzlich möchte ich das Verhalten der Menüelemente so ändern, dass sie für anonyme und registrierte Mitglieder der Website immer sichtbar sind. Wenn Sie jedoch darauf klicken, können Sie entweder die Seite sehen (wenn Sie angemeldet sind in) oder auf die Anmeldeseite umgeleitet werden (falls anonym)

Ich habe diese Lösung gefunden, die für mich nicht die beste ist, da ich viele solcher Seiten habe und nach einem besseren Ansatz suche. Ich habe sogar das Sichtbarkeitsmodul für Menüelemente ausprobiert, aber das hat auch nicht geholfen!

Wie erreiche ich das bitte?

Luca

Luca
quelle
Ich habe einen Code unter github.com/bbinkovitz/derpl/tree/master/foreshadow_menu , der für Sie hilfreich sein könnte. Sie müssen wahrscheinlich einige Werte ändern oder Ihre Menüs genauso benennen wie ich, aber es könnte Ihnen den Einstieg erleichtern.
Beth

Antworten:

4

Ihr Problem ist ziemlich häufig.

Hier erfahren Sie, wie Sie einen solchen Trick in Drupal 6, 7 und 8 implementieren können: http://drupal.org/node/300607

Drupal 6 (und 7) haben die Möglichkeit entfernt, Menüelemente anzuzeigen, auf die der Benutzer keinen Zugriff hat. In einigen Fällen ist es jedoch wünschenswert, einen Menüpunkt anzuzeigen, obwohl der Benutzer keinen Zugriff auf den Menüpunkt hat. Wenn Sie beispielsweise einen Authentifizierungsmechanismus verwenden, der versucht, eine Authentifizierung zu erhalten, wenn ein 403 angezeigt wird, möchten Sie den Menüpunkt weiterhin anzeigen, damit Benutzer die Möglichkeit haben, Anmeldeinformationen für die Anmeldung anzugeben.

Die Lösung für Drupal 7 finden Sie hier: http://drupal.org/node/300607#comment-4450062

Wenn Sie ein fertiges Modul bevorzugen, können Sie es hier herunterladen: https://github.com/systemseed/always_visible

Eugene Fidelin
quelle
Vielen Dank. Ich wünschte, sie hätten diese Option in Drupal eingebaut
Luca
1

Ich hatte eine ähnliche Situation, in der Seiten im Menüsystem angezeigt werden mussten, der Inhalt jedoch nur für angemeldete Benutzer angezeigt werden sollte. Die endgültige Lösung war sehr einfach und funktioniert weiterhin.

Stattdessen prüft die Knotenvorlage beim Steuern des Inhaltszugriffs, ob der Benutzer angemeldet ist. In diesem Fall wird der Inhalt angezeigt. Wenn nicht, wird Text mit Links zum Anmelden oder Registrieren angezeigt.

Sie werden nicht automatisch umgeleitet. Wenn dies kritisch ist, ist dies nicht die Lösung.

Der Code auf den Punkt gebracht:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="/drupal//user/login">log in</a> or <a href="/drupal//user/register">register</a> etc etc.'
endif; 
?>
keva
quelle
Vielen Dank, aber das wäre aus vielen Gründen keine gute Lösung. Ich verwende ein anderes Template-System und möchte auf Inhalte zugreifen. Wenn Sie also Inhalte auflisten, z. B. in Ansichten, wird der Zugriff respektiert.
Luca
Ah ja. Ich hoffe du findest eine Antwort. Es scheint, als wäre es ein ziemlich häufiger Anwendungsfall.
Keva