Come sovrascrivere alcune regole CSS del tema admin? [chiuso]


20

Esiste un modo per sovrascrivere solo alcune regole CSS utilizzate dal tema admin, senza toccare il tema admin stesso (tramite alcune funzioni del tema o hook del modulo)? Ad esempio, vorrei aggiungere un text-align: rightcampo a ogni numero intero nei moduli di amministrazione (e anche nei nodi di modifica).


5
Domanda perfettamente valida che non dovrebbe essere chiusa. Spesso è necessario modificare il tema dell'amministratore (in genere Seven) in cui la creazione di un nuovo tema secondario sarebbe eccessiva.
Kari Kääriäinen,

Risposte:


15

L'ho fatto semplicemente usando:

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));
  }
}

È un po 'più leggibile per me.


1
Ha funzionato perfettamente anche per me. Soluzione pulita.
Sasha Grievus,

Esiste una versione drupal 8 di questo pratico codice?
petergus

11

Esistono diversi modi per farlo, ma non tutti gli approcci sono uguali in termini di impatto sulle prestazioni del tuo sito Web. Per esempio:

  1. Se copi il tema dell'amministratore o crei un sottotema basato sul tema dell'amministratore (nota, questo non funzionerà con Drupal Commerce, poiché ha già un sottotema basato su Shiny) - e quindi aggiungi un file CSS tramite un .info chiama , caricherai il CSS su ogni pagina.
  2. Se copi il tema admin o crei un sottotema basato sul tema admin, puoi usare l'hook drupal_add_css () nel tuo file template.php . Ciò ti consentirà di chiamare il foglio di stile in modo condizionale, su determinate pagine solo per esempio o per determinati browser. Funziona bene ma stai già chiamando più file del necessario.
  3. Crea il tuo modulo e chiama drupal_add_css () da esso. Per quanto ne so, questo è il modo "più leggero" per modificare il tema dell'amministratore senza toccare l'originale e funzionerà se il tema dell'amministratore è già un sottotema (ad esempio il tema Amministratore di Drupal Commerce Kickstart è un sottotipo di Shiny). Uso questo metodo perché funzionerà in tutte le circostanze. Vedi sotto per un esempio:

Crea una directory chiamata 'mymodule' (usa il nome che vuoi), crea questi file al suo interno e poi inseriscili nella directory siti / all / modules / custom. Ho aggiunto commenti al codice qui sotto in modo da poter vedere cosa sta succedendo.

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

mymodule.info contiene:

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

mymodule.module contiene:

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 avrà quindi i tuoi stili che vengono aggiunti al tema admin. Svuota la cache, abilita questo modulo e parti per le gare! Ulteriori informazioni su drupal_add_css qui .


2
Non è necessario per la $theme_pathvariabile se si utilizza il percorso del modulo corrente ... e CSS_THEMEnon è un peso ma un gruppo:array('group' => CSS_THEME)
MrUpsidown

Esiste una versione drupal 8 di questo pratico codice?
petergus

9

Quello che faccio è creare un sotto-tema per qualsiasi tema di amministrazione che sto usando solo con .infoun file CSS univoco (di solito chiamato overrides.css) e un template.phpfile se necessario.


2

Che dire di CSS Injector ?

Non so se consente una regola di configurazione dipendente dal tema, ma suppongo che ne consenta una basata sul percorso (quindi admin / , node / add / , node / * / edit dovrebbe fare il trucco).


Buona idea. Ho provato, ma sembra non funzionare (la regola CSS non è effettivamente salvata!). Ho anche dei dubbi sul fatto che funzionerebbe con il sistema overlay (sembra che il problema risieda nel file_unmanaged_save_data () che non salva nulla. Ma la mia installazione è piuttosto strana - una scatola di Ubuntu all'interno di una vbox di OSX).
Claudio,

Hm. Forse un bug o qualcosa del genere nella versione corrente. Penso che dovrebbe funzionare in teoria all'interno della sovrapposizione. È anche in grado di mostrare l'overlay con un tema diverso .. Potresti anche farlo in un semplice modulo personalizzato, immagino, salvare il tuo CSS in un file, implementare hook_init () e utilizzare drupal_add_css () se si applicano alcune condizioni.
Berdir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.