Forzar que una página se represente en tema de administrador (modo de superposición)

13

¿Hay alguna manera de forzar que una página se represente en el tema de administrador, como páginas que su ruta comienza con 'admin /'?

hpn
fuente

Respuestas:

4

Hay un módulo contrib ThemeKey que

le permite definir reglas de cambio de tema simples o sofisticadas que permiten la selección automática de un tema según la ruta actual, los términos de la taxonomía, el idioma, el tipo de nodo y muchas, muchas otras propiedades. También se puede ampliar fácilmente para admitir propiedades adicionales expuestas por otros módulos. En combinación con la herencia de temas de Drupal y las Propiedades de ThemeKey, puede lograr fácilmente características como:

canales de estilo individual una pantalla de portada / "bienvenida" un tema móvil de tema de Navidad seleccionado por fecha / hora para diferentes dispositivos móviles autodetectados temas especiales para navegadores de contenido "limitado" o "antiguo", usuario o temas específicos de roles indicando su entorno (producción, puesta en escena, pruebas, sandbox, ...) probando su rediseño de forma segura en un servidor en vivo

Verifique también la pregunta relacionada aquí .

Refineo
fuente
14

También puede hacer esto haciendo un módulo personalizado.

Método 1

Úselo si desea crear un tema para una página existente, basada en la ruta interna de Drupal (también conocida como fuente de ruta). Este ejemplo usa hook_custom_theme .

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

Método 2

Use esto si desea crear un tema para una página existente, en función de la ruta URL (también conocido como alias de ruta). Este ejemplo también usa 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');
  }
}

Método 3

Úselo si desea crear un tema y crear una página. Este ejemplo usa hook_menu . Para obtener más información, eche un vistazo a otro excelente artículo sobre 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.';
}
timofey.com
fuente
7

Si es un desarrollador de módulos, puede usar hook_admin_paths para definir qué rutas se deben representar con el tema de administración.

Daniel
fuente
4

Simplemente dale a la página una ruta que comience con admin: 'admin / mypage'

MediaFormat
fuente
1
¿Por qué el voto negativo? Esta funcionalidad está en el núcleo D7, la pregunta no especifica qué versión, pero en el momento de los pósters se lanzó la pregunta D7.
MediaFormat
Sí, comentario perfectamente sensato OMI.
Countzero
2
no parece que las páginas personalizadas que comienzan con 'admin /' carguen necesariamente el tema admin.
DrCord
¡Perfecto y simplista para las vistas!
Patoshi パ ト シ
Esto no funciona.
Christia