Comment remplacer certaines règles CSS du thème administrateur? [fermé]

20

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).

Claudio
la source
5
Question parfaitement valide qui ne doit pas être fermée. Il est souvent nécessaire de modifier le thème d'administration (généralement Seven) où la création d'un nouveau sous-thème serait exagérée.
Kari Kääriäinen

Réponses:

15

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.

Sébastien
la source
1
A parfaitement fonctionné pour moi aussi. Solution propre.
Sasha Grievus
Existe-t-il une version drupal 8 de ce code pratique?
petergus
11

Il existe plusieurs façons de procéder, 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) - puis ajoutez un fichier css via un .info appel , vous chargerez le CSS sur chaque page.
  2. Si vous copiez le thème admin ou créez un sous-thème basé sur le thème admin, vous pouvez utiliser le hook drupal_add_css () dans votre fichier template.php . Cela vous permettra d'appeler la feuille de style de façon 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, le thème Administrateur Drupal Commerce Kickstart 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 .

PWM
la source
2
Pas besoin de la $theme_pathvariable si vous utilisez le chemin du module actuel ... et CSS_THEMEn'est pas un poids mais un groupe:array('group' => CSS_THEME)
MrUpsidown
Existe-t-il une version drupal 8 de ce code pratique?
petergus
9

Ce que je fais est de 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.phpfichier si nécessaire.

Brian Altenhofel
la source
2

Qu'en est-il de l' injecteur CSS ?

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).

Berdir
la source
Bonne idée. Je l'ai essayé, mais cela ne semble pas fonctionner (la règle CSS n'est pas réellement enregistrée!). J'ai également des doutes sur le fait que cela fonctionnerait avec le système de superposition (il semble que le problème réside dans file_unmanaged_save_data () sans rien enregistrer. Mais ma configuration est un peu bizarre - une boîte Ubuntu dans une vbox OSX).
Claudio
Hm. Peut-être un bug ou quelque chose comme ça dans la version actuelle. Je pense que cela devrait fonctionner en théorie à l'intérieur de la superposition. Il est également capable d'afficher la superposition avec un thème différent .. Vous pouvez également le faire dans un module personnalisé simple, je suppose, enregistrez votre CSS dans un fichier, implémentez hook_init () et utilisez drupal_add_css () si certaines conditions s'appliquent.
Berdir