2009-11-12 6 views

Répondre

3

L'utilisateur actuel est toujours disponible en tant que variable globale, donc il suffit de faire:

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

$ user-> rôles sera un tableau de noms de rôle, les clés sont rôle id (débarrassé).


Edit: Pour être précis, l'objet global de l'utilisateur est mis à disposition au début de bootstrapping, en phase DRUPAL_BOOTSTRAP_SESSION, mais du point de codage personnalisé dans les thèmes ou modules, vous pouvez traiter que global comme toujours disponible.

+0

merci Henrik, semble bon. –

0

Juste une annexe à la réponse de Henrik Opel: si vous l'utilisez dans un fichier tpl.php, puis créer une première variable en fonction de preprocess_node:

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

Maintenant, vous pouvez imprimer vos rôles dans votre tpl .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

Cela fera


    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; 
     } 
    } 
Questions connexes