it-swarm.com.de

Wie überschreibe ich einige CSS-Regeln für Admin-Themen?

Gibt es eine Möglichkeit, nur einige vom Admin-Theme verwendete CSS-Regeln zu überschreiben, ohne das Admin-Theme selbst zu berühren (über einige Theme-Funktionen oder Modul-Hooks)? Zum Beispiel möchte ich jedem Ganzzahlfeld in Administrationsformularen (und auch in Bearbeitungsknoten) ein text-align: right Hinzufügen.

20
Claudio

Ich habe es nur gemacht mit:

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

Das ist für mich etwas lesbarer.

15
Sebastian

Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber nicht alle Ansätze sind gleich, was die Leistung Ihrer Website betrifft. Zum Beispiel:

  1. Wenn Sie das Admin-Thema kopieren oder ein Unterthema erstellen, das auf dem Admin-Thema basiert (Hinweis: Dies funktioniert nicht mit Drupal Commerce, da bereits ein Unterthema auf Shiny basiert) - und Dann fügen Sie eine CSS-Datei über einen .info-Aufruf hinzu . Sie laden das CSS auf jeder Seite.
  2. Wenn Sie das Admin-Thema kopieren oder ein Unterthema basierend auf dem Admin-Thema erstellen, können Sie den Hook drupal_add_css () in Ihrer template.php-Datei verwenden . . Auf diese Weise können Sie das Stylesheet bedingt aufrufen, beispielsweise nur auf bestimmten Seiten oder für bestimmte Browser. Dies funktioniert in Ordnung, aber Sie rufen bereits mehr Dateien als nötig auf.
  3. Erstellen Sie Ihr eigenes Modul und rufen Sie drupal_add_css () auf. Soweit ich weiß, ist dies die "leichteste" Möglichkeit, das Admin-Thema zu ändern, ohne das Original zu berühren. Sie funktioniert, wenn Ihr Admin-Thema bereits ein Unterthema ist (z. B. Drupal Commerce Kickstart Admin) Thema ist ein Unterthema von Shiny). Ich verwende diese Methode, weil sie unter allen Umständen funktioniert. Ein Beispiel finden Sie unten:

Erstellen Sie ein Verzeichnis mit dem Namen 'mymodule' (verwenden Sie einen beliebigen Namen), erstellen Sie diese Dateien darin und platzieren Sie es dann in Ihrem Verzeichnis sites/all/modules/custom. Ich habe dem folgenden Code Kommentare hinzugefügt, damit Sie sehen können, was passiert.

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

mymodule.info enthält:

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

mymodule.module enthält:

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 enthält dann Ihre Stile, die dem Admin-Thema hinzugefügt werden. Leeren Sie Ihre Caches, aktivieren Sie dieses Modul und Sie können loslegen! Erfahren Sie hier mehr über drupal_add_css .

11
PWM

Ich erstelle ein Unterthema für jedes Administrator-Thema, das ich verwende, nur mit .info, Einer eindeutigen CSS-Datei (normalerweise mit dem Namen overrides.css) Und einem template.php Datei, falls erforderlich.

9

Was ist mit CSS Injector ?

Ich weiß nicht, ob es eine themenabhängige Konfigurationsregel zulässt, aber ich gehe davon aus, dass es eine zulässt, die auf dem Pfad basiert (also admin/, node/add /, node/*/edit sollte den Trick machen).

2
Berdir