¿Cómo anular algunas reglas CSS del tema de administrador? [cerrado]

20

¿Hay alguna manera de anular solo algunas reglas CSS utilizadas por el tema de administrador, sin tocar el tema de administrador en sí (a través de algunas funciones de tema o ganchos de módulo)? Por ejemplo, me gustaría agregar un text-align: righta cada campo entero en los formularios de administración (y también en los nodos de edición).

Claudio
fuente
55
Pregunta perfectamente válida que no debe cerrarse. A menudo es necesario ajustar el tema de administración (generalmente Seven) donde crear un nuevo subtema sería excesivo.
Kari Kääriäinen

Respuestas:

15

Lo hice solo 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));
  }
}

Eso es un poco más legible para mí.

Sebastian
fuente
1
También funcionó perfectamente para mí. Solución limpia
Sasha Grievus
¿Existe una versión drupal 8 de este práctico código?
Peter
11

Hay varias formas de hacerlo, pero no todos los enfoques son iguales en términos de afectar el rendimiento de su sitio web. Por ejemplo:

  1. Si copia el tema de administrador o crea un subtema basado en el tema de administrador (tenga en cuenta que esto no funcionará con Drupal Commerce, ya que ya tiene un subtema basado en Shiny), y luego agregue un archivo CSS a través de un .info llame , cargará el CSS en cada página.
  2. Si copia el tema del administrador, o crea un subtema basado en el tema del administrador, puede usar el gancho drupal_add_css () en su archivo template.php . Esto le permitirá llamar a la hoja de estilo condicionalmente, solo en ciertas páginas, por ejemplo, o en ciertos navegadores. Esto funciona bien, pero ya está llamando más archivos de los necesarios.
  3. Cree su propio módulo y llame a drupal_add_css () desde él. Hasta donde yo sé, esta es la forma más `` ligera '' de alterar el tema de administración sin tocar el original y funcionará si su tema de administración ya es un subtema (por ejemplo, el tema de administrador Kickstart de Drupal Commerce es un subtema de Shiny). Yo uso este método porque funcionará en todas las circunstancias. Vea a continuación un ejemplo:

Cree un directorio llamado 'mymodule' (use el nombre que desee), cree estos archivos dentro de él y luego colóquelo dentro de su directorio sites / all / modules / custom. He agregado comentarios al código a continuación para que pueda ver lo que está sucediendo.

  • 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 tendrá sus estilos que se agregarán al tema de administración. ¡Limpia tus cachés, habilita este módulo y listo! Obtenga más información sobre drupal_add_css aquí .

PWM
fuente
2
No necesita la $theme_pathvariable si usa la ruta actual del módulo ... y CSS_THEMEno es un peso sino un grupo:array('group' => CSS_THEME)
MrUpsidown
¿Existe una versión drupal 8 de este práctico código?
Peter
9

Lo que hago es crear un subtema para cualquier tema de administración que esté usando con solo .infoun archivo CSS único (generalmente llamado overrides.css) y un template.phparchivo si es necesario.

Brian Altenhofel
fuente
2

¿Qué pasa con el inyector CSS ?

No sé si permite una regla de configuración dependiente del tema, pero supongo que sí permite una basada en la ruta (por lo que admin / , node / add / , node / * / edit debería ser el truco).

Berdir
fuente
Buena idea. Lo probé, pero parece que no funciona (¡la regla CSS no se guarda realmente!). También tengo dudas de que funcionaría con el sistema de superposición (parece que el problema está en file_unmanaged_save_data () sin guardar nada. Pero mi configuración es un poco extraña: un cuadro de ubuntu dentro de un vbox OSX).
Claudio
Hm. Tal vez un error o algo así en la versión actual. Creo que debería funcionar en teoría dentro de la superposición. También es capaz de mostrar la superposición con un tema diferente. Supongo que también puede hacerlo en un módulo personalizado simple, guarde su CSS en un archivo, implemente hook_init () y use drupal_add_css () si se aplican algunas condiciones.
Berdir