2009-11-12 43 views

回答

3

當前用戶總是可以作爲一個全局變量,所以才這樣做:

// Make the user object available 
global $user; 
// Grab the user roles 
$roles = $user->roles; 

$用戶>角色將角色名稱的數組,按角色鍵控id(rid)。


編輯:準確地說,全球用戶對象是早期引導過程中可用,相DRUPAL_BOOTSTRAP_SESSION,但是從主題或模塊中的自定義編碼的時候,你可以把這個作爲全球始終可用。

+0

感謝亨裏克,看起來不錯。 – 2009-11-12 19:11:04

0

只是一個附錄亨裏克歐寶的回答是:

<?php 
function YOURTEMPLATE_preprocess_node(&$variables) { 
    global $user; 
    $variables['current_user_roles'] = $user->roles; 
} 
?> 

現在你可以打印你的TPL你的角色: 如果在tpl.php文件中使用它,然後在preprocess_node函數首先創建一個變量.PHP:

<?php 
if ($current_user_roles) { 
?> 
<ul class="roles"> 
<?php 
    foreach ($current_user_roles as $role) { 
    ?><li class="roles-item"><?php print $role; ?></li><?php 
    } 
?> 
</ul> 
1

這將做


    global $user; 
    $num_roles = db_fetch_object(pager_query(db_rewrite_sql('SELECT rid from {role} ORDER BY rid Desc')))->rid; // Find how many roles are there 
    for($i=0; $i < $num_roles; $i++){ 
     if(strlen($user->roles[$i]) >0){ 
     echo $user->roles[$i]; 
     $i = $num_roles; 
     } 
    }