如果用户没有必要的权限,有没有办法向用户显示本地任务?现在看起来Drupal只是从页面代码中排除它们。我想展示它们,但是有不同的CSS类。
Drupal的版本是5.20
答案 0 :(得分:4)
尽管Drupal 5和6之间的本地任务构建存在一些差异,但Mac是正确的,忽略当前用户无法访问的条目的逻辑非常深入地嵌入在menu.inc函数中。如果您想自己寻找,请从theme_menu_local_tasks()
开始,然后按照那里的函数调用。
如果我必须实现您正在寻找的功能,我宁愿避免Macs建议直接搞乱菜单访问设置。相反,我用自定义版本覆盖theme_menu_local_tasks()
并在那里复制条目检索逻辑。第一次运行将像以前一样获取主链接和次级链接,第二次运行将在impersonating another user(在这种情况下可能是用户1)时执行相同操作。这样,我会得到两个版本的本地任务标记,然后我需要以某种方式进行区分,以便找到当前用户不允许的那些,因此需要额外的CSS类。
请注意,这仍然有点难看,因为menu_primary_local_tasks()
和menu_secondary_local_tasks()
返回已经主题的列表,因此比较需要处理标记,可能以某种方式解析li标记。因此,可能值得花一些时间尝试做同样的事情(将本地任务作为两个不同的用户获取),但使用较低级别的函数来获取主题之前的条目。
注意:如果您最终使用user impersonation logic,请务必使用安全的第二个版本,以便在模拟期间禁用会话保存。
答案 1 :(得分:3)
我知道D6版本的hook_menu比D5好多了。 AFAIK - 但是 - 您无法覆盖该行为,因为它在menu.inc中已经过硬编码。
如果我是正确的以上的内容,一个解决方法(相当不优雅,我必须承认)可能是:
如前所述,我不太了解D5,所以也可能会以更清洁的方式实现您想要的目标!