2009-03-17 17 views
0

Ich möchte nicht, dass der Benutzeranmeldeblock für Benutzer angezeigt wird, die keine Administratoren sind.Block 'Benutzeranmeldung' nicht anzeigen

Ich will es nur für den Admin-Benutzer angezeigt werden (sitadmin, uid: 1, in meinem Fall) und Benutzer, die in (uid: 0) nicht angemeldet

In der configure Seite (/ admin/build/block/configure/user/0) Für den Block habe ich unter den seitenspezifischen Einstellungen ausgewählt "Zeige, ob der folgende PHP-Code TRUE zurückgibt (PHP-Modus, nur für Experten)". und den folgenden Code angegeben:

<?php 
global $user; 

if($user->uid===1 or $user->uid===0) 
    return TRUE; 
else 
    return FALSE; 

?> 

Allerdings ist es immer noch sichtbar ist auch für Benutzer mit uid 3,4 usw. Ich habe versucht, Cache zu löschen, ohne Erfolg. Auf der anderen Seite, wenn ich einfach setzen

<?php return FALSE;?> 

Der Benutzerblock wird nicht für anonyme Benutzer angezeigt.

Hinweis: Rollenspezifische Sichtbarkeitseinstellungen scheinen keinen Einfluss darauf zu haben.

+0

Es ist nicht klar, was Sie unter "Benutzer anmelden Block" verstehen, da der Anmeldeblock für angemeldete Benutzer nicht angezeigt wird. Angemeldete Benutzer sehen den Link zum Abmelden, und wenn Sie das entfernen, können sie sich nicht abmelden (was keine gute Idee ist). – kiamlaluno

Antwort

2

es könnte auch sein, dass in dem $user Array, uid tatsächlich eine Zeichenfolge ist. Wenn Sie es also === geben, versucht es auch den Typ zu vergleichen. Sie könnten entweder tun $user->uid==="1" oder $user->uid==1

EDIT:

Sie auch mit

!in_array('authenticated user', array_values($user->roles)) ihre Benutzerrollen Überprüfung versuchen könnte.

Ich denke, das ist die Logik, die Sie wollen. Ich bin mir nicht sicher, ob Sie etwas anderes als Standardverhalten für den Login-Block definieren ... es wird nur angezeigt, wenn jemand NICHT eingeloggt ist? Wie ist das anders als normal?

+0

Nun, wenn das der Fall ist, dann sollte ich immer FALSE unabhängig vom Benutzer bekommen. Aber das ist nicht der Fall! Wie auch immer, ich habe das versucht; kein Glück. –

+0

Mein schlechtes. :(Ich hatte mir vorgestellt, dass die 'Benutzeranmeldung' und 'Navigation' gleich sind! Ich wollte, dass die Navigation nur für Admin-Benutzer und nicht für andere sichtbar ist. Also verschiebe ich diesen Code für 'Navigations' Block Sichtbarkeit, es funktioniert. Danke ! –

0
<?php 
global $user; 

if($user->uid==1 || $user->uid==0) 
    return TRUE; 
else 
    return FALSE; 
?>  

würde den Trick tun.

Wenn Sie sich nicht sicher sind, machen Sie immer ein einfaches Echo und zeigen Sie den Block an. Zum Beispiel:

<?php 
global $user; 

if($user->uid==1) 
    echo "Hello world!"; 
?>