如何根据用户角色创建程序化内容(Drupal)

时间:2012-07-18 20:41:53

标签: drupal

因此,我希望根据该用户的其他用户角色,在用户角色的欢迎页面上显示特定链接(由规则指示)。每个用户可能有多个这样的链接。

例如:

假设用户Bob拥有经理,植物学培训师和驯狮师的用户角色。他的经理的用户角色将指导他到经理欢迎页面(已经完成),但是,根据他的用户角色,经理欢迎页面还将链接到植物学培训页面和狮子驯服页面。

我该怎么做呢?我也会使用规则模块吗?

这是在Drupal 6中

1 个答案:

答案 0 :(得分:0)

很少有想法开始...... 如果使用Panels / Ctools模块,则可以使用访问规则仅向特定角色显示特定内容。这不需要任何PHP代码,所以我认为这是最好的方法,即使你知道如何在PHP中做到这一点。

当前用户的数据可用作全局变量$ user。

<?php
global $user;
if(in_array('manager', $user->roles)) {
     print 'my stuff' // print the module you want to display. Usually module_invoke() or some function call.
} elseif(in_array('trainer', $user->roles)) {
     print ''// stuff for users with the trainer role.  
}
?>

此外,通过核心功能,您可以按角色向特定用户显示块。转到配置块的链接并设置可见性。请注意,如果您使用php打印块,则不会运行任何检查。所以全是php或全UI。

如果该块是View,您可以在Views UI中设置访问权限。

在这种情况下,

user_access()函数是我个人最喜欢的显示块。它允许您放置几乎独立于角色的块。如果用户有权限,请显示它。无需假设特定角色具有此权限。

此外,除非您按模块覆盖,否则如果用户无法访问该页面,则不会显示块。 例如,显示节点编辑指令块是安全的(在这种情况下使用块是极其愚蠢的,因为您可以在没有访问限制的节点/ * /编辑页面上输入提交指令 - 仅用于示例)。必须允许用户访问该页面才能显示阻止。

相关问题