如何检测当前查看的页面是否具有管理性?


18

如何检测该页面当前正在查看的用户是否被视为管理用户?激活管理主题时,可以识别管理页面。

就我而言,我想打印一个通知,如果满足此条件,并且用户可以“管理模块”。

Answers:


30

可以使用来完成path_is_admin(current_path())

例如,可以使用以下挂钩实现。

function mymodule_init() {
  if (user_access('administer modules') && path_is_admin(current_path())) {
      drupal_set_message(t('Message'));
  }
}

1
答案取决于OP对“行政”的定义,并且自首次提出问题以来,此定义可能已更改。有些人认为内容编辑页面是“管理员”页面,但是path_is_admin()对于诸如node / 123 / edit之类的页面将返回false。同时,此页面可能会或可能不会使用管理主题。任何页面都可能使用管理主题,而任何页面都可能不使用管理主题。OP中的当前定义是“激活管理主题时可以识别管理页面”。
arnoldbird

9

Daniel的答案对于确定当前路径是否为“管理”是正确的,但是如果您想直接检查是否使用了管理主题(您的问题似乎不太明确,可以使用) …

global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
  // …
}

…尽管如果您尝试在引导过程中过早(即在$theme定义之前)运行它,则可能会失败。


澄清了OP,因此它不针对寻找管理员主题。相反,管理主题只是管理路径的指示。
丹尼尔(Daniel)

我仍然很困惑,直到我看到这是您提出问题然后自己回答的问题之一。德普,我明白了。
加勒特·奥尔布赖特


0

要检查是否正在使用管理主题(对于Drupal 8),可以使用

$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();

获得主题名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.