如何检查当前页面是否在 Drupal 的管理部分?我想在主菜单的某些页面上显示登录表单,但登录页面显示在块选择菜单中。请提供解决方案。
如何检查当前页面是否在 Drupal 的管理部分?我想在主菜单的某些页面上显示登录表单,但登录页面显示在块选择菜单中。请提供解决方案。
对于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中单击不同主题的设置(次行)。你就会明白我的意思。
针对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
}
对于第一个问题,上述解决方案必须要做...至于第二个问题,似乎您想将登录块添加到页面中心(即主内容)并且仅在某些页面上这样做。如果是这种情况,您需要转到块配置页面,并将“用户登录”块设置为页面上所需的位置,然后单击保存。然后再次单击块旁边的配置,您将获得配置设置的选项,例如“在哪些页面上显示此块”等等。