So gestalten Sie die GLPI-Anmeldeseite mit CSS pro Einheit

Passen Sie die Anmeldeseite von GLPI mit dem nativen CSS pro Einheit an, ohne den Core zu bearbeiten oder ein Theme-Plugin zu installieren. Hier sehen Sie, wo die realen Felder liegen (enable_custom_css und custom_css_code), wie Sie über die Tabler-Tokens von GLPI 11 umfärben, warum Farben !important erfordern und welche Vererbungsfalle das Theme der Anmeldeseite verschwinden lässt, wenn Sie es in der falschen Einheit anwenden.

In diesem Artikel7 Abschnitte

Die Anmeldeseite von GLPI anzupassen, ist die häufigste Branding-Anfrage, die wir im Betrieb erhalten - und fast alle fangen falsch an, indem sie den Core bearbeiten oder ein Theme-Plugin installieren. Der saubere Weg existiert in GLPI bereits: CSS pro Einheit, ein natives Feld, welches Upgrades übersteht und ein Rollback in Sekunden erlaubt. Diese Anleitung zeigt, wo die realen Felder liegen (enable_custom_css und custom_css_code), warum Farben ohne !important nicht greifen, und welche Falle der Einheitenvererbung Ihr Anmelde-Theme verschwinden lässt, obwohl Ihr CSS gespeichert ist.

Warum CSS pro Einheit (und nicht Theme-Plugin oder Core)

Core-Dateien zu bearbeiten, hilft für eine Version und bricht beim nächsten Upgrade - ein Patch geht verloren, und Sie suchen, was sich geändert hat. Ein Theme-Plugin hilft, bindet eine Optik aber an seinen Update-Zyklus und seine Kompatibilität (beim Wechsel auf GLPI 11 gehörten Themes von Drittanbietern zu den Ersten, die brachen). CSS pro Einheit ist nativ, lässt sich in Ihrem eigenen Change-Management versionieren und durch Einfügen eines vorherigen CSS rückgängig machen. Für eine visuelle Identität - Farben, Logo, Hintergrund der Anmeldeseite - bietet es mehr Kontrolle als jedes Plugin, weil Sie jeden Selektor einer Oberfläche erreichen.

AnsatzÜbersteht UpgradesRollbackGeltungsbereich
Core bearbeiten (CSS/SCSS)Nein (Patch geht verloren)Manuell und riskantGlobal
Theme-PluginHängt vom Plugin abPlugin deinstallierenGlobal
CSS pro Einheit (nativ)JaVorheriges CSS einfügen und speichernPro Einheit, mit Vererbung

Wo Sie es in GLPI konfigurieren

Öffnen Sie ein Einheitenformular unter Verwaltung > Einheiten > [Ihre Einheit] und suchen Sie den Abschnitt zur Anpassung der Oberfläche. Zwei Felder sind wichtig:

  • Enable CSS customization (enable_custom_css) - das Auswahlfeld mit Vererbung (vom übergeordneten Element erben, oder Sie erzwingen aktiviert/deaktiviert in einer aktuellen Einheit).
  • Benutzerdefiniertes CSS (custom_css_code) - der Editor, in welchen Ihr CSS eingefügt wird.

Hier liegt ein erster Haken: Solange enable_custom_css nicht aktiv ist, erscheint der Editor gesperrt mit dem Hinweis „Custom CSS is disabled“, und nichts wird angewendet - Sie fügen Ihr CSS ein, speichern, laden neu, und „es funktioniert nicht“. Aktivieren Sie zuerst das Auswahlfeld. Speichern Sie und laden Sie die Anmeldeseite neu, um zu prüfen.

Fertiges CSS: Anmeldeseite in Markenfarben

Das Frontend von GLPI 11 nutzt Tabler (auf Bootstrap 5), daher färben Sie am saubersten um, indem Sie Design-Tokens --tblr-* überschreiben, statt Selektor für Selektor zu suchen. Das folgende Beispiel wendet eine Markenpalette an (Rot und Gold), gestaltet einen Hintergrund und deckt verschiedene Body-Klassen ab, die die Anmeldeseite zwischen GLPI 10 und 11 verwendet:

/* Login por marca - colar em custom_css_code da entidade.
   GLPI 11 usa Tabler: sobrescreva os tokens --tblr-* para a cor primaria. */
:root {
  --brand-500: #b11123;
  --brand-700: #7f0e18;
  --brand-gold: #d4a017;
  --tblr-primary: var(--brand-500);
  --tblr-primary-rgb: 177, 17, 35;
}

/* A tela de login muda de classe de body entre versoes - cubra as duas. */
body.page-login,
body.welcome-anonymous,
body[class*="login"] {
  min-height: 100vh;
  background-color: #140104 !important;
  background-image:
    linear-gradient(145deg, rgba(16,0,0,.74) 2%, rgba(127,14,24,.56) 60%, rgba(212,160,23,.34) 100%),
    url("/front/logos/login-bg.jpg") !important; /* hospede local, evite URL externo */
  background-size: cover !important;
  background-position: center !important;
  background-attachment: fixed !important;
}

/* Cores do GLPI vencem por especificidade: precisa de !important. */
body[class*="login"] .btn-primary {
  border: 1px solid var(--brand-gold) !important;
  background: linear-gradient(180deg, var(--brand-500), var(--brand-700)) !important;
  color: #fff !important;
}

