Ausführungsort von CSS feststellen?

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Ausführungsort von CSS feststellen?

Beitrag von Faar » Mo 24. Okt 2016, 17:16

Ich habe ein immer wiederkehrendes Problem: Wie kann ich den Ausführungsort von beliebigem CSS feststellen?
Mal habe ich CSS normal eingebunden über den Meta-Link, mal ist es im CSS-Reiter des Moduls versteckt und mal ist es in Javascript., usw.
Der Grund der Frage ist der, dass viele externe Programme ihre eigenen Symbole mitbringen und teils oft in Form von Symbol-Schriften.

Als geeignetes Beispiel der Flex-Slider:
Die mitgebrachte Schrift wird im flexslider.css mit dem Pfad 'fonts/flexslider-icon.eot' eingebunden. Das funktioniert aber nur, wenn man im Ordner CSS den Ordner "fonts" erzeugt hat und dort die Schriften liegen.
Bei neuen Seiten, die noch in einer Subdomain oder tief in einem Testordner liegen, lautet der Pfad schon mal bis zum /cms etwas länger, also die Domain zeigt nicht direkt auf /cms.
Dadurch funktioniert mal so eine css Schrift oder mal nicht, je nach Laune oder Wetter.
Nun hatte mal das CSS, so wie oben genannt, die Schrift auch eingebunden aber übermütig wie man ist, möchte man es vielleicht Modul gebunden haben und kopiert das flexslider.css in das Modul-CSS rein.
Vorteil ist, dass dieses CSS nur geladen wird, wenn auch ein Slider installiert ist.

Man kann es sich denken, die "Schrift" geht nicht mehr, weil sich aus unbekannten Gründen der Ausführungsort des CSS verschoben hat.
Nun stimmt der relative Pfad vom CSS-Verzeichnis natürlich nicht mehr, weil das CSS gar nicht mehr im CSS Verzeichnis liegt sondern im Modul.
Nun mag man sich denken, es liege nun im Ausführungsort des Programmes, also im /cms Verzeichnis, also baut man den Pfad um, so dass er relativ vom /cms Verzeichnis aus geht.
Funktioniert aber nicht.

Nun kann man ja alles doppelt machen, so auch den Ort der Schrift, so dass diese mal in /cms/fonts liegt und mal in /cms/css/fonts/, irgendeines würde ja treffen.
Tut es aber auch nicht.
Schreibweisen mit fonts/ oder /fonts/ halfen auch nichts.
Aber es funktionierte diesesmal mit ../fonts/, also mit zwei Punkten und einem Slash.
Warum?

Gut, dieses Projekt läuft somit, bis dass die Domain aufgeschaltet wird... :? Dann geht das von vorne los.
Aber andere Projekte laufen nicht damit, die haben wieder andere Pfade und eines funktioniert seit kurzem gar nicht mehr mit allen Pfaden, also auch nicht mit dieser Lösung.
Und woanders ist es wieder anders.

Gibt es irgendeine Logik dahinter, warum die Pfade, womit eine CSS-Schrift funktioniert, bei jedem Server anders zu sein scheinen?
Wie kann ich innerhalb des CSS herausfinden, in dem eine Schrift eingebunden ist, welcher Pfad hier gültig ist ohne alles hundertmal durch zu spielen?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4251
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Ausführungsort von CSS feststellen?

Beitrag von Oldperl » Di 25. Okt 2016, 10:40

Servus,

Pfade in CSS-Dateien sind, solange man keine absoluten Pfade nutzt, immer relativ zum Ablageort (Pfad) der CSS-Datei. Nutzt man nun CSS-Dateien in Modulen (cms/data/module/mein-modul/css/mein-modul.css), so ist dies hier anscheinend nicht so. Die Regel gilt hier aber entsprechend, da die Modul-CSS-Dateien beim Erstellen der Seite gesammelt und in einer einzigen Datei ins Cache-Verzeichnis des Mandanten (cms/cache/meine-seite.css) abgelegt werden. Geht man bei der Pfadangabe in der CSS-Datei des Modules nun von diesen Vorgaben aus, so sollte eine Bild-Datei mit folgendem Pfad funktionieren, wenn sie dort auch liegt.
cms/images/meine-bilder/ein-bild.png :arrow: background:url(../images/meine-bilder/ein-bild.png);

Entsprechend kann man auch Bilder im Modul-Ordner referenzieren, wobei man darauf achten muss, das die .htaccess im data-Ordner eine entsprechende Zugriffsfreigabe für Bilddateien enthält.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Ausführungsort von CSS feststellen?

Beitrag von Faar » Di 25. Okt 2016, 12:01

Danke Ortwin,

das erklärt mir einiges, besonders das mit dem /cache Ordner im Zusammenhang mit ../

Bleiben nur noch wenige Fälle, wo es dann trotzdem nicht funktioniert und wieder anders ist.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Ausführungsort von CSS feststellen?

Beitrag von rethus » Di 25. Okt 2016, 17:06

Ich habe folgende Strategie um im CSS-Wust die übersicht zu halten :) :

Wenn möglich nutze ich das CSS-Tab von "Module", damit das CSS auch nur dann geladen wird, wenn ein Modul geladen wird. Da ich schon mal dabei bin, wird es dann direkt durch den minifyzierer gejagt :) (Editieren tue ich es nicht im Contenido... und falls doch mal, nutze ich ein beautify-online-tool, um kein Augenkrebs zu kriegen).

Ist es ein CSS, das Bestandteil des Layouts ist, und möchte ich KEIN Modul daraus machen, lege ich ein Verzeichnis "external" im Mandantenverzeichnis ab (also z.B. /external/flexslider_2.1.5abcDingsBums), wo ich das gesamte externe Paket reinpacke. So bleibt die Struktur des Paketes selbst erhalten und es ist einfacher upzugraden, als wennd du anfängst, JS und CSS überall zu verstreuen.
So kannst du dir einfach merken, das du entweder immer absolut nach /external/ verlinkst, oder alles im Modul gekapselt ist.

Imports von CSS oder JS aus anderen JS oder CSS vermeide ich wenn möglich komplett (auch aus Performance-Gründen).
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Ausführungsort von CSS feststellen?

Beitrag von Faar » Mi 26. Okt 2016, 08:08

Moin Rethus,
rethus hat geschrieben:Wenn möglich nutze ich das CSS-Tab von "Module", damit das CSS auch nur dann geladen wird, wenn ein Modul geladen wird.
Ja, das hatte ich in diesem Fall auch gemacht, aber das Problem war dann die Symbol-Schrift, die in diesem CSS eingebunden war.
So wie Ortwin schrieb, befand sich das CSS dann im Verzeichnis /cms/cache und da musste ich erst mit ../ raus um in /cms/fonts zu kommen.
So bleibt die Struktur des Paketes selbst erhalten und es ist einfacher upzugraden, als wennd du anfängst, JS und CSS überall zu verstreuen.
Aber dann hast Du auch wieder weitere Pfade im CSS?

Nun, in einem Fall gestern war es wieder das etwas ältere .htaccess vom AMR für 4.8.15, denn das schreibt explizit vor, welche Dateien von außen geladen werden dürfen und da war .eot, .svg, .ttf und .woff nicht eingetragen.
Und darum konnten die Symbole nicht angezeigt werden.
Es ist fast jedesmal ein anderer Grund, warum es nicht gleich geht :(
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Antworten