如何根据用户角色权重对视图结果进行排序?

时间:2014-03-21 12:57:42

标签: sorting drupal view drupal-7

有没有办法根据用户角色的权重对视图结果进行asc / desc排序。我们尝试使用php代码作为排序标准。我们将用户角色的权重作为输出返回,但订单未按预期更改。

1 个答案:

答案 0 :(得分:3)

以下的php函数.....实际上我只是把它作为一个函数,因为它更整洁,我需要在多个视图中使用它,但你可以直接在你的视图中使用这个代码。理想情况下,这可能应该在一个模块中。

function get_role_weight($userId){

  $users = user_load($userId);
  $userRole = $users->roles;
  $arr = Array();

  foreach($userRole as $row){
    $roleID = user_role_load_by_name($row)->rid;
    $role = user_role_load($roleID);
    $arr[] = $role->weight;
  }

  sort($arr);

  return $arr[0];
}

如何完成

  1. 将新的“Global:PHP”字段添加到字段列表
  2. 从显示中排除这个新字段 - 我们不想显示它只是稍后用于订购
  3. 将此代码放入“值代码:”字段:return get_role_weight($data->uid);

  4. 将以下代码放入“输出代码:”字段<?php print $value; ?>

  5. 最后,您需要做的是在排序条件中添加一个新的“Global:PHP”字段并使其按“升序”排序,然后在“排序代码:”字段中使用以下代码:{{1 }}