Wann wird die user.css ausgeführt?

  • Ich stelle immer wieder fest, dass css-Statements der user.css unter anderem von Extentions überschrieben werden. Meine Erwartung ist eigentlich, dass die user.css immer als letztes ausgeführt wird. Ich kann mir zwar immer mit einem !important helfen. Damit behindere ich mich aber selbst, wenn z.B. im Zusammenhang mit @media ... ein zuvor definierter Wert geändert werden soll. Das kann ich zwar auch umgehen durch entsprechende weitere @media-statements. Sauber ist das aus meiner Sicht aber nicht.


    Daher die Frage, ob meine Erwartung hier falsch ist oder ob manche Extention-Entwickler entsprechende Vorgaben misachten (so es sie denn gibt).


    Ein Beispiel dazu:

    Code
    .pagination__wrapper .pagination .page-link{background-color: transparent;}

    wird von JEvents überschrieben mit

    Code
    .pagination__wrapper .pagination .page-link{background-color: blue;}

    Und gibt es einen Weg sicher zu stellen, dass die user.css zuletzt ausgeführt wird? Gibt es auf der anderen Seite Gründe dies nicht zutun?

    Gruß

    Heinz


    "Wer es nicht versucht schafft es auch nicht."

  • Meines Wissens sollte diese immer als letzt css Datei geladen werden.

    Da können Templateersteller natürlich ihr eigenes Ding machen.

    User.css bei Cassiopeia. In vielen anderen Templates wird aber auch custom.css genutzt. Muss man schauen, was im eigenen Template genutzt wird.

  • Danke für das Feedback. Es ist tatsächlich so, dass unter Joomla 3 zumindest mit den Templates LESSAllrounder und Xenon (Rocket Theme) in Kombination mit Gantry die Dateien template15.css bzw. custom-44.css immer als letztes geladen werden, was die Sicherheit gibt, dass die spezifischen Anpassungen für die eigene Webseite verlässlich funktionierten - auch dann wenn später eine neue Extention nachgeladen wurde.


    Mit Joomla 4 und Cassiopeia wird die user.css und die user.Js vor den entsprechenden Dateien der Extentions geladen. Das führt dann mindestens zu einer !important-Inflation und teilweise aufwändigen @media-Konstruktionen. Aus meiner Sicht halt keine gute Lösung - vor allem dann nicht, wenn eine neue Extention oder auch nur eine neues Feature nachgeladen wird - wie gerade dieser Tage passiert (siehe Beispiel).


    Andere Templates kann ich leider mangels Kennnis nicht beurteilen.


    Mittlerweile wird die Sache zu einem ernsten Problem. Habe heute weitere !importants in die user .css eintragen müssen, weil jetzt eine bootstrap .min.css erst anscchließend geladen wird und einige meiner Änderungen zunächst einmal wieder aufgehoben hat.


    Ich denke, hier muss was am Template geändert werden. Wer kann dazu angesprochen werden?

    Gruß

    Heinz


    "Wer es nicht versucht schafft es auch nicht."

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von hrybak mit diesem Beitrag zusammengefügt.

  • Hallo Heinz,


    Nehme an, diese bootstrap.min.css wurde/wird von einer extension bei Dir geladen.


    Hier 2 ähnliche Fälle:

    Joomla! Issue Tracker | Joomla! CMS #27872 - [4.0] WebAsset correct user.css dependencies and sorting
    Issue tracking platform for the Joomla! project
    issues.joomla.org

    Hier von einer extension: https://issues.joomla.org/tracker/joomla-cms/35706


    Bei beiden wird: WebAssetManager erwähnt.


    Liebe Grüße

    Christine

  • Kann ich bestätigen. Die bootstrap.min.css wird in meinem Fall von JEvenst geladen und überschreibt nicht nur meine user.css sondern auch die template.min.css von Cassiopeia.


    Ich werde noch heute entsprechend JEvents dazu informieren. Ursache ist aus meiner Sicht, dass die Extention-Entwickler Standard-Joomla-Klassen verwenden (absolut ok) und deren Eigenschaften anschließend verändern (absolut nicht ok). In der Konsequenz heisst das, dass ich in der user.css Statements aus der template.min.css zusätzlich durch !important absichern muss (funktioniert meistens - ist aber extrem lästig).


    An den WebAssetManager habe ich auch gedacht, um die user.css und die user.js ans Ende zu stellen - aber wieso muss ich das als "Endanwender" tun, wenn es bei anderen Templates bereits in deren Rahmen getan wird (siehe mein Beispiele aus Joomla 3 - dort hatte ich derartige Probleme über Jahre hinweg nie). Dazu kommt, das ich bislang noch keine verständliche Beschreibung gefunden habe, was der WebAssetManager ist (eine .json-Datei ?) und wie er genutzt wird. Ich finde es auch nicht so gut, dass hier von vergleichsweise "Unwissenden" die Beschäftigung mit Software-Konfiguration verlangt wird.


    Abgesehen davon hilft mir der WebassetManager nichts, wenn die Extentions Standards überschreiben. Hier sind die Extention-Entwickler aufgefordert davon die Finger zu lassen und gefälligst eigene Klassen zu definieren, wenn es denn garnicht anders geht.

    Gruß

    Heinz


    "Wer es nicht versucht schafft es auch nicht."

  • Mit J4.2.3 wird jetzt die user.css als letztes ausgeführt. Eine gute Nachricht.


    Dies betrifft noch nicht die Extentions: JEvents und showplus z.B. werden nach wie vor erst danach ausgeführt, was zumindest bei showplus kein Problem ist, da hier durchgängig eigene Klassen definiert sind.

    Gruß

    Heinz


    "Wer es nicht versucht schafft es auch nicht."