Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Best Practises bestehendes Theme/CSS überschreiben

Eingetragen von verdaechtiger255 (3)
am 14.07.2016 - 20:04 Uhr in
  • Themes & Theming
  • Drupal 7.x oder neuer

Hallo zusammen,

derzeit bin ich neu in der Drupal Entwicklug und lese mich gerade in Modul und Theme Entwicklung ein.
Da ein bestehendes Theme angepasst werden soll suche ich jetzt nach einem weg ein bestehendes Themes zu erweitern.

Beim erweitern des/der Themes bin ich zu dem Entschluss gekommen, dass es am effektivsten wäre, um die Updatefähigkeit, Flexibilität und ggfs. um Troubleshooting
des Themes zu gewährleisten, CSS Änderungen in ein Modul auszulagern. Was mir auch gelungen ist.

So kann jederzeit geprüft werden ob der Fehler auf das Modul(mein CSS) zurückzuführen ist, oder ob es am Theme, bzw. möglicherweise auch an einem anderen Modul liegt.
(ich werfe jetzt mal Superfish in den Raum)

Ein paar Probleme dieser Ausführung habe ich jetzt schon mitbekommen

  • es werden auch Styles im Backend Theme überschrieben X(
  • man kann sich nicht aussuchen an welcher Stelle das Theme geladen werden soll, sodass man zumeist mit der !important Regel arbeiten muss

Jetzt meine Frage ;)
Gibt es eine Möglichkeit herauszufinden ob mein Theme gerade als Backend oder als Frontent Theme verwendet wird?
Es geht mir vorrangig um eine saubere Struktur in die HTML Tags zu bekommen(Input, H1, etc)
Oder besser wie würdet Ihr in diesem Fall vorgehen?
Den HTML Code des Entwicklers anpacken und den CSS Link zusätzlich hart in die page.tpl Codieren?

schon mal Danke vorab

Verdächtiger255

Kurze Sammlung von Informationen die mir weitergeholfen haben:
Vor-/Nachteile CSS+ Javascript in Drupal laden(Englisch)
Styles via Modul nachladen

‹ Drupal Theme von Version 6 auf 7 [gelöst]Im Theme die Ausgabe und den Look des vierten VIEWS ändern ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

zwei Grundsätze, die dir viel Ärger ersparen können

Eingetragen von ronald (3857)
am 15.07.2016 - 05:00 Uhr

ändere niemals etwas in Originaldateien - NIEMALS.

Du kannst eine Kopie von einem Theme machen, diese umbenenen, entsprechend musst du ein paar Einträge ändern, und dann kannst du dies bearbeiten.

Oder du bildest ein Subtheme von einem bestehende Theme, und schreibst nur für die Dinge, die du anders haben möchtest, eine CSS (die nennt man überschreiben, weil es praktisch den Wert überschreibt), oder eben auch ein individuelles Template.

Wie gesagt, du darfst kopieren, und Änderungen in der Kopie vornehmen.

Drupal kaskadiert - zuerst wird versucht es eine Einstellung in deinem Theme zu finden, dann wird im Basistheme deines Themes geschaut, und dann im Core.
Was zuerst gefunden wird, hat gewonnen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Lösung mit dem Subtheme,

Eingetragen von montviso (2188)
am 15.07.2016 - 06:03 Uhr

Die Lösung mit dem Subtheme, die Ronald nennt, ist besser als ein Modul.
Welches Theme verwendest Du?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Theme der Wahl ist das Bootstrap Business Theme

Eingetragen von verdaechtiger255 (3)
am 16.07.2016 - 12:45 Uhr

Der Hauptgrund für mich war ein Theme zu finden das wirklich responsive war und, meinen (XD) Ansprüchen standhalten konnte.

http://www.morethanthemes.com/

Warum ist ein Subtheme besser? Bitte entschuldigt das ich so dreiste Frage?
Und im gewissen Sinne ändere ich ja trotz dessen die Oginaldateien, nur eben in einem Unterordner, d.h. aber auch das ich wenn das Theme aktualisiere alle Anpassungen neu gemacht werden müssen (also z.B. die Style CSS drüber kopieren)

Grüße verdaechtiger 255

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst in Deinem Modul

Eingetragen von Stefan.Korn (286)
am 16.07.2016 - 12:47 Uhr

Du kannst in Deinem Modul schon auch bestimmen wo ein CSS File geladen wird.

Du kannst z. B. auch eine preprocess-Funktion in Deinem Modul benutzen und dort CSS z. B. via drupal_add_css (hier kann man auch bestimmen wo das CSS landet, Stichwort group und weight) laden, das könntest Du dann mit Drupal path_is_admin() auch so steuern dass es nur im Admin-Bereich oder nicht im Admin-Bereich geladen wird.

Mit hook_css_alter kannst Du ggf. auch eine CSS-Datei komplett ersetzen und mit Deiner eigenen Datei ersetzen.

Wenn Du wirklich nur eine einzelne CSS-Datei zusätzlich einbinden willst, kannst Du das auch einfach in der theme.info über stylesheets[] machen. Das ist auch vertretbar ohne ein Subtheme zu erstellen, da Du ja Deine Änderungen nur in diesem einen CSS-File hast. Je nachdem wie das Theme implementiert ist kann das Anlegen eines Subthemes nämlich schon etwas aufwändiger sein.

Links:
https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_css/7.x
https://api.drupal.org/api/drupal/includes!path.inc/function/path_is_admin/7.x
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_css_alter/7.x
Preprocess z. B. https://api.drupal.org/api/drupal/includes%21theme.inc/function/template_preprocess_page/7.x

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du ein Subtheme hast, in

Eingetragen von montviso (2188)
am 16.07.2016 - 13:21 Uhr

Wenn Du ein Subtheme hast, in dem eigene CSS-Styles oder Funktionen in der template.php geschrieben wurde oder sonstige Template-Dateien abgelegt wurden, dann kannst Du das Original-Theme blindlings durch eine aktuelle Datei ersetzen. Denen in Deinem Sub-Theme passiert dann nichts.
In dem Fall, den Stefan beschreibt (nur eine CSS-Datei) ist es vielleicht nicht nötig.
Aber ich finde es einfach sauberer.
Beispiel: Ich habe gerade eine Anfrage für Support einer Drupal-Seite bekommen.
Die wurde gehackt. Dabei wurden auch DAteien des Themes verändert.
Leider hat der Vorgänger kein Subtheme erstellt, sondern ein paar Änderungen im Theme direkt gemacht.
Doku gibts natürlich nicht.
Jetzt muß man sehr vorsichtig untersuchen, welche Änderungen gewollt sind und in die saubere Installation übernommen werden müssen und welches Hacking Änderungen sind.
Wäre das sauber getrennt, könnte ich das gehackte Parent-Theme einfach wegwerfen und neu installieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank an euch alle für

Eingetragen von verdaechtiger255 (3)
am 17.07.2016 - 21:38 Uhr

Vielen Dank an euch alle für euere tatkräftige Unterstützung. Das Thema Subthemes schau ich mir im Detail noch mal an.
Da ich wie schon beschrieben lediglich ein CSS File nachladen werde, habe ich jetzt (durch den Tipp von Stefan mit dem Admin Path) jetzt die aktuelle Implementierung vorgenommen.

Javascript seitige Unterscheidung(Admin Path), könnte man Beispielsweise über die body Classes (front, not-front) machen, das hatte ich beim Suchen noch rausbekommen.

Vielleicht wird das auch mal benötigt:
.module

function <meinmodulname>_init(){
$modulename='<meinmodulname>';


if (!path_is_admin(current_path())) {
drupal_add_css(drupal_get_path('module', $modulename) . '/'. $modulename . '.css', array('group' => CSS_DEFAULT, 'weight' => 100, 'every_page' => TRUE));
}
}

meinmodulname.info

name = <meinmodulname>
description = "Schaltet die angepassten Änderungen des Standard Themes zu"
core = 7.x
version = 1.0

Danke

verdaechtiger255

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 2 Tagen
  • Hey danke
    vor 1 Woche 3 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 2 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 6 Tagen
  • In der entsprechenden View
    vor 2 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 6 Tagen
  • gelöst
    vor 5 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 19 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association