因此,我希望根据该用户的其他用户角色,在用户角色的欢迎页面上出现一个特定链接(由规则引导)。每个用户可能有多个这样的链接。
例如:
假设用户 Bob 具有经理、植物学培训师和驯狮师的用户角色。他的经理用户角色会将他引导到经理欢迎页面(已经完成),但是,根据他的用户角色,经理欢迎页面还将包含指向植物学培训页面和驯狮页面的链接。
我该怎么做呢?我也会为此使用规则模块吗?
这是在 Drupal 6 中
因此,我希望根据该用户的其他用户角色,在用户角色的欢迎页面上出现一个特定链接(由规则引导)。每个用户可能有多个这样的链接。
例如:
假设用户 Bob 具有经理、植物学培训师和驯狮师的用户角色。他的经理用户角色会将他引导到经理欢迎页面(已经完成),但是,根据他的用户角色,经理欢迎页面还将包含指向植物学培训页面和驯狮页面的链接。
我该怎么做呢?我也会为此使用规则模块吗?
这是在 Drupal 6 中
一些想法供您开始。如果您使用 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。
如果块是视图,您可以在视图 UI 中设置访问权限。
user_access()函数是我个人最喜欢在这种情况下显示块的方法。它使您可以放置几乎独立于角色的块。如果用户有权限,显示它。无需假设特定角色具有此权限。
此外,除非您被模块覆盖,否则如果用户无权访问该页面,则不会出现块。例如,在没有访问限制的 node/*/edit 页面上显示节点编辑指令块是安全的(在这种情况下使用块是非常愚蠢的,因为您可以输入提交指令 - 仅用于示例)。必须允许用户访问该页面才能显示块。