2012-07-18 81 views
0

因此,我希望基于该用户的其他用户角色在用户角色的欢迎页面上出现特定链接(由规则指向)。每个用户可能有多个这样的链接。如何基于用户角色创建程序化内容(Drupal)

例如:

说用户鲍伯有经理,植物学教练和驯狮的用户角色。他的经理的用户角色将引导他到经理欢迎页面(已经完成),但是,基于他的用户角色,经理欢迎页面也将链接到植物学培训页面和狮子驯服页面。

我该如何去做这件事?我会为此使用规则模块吗?

这是在Drupal 6

+1

什么类型的页面是欢迎页面? (节点/视图/面板/等) – Clive 2012-07-18 22:15:18

+0

节点,据我所知。 – 2012-07-19 01:16:13

回答

0

一些想法供你使用.. 如果您使用的面板/模块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或所有的用户界面。

如果该块是一个视图,您可以在Views UI设置访问权限。

user_access()功能是我个人最喜欢在这种情况下显示块。它可以让你放置几乎独立于角色的块。如果用户有权限,则显示它。不需要假定某个角色具有此权限。

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