2012-10-18 54 views

回答

2

使用以下函数获取给定用户标识的用户组标题。

 function getGroupTitles($id) 
     { 
      $db = JFactory::getDbo(); 
      $query = $db->getQuery(true); 
      $query 
      ->select('title')->from('#__usergroups') 
      ->where('id IN (' . implode(',', array_values(JFactory::getUser($id)->groups)) . ')'); 
      $db->setQuery($query); 
      return $db->loadColumn(); 
     } 

例如:print_r(getGroupTitles(427)); 将输出一个类似于此的数组: Array([0] => Registered [1] => Author)

0

您可以通过以下自定义功能找到用户组名称。

function getUserGroups($gid) 
    { 
     // Initialise variables. 
     $db  = JFactory::getDBO(); 
     $query = $db->getQuery(true) 
      ->select('a.title AS text') 
      ->from('#__usergroups AS a') 
      ->where('a.id='.$gid) 
      ->group('a.id') 
      ->order('a.lft ASC'); 

     $db->setQuery($query); 
     $options = $db->loadObjectList(); 

     return $options; 
    } 

只需调用这个函数和函数传递groups例如

$user =& JFactory::getUser(48); 
$usergroupname = getUserGroups($user->groups[8]); 
0

我觉得这个代码将帮助你。

如果您需要通过函数参数传递值,您可以更改代码。我列出了查询和结果。

<?php 

    $user = JFactory::getUser(); 

    $db  = JFactory::getDBO(); 
    $query = $db->getQuery(true); 
    $query->select('s.title AS group_name'); 
    $query->from('#__user_usergroup_map AS c'); 
    $query->join('LEFT', '#__usergroups AS s ON s.id = c.group_id'); 
    $query->where('c.user_id = '.$user->id); 
    $db->setQuery($query); 
    $group_name = $db->loadResult(); 

    echo $group_name; 
?> 
+0

这几乎可行 - 但只有echo是第一组,而不是全部 – RozzA

相关问题