强制页面以管理主题呈现(覆盖模式)


13

有没有一种方法可以强制页面以admin主题呈现,例如页面路径以“ admin /”开头的页面?

Answers:


4

有一个的contrib模块ThemeKey

允许您定义简单或复杂的主题切换规则,这些规则允许根据当前路径,分类术语,语言,节点类型以及许多其他属性来自动选择主题。还可以轻松扩展它以支持其他模块公开的其他属性。结合Drupal的主题继承和ThemeKey属性,您可以轻松实现以下功能:

个性化的频道,首页/“启动画面”屏幕,日期/时间选择的圣诞节主题移动主题(针对不同的自动检测到的移动设备),“受限”或“旧”浏览器内容,用户或角色特定主题的特殊主题指示您的环境(生产,暂存,测试,沙箱等)在实时服务器上安全地测试重新设计

在这里也检查相关问题。


14

您也可以通过创建自定义模块来执行此操作。

方法1

如果要基于Drupal的内部路径(即路径源)为现有页面设置主题,请使用此样式。本示例使用hook_custom_theme

<?php
function MYMODULE_custom_theme() {
  // match node/1
  if (arg(0) == 'node' && arg(1) == '1') {
    return variable_get('admin_theme');
  }
}

方法2

如果要基于URL路径(也称为路径别名)为现有页面设置主题,请使用此选项。此示例还使用hook_custom_theme

<?php
function MYMODULE_custom_theme() {
  // get arguments
  $arg = explode('/', substr(request_uri(), strlen(base_path())));
  // match {wildcard}/path 
  // Using strpos as $arg[1] may end up having stuff like so ?order=title&sort=asc
  if (isset($arg[1]) && strpos($arg[1], 'path') !== false && !isset($arg[2])) {
    return variable_get('admin_theme');
  }
}

方法3

如果要主题化和创建页面,请使用此选项。本示例使用hook_menu。要了解更多信息,请查看关于hook_menu的一篇很棒的文章

<?php
function MYMODULE_menu() {
  $items = array();

  // match some/path
  $output['some/path'] = array(
    'title' => t('Page Title'),
    'page callback' => 'MYMODULE_page',
    'theme callback' => 'variable_get',
    'theme arguments' => array('admin_theme'),
  )
}

function MYMODULE_page() {
  return 'Hello world.';
}


4

只需为页面提供一个以admin开头的路径:“ admin / mypage”


1
为什么要下票?此功能在D7核心中,问题未指定是哪个版本,但在发布海报时,问题D7已发布。
MediaFormat

是的,IMO非常感人。
2014年

2
以'admin /'开头的自定义页面似乎不一定加载admin主题。
DrCord

完美而简单的视图!
Patoshiパトシ

这是行不通的。
Christia

1
  1. 此功能现在在D7核心中。

  2. 有一个模块可以有效地向用户界面公开“ hook_admin_paths”:https ://drupal.org/project/admin_theme

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.