Closed ghost closed 12 years ago
Mir ist bei diversen Erweiterungen aufgefallen, dass die CSS-Anweisung direkt im
/html Dokument geschrieben werden. Falls CSS Werte dynamisch generiert werden müssen, also in Abhängigkeit von der Anzal an Elementen, dann sollten diese zumindest als Stylesheet via .php in den eingebunden werden.Erstellung einer dynamischen CSS Datei via php.
<link type="text/css" rel="stylesheet" href="/css/erweiterungXY.php" />
Code innerhalb der erweiterungXY.php
<?php header("Content-type: text/css"); ?>
#elementID,
.elementClass
{
float: <?php $wert; ?>
width: <?php $wert; ?>
}
Beispiel: noobslide - Erweiterung
Ich bin davon überzeugt, dass die Qualität der Erweiterung hinsichtlich der Programmierung im Bezug auf die Ziele von Contao sich so fort- und umsetzen sollten. Denn ich möchte auf keinen Fall wieder wie in Joomla jedesmal nachprogrammieren um meine PageSpeed-Werte halten zu können. Auch wollen wir ein sauberen Quellcode haben.
Ich lege sehr viel Wert auf hohe Qualität und Standard und bin froh Contao als CMS zu nutzen. Es spart Zeit, es macht die Dinge für mich als Agentur sowie für den Kunden einfacher, die Arbeit effektiv und effizient.
Vielen Dank
--- Originally created by neueplaneten on June 13th, 2010, at 10:16am
Ich habe in be53510fa534aa97cd05f555eebceb0f einen optionalen Aggregator für die User-Stylesheets hinzugefügt. Alle Stylesheets - speziell dynamisch durch Erweiterungen hinzugefügte - lassen sich jedoch nicht in einer Datei zusammenfassen, da die enthaltenen Pfade ja jeweils relativ zum Speicherort sind.
--- Originally created on June 19th, 2010, at 04:44pm
In meiner SVN Testinstallation habe ich dabei ein Problem entdeckt. Ich habe 3 CSS Dateien importiert in einem Rutsch. Dadurch wurden in der Tabelle tl_style_sheet 3 Einträge mit dem selben tstamp erzeugt. Beim erzeugen des Keys in PageRegular.php in der Zeile:
$key = md5($objStylesheets->id .'-'. max($objStylesheets->tstamp, $objStylesheets->tstamp2) .'-'. $objStylesheets->media);
wird nun 3 mal der selbe Key erzeugt, wodurch 2 der 3 CSS Dateien "verloren" gehen bei der Zusammenfassung. ( in der folgende $arrAggregator[$key] Bildung )
Zur Lösung müsste bei der Key Bildung in PageRegular.php was geändern werden denke ich mal.
--- Originally created on June 21st, 2010, at 12:11am
Das kann eigentlich nicht sein, denn wie Du siehst wird auch die ID des Datensatzes mit in den Key einbezogen. Selbst wenn der Timestamp und der Medientyp also übereinstimmen, wäre der Key noch immer unterschiedlich. Das Problem muss woanders liegen.
--- Originally created on June 21st, 2010, at 10:18am
also ich habe mir $key ausgeben lassen und 3 mal denselben bekommen. Sobald ich die tstamp Werte per Hand abgepasst habe (phpmyadmin) lief alles super.
--- Originally created on June 21st, 2010, at 10:27am
Nachtrag. Das würde ja bedeuten, das mit derselben ID gearbeitet wird bei der $key Erzeugung. Ich werde mal noch einige Logs einbauen, mal sehen was passiert.
--- Originally created on June 21st, 2010, at 10:29am
Könnte es daran liegen, das du $objStylesheets->id zwar abfragst, in der SQL drüber aber das Feld id gar nicht mit bei hast?
--- Originally created on June 21st, 2010, at 11:31am
Ja, daran könnte es liegen :) Mach mal aus dem SELECT tstamp, name, cc, media
ein SELECT *,
.
--- Originally created on June 21st, 2010, at 12:07pm
also ein
SELECT id, tstamp, name, cc, media,...
hat schon gereicht. Ein
SELECT *, (SELECT ...
geht natürlich auch (Komma nach Stern!)
--- Originally created on June 21st, 2010, at 12:54pm
Der Teufel steckt eben im Detail :)
--- Originally created on June 21st, 2010, at 01:07pm
Ist das Teufelchen behoben? ;-)
Ich habe mich gerade gefragt, warum dynamisch durch Erweiterungen hinzugefügte CSS-Dateien nicht auch zusammengefasst werden. Dann habe ich bei Kommentar 3 gelesen, dass das nicht geht, weil der Pfad relativ ist... Ich sehe hier das Problem nicht, der Pfad ist doch immer relativ zu TL_ROOT ?
--- Originally created on July 19th, 2010, at 04:42pm
Und bitte auch die contao.css in die Kombi einbeziehen, Ziel ist es am Ende nur eine CSS Datei zu haben, aber im Theme diese der Übersicht getrennt zu bearbeiten.
Nur noch die contao.css mit einbeziehen und die Erweiterungen, dann habe ich ein Schmunzeln auf dem Gesicht und eine weiteres Argument bei Kunden mit bestehenden Projekten auf Basis von anderen CMS.
Let's SEO...Gruß Tilo (neueplaneten)
--- Originally created by neueplaneten on July 20th, 2010, at 01:02pm
Ganz optimal wäre natürlich, wenn die so kombinierte/aggregierte CSS-Datei weiters auch noch geeignet minimiert und anschließend als GZip-te Version im temporären Ordner "/system/html
" abgelegt werden könnte. Wird sich aber wahrscheinlich On-the-fly nicht so einfach umsetzen lassen...
--- Originally created on July 20th, 2010, at 08:58pm
Wenn ich folgendes Modul auf dem Apache aktiviere, dann werden diese als gzip an den Browser übertragen.
Folgenden Code in die htaccess im Root von Contao.
<IfModule mod_deflate.c>
<FilesMatch ".(css|js|xhtml|html|htm|php)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
Aber erstmal alle CSS Dateien, die im Frontend geladen werden, in eine verpacken und dann das nächste!!!
Gruß Tilo
--- Originally created by neueplaneten on July 20th, 2010, at 09:49pm
Fließt in die 2.9.1 die Optimierung noch ein, dass die contao.css mit einbezogen wird? Zumindest in der hier angegebenen Zielversion 2.9.0 ist das leider noch nicht der Fall.
--- Originally created on August 8th, 2010, at 07:40pm
Fließt in die 2.9.1 die Optimierung noch ein, dass die contao.css mit einbezogen wird?
Mit Sicherheit nicht. Das stand auch nie zur Diskussion, weil es nicht funktionieren würde.
--- Originally created on August 8th, 2010, at 08:23pm
Ich denke, dass beim Import eines Themes, Anlegen einer neuen CSS sowie importieren von CSS-Dateien diese in der Datenbank erfasst werden. Die contao.css ist nur als Beipackzettel im Ordner und wird ins Frontend eingebunden, jedoch nicht in der Datenbank gelistet ist.
--- Originally created by neueplaneten on August 8th, 2010, at 08:47pm
--- Originally completed on June 19th, 2010, at 04:44pm
Die Geschwindigkeit der Seite ist ebenfalls abhängig von den Requests zum Server, ich denke das es möglich ist, diese Anfragen zu reduzieren. Dabei könnten wir die CSS Dateien für die unterschiedlichen Medien (all,screen,projection,u.v.a) zu einer Gesamten kombinieren.
Derzeit werden Sie ja jeweils in den Header gepackt und passend zum Medium aktiviert.
Wenn die CSS Datensätze aus der Datenbank ausgelesen werden und diese in die CSS Datei geschrieben werden, dann wäre es doch sicher möglich dies mit den Regeln `media screen,projection{css...} in eine CSS Datei zu schreiben.
Die CSS Dateien für Erweiterungen usw. müssen sich dann ebenfalls nach den Medien richten oder @media all{} als default setzen.
--- Originally created by neueplaneten on June 7th, 2010, at 11:06am (ID 2094)