2009-03-17 2 views
0

관리자가 아닌 사용자에 대한 사용자 로그인 블록 표시를 원하지 않습니다.'사용자 로그인'블록 표시 안 함

나는 단지 그것을 관리 사용자에 대해 표시 할 (sitadmin, UID : 내 경우, 1), (UID : 0) 로그인하지 않은 사용자 구성 페이지에서

(/ 관리자/빌드/블록/구성/사용자/0), 페이지 특정 설정에서 "다음 PHP 코드가 TRUE를 반환하면 표시 (PHP 모드, 전문가 전용)"를 선택했습니다. 다음 코드를 부여 :

<?php 
global $user; 

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

?> 

그러나, 그것은 아무 소용이와 함께, 심지어 내가 캐시를 지우고 시도 UID 3,4 등으로 사용자를위한 계속 볼 수 있습니다. 반면에, 내가 간단하게 말하면

<?php return FALSE;?> 

사용자 블록은 익명 사용자에게 표시되지 않습니다.

참고 : 역할 별 가시성 설정이 이에 영향을 미치지 않는 것으로 보입니다.

+0

사용자 로그인 블록이 로그인 한 사용자에게는 표시되지 않으므로 "사용자 로그인 블록"의 의미가 명확하지 않습니다. 로그인 한 사용자는 로그 아웃 할 링크를보고 제거하는 경우 로그 아웃 할 수 없습니다 (좋은 생각은 아닙니다). – kiamlaluno

답변

2

또한 $user 배열의 uid는 실제로 문자열입니다. 그래서 당신이 그것을 줄 때 === 그것은 유형을 비교하려고 시도합니다.

당신은 또한

!in_array('authenticated user', array_values($user->roles)) 자신의 사용자 역할을 확인하는 시도 할 수 있습니다 : 당신은 $user->uid==="1" 또는

$user->uid==1가 편집 할 수있는 중.

나는 그것이 당신이 원하는 논리라고 생각합니다. 나는 당신이 로그인 블록에 대한 표준 행동 이외의 것을 정의하고 있는지 확신하지 못한다. 누군가 로그인하지 않았을 때만 나타난다. 그것이 정상적인 것과 어떻게 다른가요?

+0

글쎄, 그렇다면 항상 사용자와 상관없이 거짓말을해야합니다. 그러나 그것은 사실이 아닙니다! 어쨌든, 나는 그것을 시도했다; 불운. –

+0

제 잘못입니다. :(나는 '사용자 로그인'과 '네비게이션'블록이 동일하다고 상상 했었습니다! 네비게이션이 관리자 사용자에게만 보이고 다른 사람들에게는 보이지 않기를 바랍니다. 그래서 '내비게이션'블록 가시성을위한 코드를 움직이면 작동합니다. 감사합니다. ! –

0
<?php 
global $user; 

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

트릭을 수행합니다.

확실하지 않은 경우 항상 간단한 에코를 수행하고 블록을 표시하십시오. 예를 들면 다음과 같습니다.

<?php 
global $user; 

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