不活动的任务标签有什么办法,以显示本地任务的用户,如果他们不具备必要的权限?现在看来,Drupal只是将它们排除在页面代码之外。我想向他们展示,但使用不同的CSS类。如何显示在Drupal
的Drupal的版本是5.20
不活动的任务标签有什么办法,以显示本地任务的用户,如果他们不具备必要的权限?现在看来,Drupal只是将它们排除在页面代码之外。我想向他们展示,但使用不同的CSS类。如何显示在Drupal
的Drupal的版本是5.20
即使有相关的Drupal 5和6之间的本地任务的建筑一定的差异,Mac是正确的逻辑忽略条目不被当前用户访问是相当深深嵌入menu.inc功能。如果你想寻找自己,从theme_menu_local_tasks()
开始,并从那里进行功能调用。
如果我不得不实现你要找的功能,我宁愿避免乱搞直接菜单访问设置了Mac建议。相反,我会用定制版本覆盖theme_menu_local_tasks()
,并在那里复制条目检索逻辑。第一次运行会像以前一样获取主要和次要链接,第二次将执行相同的操作,而impersonating another user(在这种情况下可能是用户1)。这样,我会得到两个版本的本地任务标记,然后我需要以某种方式进行区分以找到当前用户不允许的标记,因此需要额外的CSS类。
请注意,这样做仍然有点难看,因为menu_primary_local_tasks()
和menu_secondary_local_tasks()
已经返回主题列表,所以比较需要在标记上工作,可能会以某种方式解析li标签。因此,花费一些时间尝试做同样的事情(获取两个不同用户的本地任务)可能是值得的,但在主题化之前使用较低级别的函数获取条目。
注意:如果你最终使用user impersonation logic,请务必使用模拟过程中禁用会话储蓄的安全,第二个版本。
我知道D6版hook_menu比D5的要好得多。但是 - 您无法覆盖该行为,因为它在menu.inc中进行了硬编码。
如果我有什么上面,一个解决办法(相当不雅,我必须承认)右可能是:
如前所述,我不太了解D5,所以它可能也会证明你可以用更简洁的方式实现你想要的东西!
+1 - 我会用另一种方法(如在一个单独的答案提出的),只是为了防止需要添加访问检查所有受影响的菜单回调,这将是繁琐的维护。但是这个版本是一个有效的选择,并且可以更容易/更适合于具有较少通用调整需求的情况。 – 2009-11-24 15:36:43
谢谢,就这么做。有效。用户模仿不是必需的,但是感谢链接。 – 2009-11-24 11:53:27
我也喜欢这种方法。我看到的比我之前提出的最大的优点是,这个比例更好:因为标记是由某种“差异”函数生成的,而不是通过文本内容选择菜单项,所以应用此解决方案会更快如果你需要调整的菜单数量增加。它也不依赖于js/jQuery(虽然几乎每个浏览器都支持它),这对于您的页面能够正确显示更“依赖”。 – mac 2009-11-24 15:31:36