如何检查用户是否在drupal的管理部分?

时间:2010-12-19 13:48:41

标签: drupal drupal-modules drupal-theming

如何检查当前页面是否在drupal的admin部分?我想在主菜单的某些页面中显示登录表单,但是登录页面会显示在块选择菜单中。请提供解决方案..

5 个答案:

答案 0 :(得分:34)

对于Drupal 7,您可以使用path_is_admin()

if (path_is_admin(current_path())) {
  // Do stuff.
}

Drupal 8 isAdminRoute()

$is_admin = \Drupal::service('router.admin_context')->isAdminRoute();
if ($is_admin) {
  // Do stuff.
}

答案 1 :(得分:7)

我不完全理解你的最终目标,但这里有两个问题的答案:

1)if (arg(0) == 'admin') { ... }将指示是否有人在管理部分,因为整个管理部分的路径前缀为admin /

2)在admin / settings / admin / theme,您可以为管理部分选择一个单独的主题,然后您将知道有人在加载该主题而不是主题时处于管理员。

答案 2 :(得分:2)

我不确定你的最终目标是什么。更多解释?

如果你正在检查路径,Scott Reynen的#1应该可以解决问题。

Drupal 6还有一个默认变量$ is_admin。如果当前用户具有管理员访问权限,则此选项为TRUE。检查此变量可能会有所帮助。有关详细信息,请参阅此处:http://api.drupal.org/api/drupal/modules--system--page.tpl.php/6

对于您的后续问题,前端主题始终显示在admin / build / block中。这是正确的预期行为,因为当您移动块并将它们分配给主题部分时,您需要知道它们在您正在配置的主题中的位置。如果您启用了多个主题,请尝试在admin / build / block时单击其他主题的设置(辅助行)。你会明白我的意思。

答案 3 :(得分:0)

对于第一个问题,上面的解决方案必须做....进入第二个问题,似乎你想要将登录块添加到页面的中心(即主要内容),这也只是在一些页面..如果是这种情况,您需要转到块配置页面并将“用户登录”块设置到页面上的所需位置,然后单击保存。然后再次单击块旁边的configure,您将获得配置设置的选项,例如“必须在哪个页面上显示此块”..等等..等等。

答案 4 :(得分:0)

对于Drupal 6: @timmy和@Scott Reynen - arg(0)和substr($ _ GET [' q'],0,5)等于' admin'会错过一些模式。以下代码会获取我网站上的所有管理页面网址,您的网站可能会有更多或更少。

$arg = arg(); 
$isAdminPage = ($arg[0] == 'admin' || $arg[2] == 'edit' || $arg[0] == 'user' || $arg[2] == 'workflow' || $arg[2] == 'statistics');  
if ($isAdminPage) { 
  // do admin stuff
}