12

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

4

5 回答 5

37

For Drupal 7 you can use path_is_admin() .

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

For Drupal 8 isAdminRoute()

$is_admin = \Drupal::service('router.admin_context')->isAdminRoute();
if ($is_admin) {
  // Do stuff.
}
于 2013-01-04T11:09:50.130 回答
7

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

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

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

于 2010-12-19T17:41:29.993 回答
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 中单击不同主题的设置(第二行)。你会明白我的意思。

于 2010-12-23T23:38:45.277 回答
0

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

于 2010-12-29T21:06:11.010 回答
0

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

$arg = arg(); 
$isAdminPage = ($arg[0] == 'admin' || $arg[2] == 'edit' || $arg[0] == 'user' || $arg[2] == 'workflow' || $arg[2] == 'statistics');  
if ($isAdminPage) { 
  // do admin stuff
}
于 2014-05-05T19:49:05.580 回答