Hallo zusammen,
ich bin gerade u.a. dabei ein Layout für Ilch 2 zu entwickeln. Dabei stolpere ich immer wieder über die ungeordnete Reihenfolge der Layout vs. Modul-CSS-Dateien, die oft die Verwendung von !important erforderlich macht.
Ich meine mich erinnern zu können in einem anderen Thread gelesen zu haben, dass es mal Bestrebungen nach einem Asset Manager oder zumindest einer CSS / JS-Registry gab. Nun ist meine 2.0 Installation nicht auf dem neuesten Stand, hat sich da nochmal was getan? Sonst würde ich mich da mal dranmachen, eine einfache Registry sollte keine große Sache sein und würde Layoutern das leben bestimmt erleichtern und den Code sauberer halten.
Eleganter wäre es natürlich mit Abhängigkeiten/Bundles und Deployment/Publish (damit könnte man auch das Modul-Verzeichnis "zumachen" da es dann einen Weg gäbe alle statischen Dateien wie CSS, JS, Images... automatisch in ein öffentliches Verzeichnis zu legen), das würde aber wahrscheinlich zu stark in bestehende Strukturen eingreifen? Alle Module müssten wahrscheinlich auf dessen Verwendung umgestellt werden sofern es durchgezogen werden soll
Edit:
Beispiel:
1. Ilch selbst definiert ein Core-Frontend-Asset Bundle, das z.B. Fontawesome, Jquery usw. enthält.
2. Das Layout-Asset-Bundle hat das Ilch Asset Bundle als Abhängigkeit.
3. Module können ebenfalls ihre Bundles registrieren, auch wieder mit Abhängigkeiten.
4. Es wäre dann sogar möglich, Asset Bundles als Module auszulagern, z.B. ein JQuery Slider Plugin o.Ä.
5. Nun gibt es eine zentrale Klasse in der die Bundles mit ihren Abhängigkeiten registriert werden. Bei der Registrierung werden die Abhängigkeiten entsprechend aufgelöst damit die richtige Reihenfolge eingehalten wird. Als letztes kommt i.d.R. das Layout Asset Bundle dran.
6. Ein Asset Bundle hat immer ein Stammverzeichnis, das liegt z.B. in modules/forum/assets. Darin liegen dann die üblichen Ordner css, js, img usw.
7. Im Header und Footer gibt es 1-2 Punkte, an denen die entsprechenden Dateien dann in der geordneten Reihenfolge ausgegeben werden.
7a.) Dafür ist es (nach etwas längerem Nachdenken als vor dem Edit) notwendig, dass die Views und Boxen etc. vor dem Layout gerendert werden, ich glaube das ist momentan nicht der Fall?
8.) Beim Publishing-Vorgang (= Erreichen einer Marke im Layout, z.B. im Header oder vor </body> für Javascript) erhalten alle Asset Bundles eine ID, z.B. basierend auf einem Hash o.Ä. Dann werden die Inhalte aus den jeweiligen Verzeichnissen (z.B. wie gesagt modules/forum/assets) in einen zentralen Ordner kopiert (idealerweise gesymlinkt), z.B. htdocs/assets, neben der index.php
Grüße
verwendete ilch Version: 2.0 (alpha)
Zuletzt modifiziert von BadRandolph am 30.11.2016 - 00:14:00