【发布时间】:2010-12-19 13:48:40
【问题描述】:
如何检查当前页面是否在 drupal 的管理部分?我想在主菜单的某些页面中显示登录表单,但登录页面显示在块选择菜单中。请提出解决方案..
【问题讨论】:
标签: drupal drupal-modules drupal-theming
如何检查当前页面是否在 drupal 的管理部分?我想在主菜单的某些页面中显示登录表单,但登录页面显示在块选择菜单中。请提出解决方案..
【问题讨论】:
标签: drupal drupal-modules drupal-theming
对于 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) if (arg(0) == 'admin') { ... } 将指示是否有人在管理部分,因为整个管理部分的路径都以 admin/ 为前缀
2) 在 admin/settings/admin/theme 您可以为管理部分选择一个单独的主题,然后当加载该主题而不是主主题时,您会知道有人在管理中。
【讨论】:
我也不确定您的最终目标是什么。更多解释?
如果您正在检查路径,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 中单击不同主题的设置(第二行)。你会明白我的意思。
【讨论】:
对于第一个问题,上述解决方案必须做到....来到第二个问题,您似乎想将登录块添加到页面的中心(即主要内容),而且也只能在一些页面..如果是这种情况,您需要转到块配置页面并将“用户登录”块设置到页面上所需的位置,然后单击保存。然后再次单击该块旁边的配置,您将获得配置设置的选项,例如“必须在哪些页面上显示此块”..etc..etc..
【讨论】:
对于 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
}
【讨论】: