Czy istnieje sposób na wymuszenie renderowania strony w motywie administratora, na przykład stron, których ścieżka zaczyna się od „admin /”?
Istnieje moduł Contrib ThemeKey, który
pozwala zdefiniować proste lub wyrafinowane reguły przełączania motywów, które umożliwiają automatyczny wybór motywu w zależności od bieżącej ścieżki, terminów taksonomicznych, języka, typu węzła i wielu, wielu innych właściwości. Można go również łatwo rozszerzyć, aby obsługiwał dodatkowe właściwości ujawniane przez inne moduły. W połączeniu z dziedziczeniem motywów Drupala i właściwościami ThemeKey możesz łatwo osiągnąć takie funkcje, jak:
indywidualnie zaprojektowane kanały ekran główny / ekran powitalny motywy świąteczne wybrane na datę / czas motywy mobilne dla różnych automatycznie wykrytych urządzeń mobilnych motywy specjalne dla „ograniczonej” lub „starej” zawartości przeglądarki, motywów użytkownika lub ról wskazując twoje środowisko (produkcja, przemieszczanie, testowanie, piaskownica, ...) bezpieczne testowanie twojego przeprojektowania na serwerze na żywo
Sprawdź także powiązane pytanie tutaj .
Możesz to również zrobić, tworząc niestandardowy moduł.
Metoda 1
Użyj tego, jeśli chcesz utworzyć motyw do istniejącej strony, w oparciu o wewnętrzną ścieżkę Drupala (inaczej źródło ścieżki). W tym przykładzie użyto hook_custom_theme .
<?php
function MYMODULE_custom_theme() {
// match node/1
if (arg(0) == 'node' && arg(1) == '1') {
return variable_get('admin_theme');
}
}
Metoda 2
Użyj tego, jeśli chcesz utworzyć motyw do istniejącej strony, na podstawie ścieżki URL (alias ścieżki). W tym przykładzie użyto również 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');
}
}
Metoda 3
Użyj tego, jeśli chcesz utworzyć motyw i utworzyć stronę. W tym przykładzie użyto hook_menu . Aby dowiedzieć się więcej, przejrzyj kolejny świetny artykuł na 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.';
}
Jeśli jesteś programistą modułów, możesz użyć hook_admin_paths, aby zdefiniować ścieżki, które mają być renderowane za pomocą motywu administracyjnego.
Ta funkcja jest teraz w rdzeniu D7.
Istnieje moduł, który skutecznie udostępnia „hook_admin_paths” w interfejsie użytkownika: https://drupal.org/project/admin_theme
źródło