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