Erzwinge das Rendern einer Seite im Admin-Design (Overlay-Modus)

13

Gibt es eine Möglichkeit, das Rendern einer Seite im Admin-Design zu erzwingen? Wie Seiten, deren Pfad mit "admin /" beginnt?

hpn
quelle

Antworten:

4

Es gibt ein Contrib-Modul ThemeKey , das

Mit dieser Option können Sie einfache oder ausgefeilte Regeln für den Themenwechsel definieren, die die automatische Auswahl eines Themas abhängig vom aktuellen Pfad, Taxonomiebegriffen, der Sprache, dem Knotentyp und vielen, vielen anderen Eigenschaften ermöglichen. Es kann auch problemlos erweitert werden, um zusätzliche Eigenschaften zu unterstützen, die von anderen Modulen verfügbar gemacht werden. In Kombination mit der Theme-Vererbung von Drupal und den ThemeKey-Eigenschaften können Sie auf einfache Weise folgende Funktionen erzielen:

Individuell gestaltete Kanäle Eine Startseite / ein Begrüßungsbildschirm Ein Datum / eine Uhrzeit ausgewähltes Weihnachtsthema Mobile Themen für verschiedene automatisch erkannte Mobilgeräte Spezielle Themen für Inhalte, Benutzer oder rollenbezogene Themen von "eingeschränkten" oder "alten" Browsern Angabe Ihrer Umgebung (Produktion, Staging, Test, Sandbox, ...) Testen Sie Ihr Redesign sicher auf einem Live-Server

Überprüfen Sie auch verwandte Frage hier .

Refineo
quelle
14

Sie können dies auch tun, indem Sie ein benutzerdefiniertes Modul erstellen.

Methode 1

Verwenden Sie diese Option, wenn Sie eine vorhandene Seite basierend auf dem internen Pfad von Drupal (auch als Pfadquelle bezeichnet) thematisieren möchten. In diesem Beispiel wird hook_custom_theme verwendet .

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

Methode 2

Verwenden Sie diese Option, wenn Sie eine vorhandene Seite basierend auf dem URL-Pfad (auch als Pfadalias bezeichnet) thematisieren möchten. In diesem Beispiel wird auch hook_custom_theme verwendet .

<?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');
  }
}

Methode 3

Verwenden Sie diese Option, wenn Sie ein Thema erstellen und eine Seite erstellen möchten. In diesem Beispiel wird hook_menu verwendet . Weitere Informationen finden Sie in einem weiteren großartigen Artikel im 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
quelle
4

Gib der Seite einfach einen Pfad, der mit admin beginnt: 'admin / mypage'

MediaFormat
quelle
1
Warum die Gegenstimme? Diese Funktionalität ist im D7-Kern, die Frage gibt nicht an, welche Version, sondern zum Zeitpunkt der Posterfrage D7 veröffentlicht wurde.
MediaFormat
Ja, perfekt sinnvoller Kommentar IMO.
Countzero
2
Benutzerdefinierte Seiten, die mit "admin /" beginnen, müssen nicht unbedingt das Admin-Design laden.
DrCord
Perfekt und einfach für Ansichten!
Patoshi パ パ シ
Das funktioniert nicht.
Christia