Gibt es eine Möglichkeit, das Rendern einer Seite im Admin-Design zu erzwingen? Wie Seiten, deren Pfad mit "admin /" beginnt?
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 .
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.';
}
Wenn Sie ein Modulentwickler sind, können Sie mit hook_admin_paths definieren, welche Pfade mit dem Verwaltungsthema gerendert werden sollen.
Diese Funktionalität ist jetzt im D7-Kern.
Es gibt ein Modul, das "hook_admin_paths" effektiv für die Benutzeroberfläche verfügbar macht: https://drupal.org/project/admin_theme
quelle