/* O rodape do login e .copyright (nao um id/classe obvia). */
body[class*="login"] .copyright { color: #fff6da !important; }

/* fixed pesa em mobile: troque por scroll no telefone. */
@media (max-width: 767.98px) {
  body[class*="login"] { background-attachment: scroll !important; }
}

Die Vererbungsfalle: warum die Anmeldeseite kein Theme hat

Hier kommt ein Detail, welches erst im Betrieb sichtbar wird: Die Anmeldeseite läuft vor jeder Authentifizierung, es gibt in diesem Moment also keine aktive Einheit. GLPI bestimmt eine Optik vor dem Login über die Stamm-Einheit (id 0). Wenn Sie Ihr CSS in einer untergeordneten Einheit angewendet haben - etwa jener eines Kunden -, trägt ein internes Dashboard zwar die Marke, aber die Anmeldeseite bleibt im Standard, weil sie diese Einheit nie „betritt“. Unsere Praxisregel: Ein Anmelde-Theme gehört in die Stamm-Einheit; eine Kundenanpassung, die erst nach dem Login sichtbar sein muss, kann in einer untergeordneten Einheit liegen und nach unten vererbt werden. Weil das Feld Vererbung hat, gilt, was Sie in der Stamm-Einheit setzen, für alle untergeordneten Einheiten, sofern keine davon es überschreibt.

Checkliste für Produktion

  1. Versionieren Sie ein vorheriges CSS vor jeder Änderung (speichern Sie den Feldinhalt).
  2. Wenden Sie ein Anmelde-Theme in der Stamm-Einheit an; Anpassungen nach dem Login können in einer untergeordneten Einheit liegen.
  3. Aktivieren Sie enable_custom_css vor dem Einfügen - sonst bleibt der Editor gesperrt.
  4. Hosten Sie ein Hintergrundbild lokal (ein Dokument in GLPI oder eine vom eigenen Host ausgelieferte Datei); eine externe URL bricht durch CSP, Mixed Content oder Nichtverfügbarkeit.
  5. Testen Sie mit Techniker- und Anforderer-Profil, auf Desktop und mobil.
  6. Prüfen Sie den Kontrast von Formular und Schaltfläche (Barrierefreiheit); halten Sie ein Rollback bereit.

Fallen aus der Praxis

Drei Dinge haben uns bei Kunden Zeit gekostet und sind zu einer internen FAQ geworden. Erstens: Farben ohne !important greifen nicht - ein Stylesheet von Tabler lädt mit hoher Spezifität, und Ihr Override muss gewinnen. Zweitens: Hintergrundbilder über externe URL sind fragil; in einer Umgebung mit restriktiver Content-Security-Policy oder ohne Internetzugang lädt ein Hintergrund schlicht nicht, und die Anmeldeseite bleibt schwarz - hosten Sie eine Datei auf dem eigenen Server. Drittens: Verwechseln Sie die Anpassung pro Einheit nicht mit dem globalen CSS von GLPI (Einstellungen > Allgemein); beide existieren, und sie zu vermischen, führt zu Kopfschmerzen bei der Rangfolge. Dokumentieren Sie, welche Ebene welche Regel lädt.

Nächster Schritt

Markenstandardisierung in GLPI ist Routine in unserem Betrieb - von einer Anmeldeseite bis zum internen Theme, mit kontrolliertem Rollback. Wenn Sie eine Umgebung Ihres Kunden mit der richtigen Identität ausstatten möchten, ohne den Core anzufassen, sprechen Sie mit unserem Team.


Geprüft vom Team von NexTool Solutions.

Häufig gestellte Fragen

GLPI hat ein natives Feld für CSS pro Einheit. Aktivieren Sie unter Verwaltung > Einheiten > [Einheit] die Option „Enable CSS customization“ (enable_custom_css) und fügen Sie Ihr CSS in den Editor custom_css_code ein. Sie müssen weder den Core bearbeiten noch ein Theme-Plugin installieren. Für die Anmeldeseite wenden Sie Ihr CSS in der Stamm-Einheit an, weil die Anmeldeseite läuft, bevor es eine aktive Einheit gibt.

Nein. CSS pro Einheit ist in GLPI 10 und 11 nativ. Es ist robuster als ein Theme-Plugin, weil es Upgrades übersteht, ein Rollback durch Einfügen eines vorherigen CSS erlaubt und jeden Selektor einer Oberfläche erreicht, ohne vom Update-Zyklus eines Drittanbieter-Plugins abzuhängen.

Drei häufige Ursachen: Das Feld enable_custom_css wurde nicht aktiviert (der Editor bleibt mit „Custom CSS is disabled“ gesperrt); Ihr CSS wurde in einer untergeordneten Einheit angewendet, aber die Anmeldeseite läuft ohne aktive Einheit und verwendet die Stamm-Einheit; oder Farbregeln haben kein !important und verlieren gegen ein Stylesheet von Tabler. Aktivieren Sie das Auswahlfeld, verwenden Sie die Stamm-Einheit und ergänzen Sie !important.

Ja. Die Felder enable_custom_css und custom_css_code gibt es in GLPI 10 und 11. In GLPI 11 nutzt das Frontend Tabler auf Bootstrap 5, daher färben Sie am saubersten um, indem Sie Tokens --tblr-* (wie --tblr-primary) überschreiben, statt Selektoren einzeln zu suchen.

Ja, über background-image im CSS einer Einheit. Hosten Sie ein Bild aber lokal (ein Dokument in GLPI oder eine Datei auf dem eigenen Host); eine externe URL ist fragil und kann durch Content-Security-Policy, Mixed Content oder fehlenden Internetzugang blockiert werden, wodurch die Anmeldeseite ohne Hintergrund bleibt.

Ja. Das Feld enable_custom_css hat Vererbung: Was Sie in der Stamm-Einheit festlegen, gilt für alle untergeordneten Einheiten, sofern keine davon es überschreibt. Deshalb gehört ein Anmelde-Theme in die Stamm-Einheit (damit es vor dem Login gilt), und eine Kundenanpassung kann in einer untergeordneten Einheit liegen, angewendet nach der Authentifizierung.

Brauchen Sie Hilfe?