Forcer le rendu d'une page dans le thème administrateur (mode superposition)

13

Existe-t-il un moyen de forcer le rendu d'une page dans le thème admin, comme les pages dont le chemin commence par «admin /»?

hpn
la source

Réponses:

4

Il y a un module contrib ThemeKey qui

vous permet de définir des règles de changement de thème simples ou sophistiquées qui permettent la sélection automatique d'un thème en fonction du chemin d'accès actuel, des termes de taxonomie, de la langue, du type de nœud et de nombreuses autres propriétés. Il peut également être facilement étendu pour prendre en charge des propriétés supplémentaires exposées par d'autres modules. En combinaison avec l'héritage de thème et les propriétés ThemeKey de Drupal, vous pouvez facilement obtenir des fonctionnalités telles que:

canaux de style individuel un écran de première page / "splash" un thème de Noël sélectionné par date / heure thèmes mobiles pour différents appareils mobiles auto-détectés thèmes spéciaux pour les navigateurs "limités" ou "anciens" contenu, utilisateur ou thèmes spécifiques au rôle indiquant votre environnement (production, staging, test, sandbox,…) test de votre refonte en toute sécurité sur un serveur live

Vérifiez également la question connexe ici .

Raffiner
la source
14

Vous pouvez également le faire en créant un module personnalisé.

Méthode 1

Utilisez-le si vous souhaitez créer un thème pour une page existante, en fonction du chemin interne de Drupal (alias source du chemin). Cet exemple utilise hook_custom_theme .

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

Méthode 2

Utilisez-le si vous souhaitez créer un thème pour une page existante, en fonction du chemin de l'URL (alias du chemin). Cet exemple utilise également 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éthode 3

Utilisez-le si vous souhaitez créer un thème et créer une page. Cet exemple utilise hook_menu . Pour en savoir plus, consultez un autre excellent article sur 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
la source
7

Si vous êtes un développeur de modules, vous pouvez utiliser hook_admin_paths pour définir les chemins à rendre avec le thème d'administration.

Daniel
la source
4

Donnez simplement à la page un chemin commençant par admin: 'admin / mypage'

MediaFormat
la source
1
Pourquoi le downvote? Cette fonctionnalité est dans le noyau D7, la question ne précise pas quelle version, mais au moment des affiches, la question D7 a été publiée.
MediaFormat
Oui, commentaire parfaitement sensé de l'OMI.
Countzero
2
il ne semble pas que les pages personnalisées commençant par 'admin /' chargent nécessairement le thème admin.
DrCord
parfait et simpliste pour les vues!
Patoshi パ ト シ
Cela ne fonctionne pas.
Christia