web-dev-qa-db-fra.com

Comment remplacer certaines règles CSS du thème administrateur?

Existe-t-il un moyen de remplacer uniquement certaines règles CSS utilisées par le thème administrateur, sans toucher au thème administrateur lui-même (via certaines fonctions de thème ou crochets de module)? Par exemple, je voudrais ajouter un text-align: right à chaque champ entier dans les formulaires d'administration (et dans les nœuds d'édition également).

20
Claudio

Je l'ai fait en utilisant simplement:

function mymodule_preprocess_html(&$variables) {

  global $theme;

  if ($theme === variable_get('admin_theme', 'seven')) {

    // Reference your custom stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

C'est un peu plus lisible pour moi.

15
Sebastian

Il existe plusieurs façons de le faire, mais toutes les approches ne sont pas égales en termes d'affecter les performances de votre site Web. Par exemple:

  1. Si vous copiez le thème administrateur ou créez un sous-thème basé sur le thème administrateur (notez que cela ne fonctionnera pas avec Drupal Commerce, car il a déjà un sous-thème basé sur Shiny) - et puis ajoutez un fichier css via un appel .info , vous chargerez le CSS sur chaque page.
  2. Si vous copiez le thème administrateur ou créez un sous-thème basé sur le thème administrateur, vous pouvez utiliser le hook drupal_add_css () dans votre fichier template.php . Cela vous permettra d'appeler la feuille de style de manière conditionnelle, sur certaines pages uniquement par exemple, ou pour certains navigateurs. Cela fonctionne bien, mais vous appelez déjà plus de fichiers que nécessaire.
  3. Créez votre propre module, et appelez drupal_add_css () à partir de celui-ci. Pour autant que je sache, c'est le moyen le plus léger de modifier le thème administrateur sans toucher à l'original et fonctionnera si votre thème administrateur est déjà un sous-thème (par exemple. Drupal Commerce Kickstart Admin est un sous-thème de Shiny). J'utilise cette méthode car elle fonctionnera en toutes circonstances. Voir ci-dessous pour un exemple:

Créez un répertoire appelé 'mymodule' (utilisez le nom que vous voulez), créez ces fichiers à l'intérieur, puis placez-le dans votre répertoire sites/all/modules/custom. J'ai ajouté des commentaires au code ci-dessous afin que vous puissiez voir ce qui se passe.

  • mymodule.info
  • mymodule.module
  • css/mymodule.css

mymodule.info contient:

name = mymodule
description = Custom alterations for admin pages on my website
core = 7.x

mymodule.module contient:

function mymodule_preprocess_html(&$variables) {
  // Add conditional stylesheets for admin pages on admin theme.
  if (arg(0) === "admin") {
    // Reference your current admin theme.
    $theme_path = drupal_get_path('theme', 'commerce_kickstart_admin');
    // Reference your own stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

css/mymodule.css aura alors vos styles qui seront ajoutés au thème admin. Videz vos caches, activez ce module et c'est parti pour les courses! En savoir plus sur drupal_add_css ici .

11
PWM

Ce que je fais, c'est créer un sous-thème pour le thème d'administration que j'utilise avec juste le .info, un fichier CSS unique (généralement nommé overrides.css) et un template.php fichier si nécessaire.

9
Brian Altenhofel

Qu'en est-il de CSS Injector ?

Je ne sais pas s'il autorise une règle de configuration dépendante du thème, mais je suppose qu'il en autorise une basée sur le chemin (donc admin/, node/add/, node/*/edit devrait faire l'affaire).

2
Berdir