Bausteine CSS Framework unabhängig machen - per Event PHP Control-Methoden überschreiben
Im Moment kann ich nur das HTML von Controls überschreiben. Das ist die einzigste Möglichkeit die Controls (Bausteine) an das Template anzupassen. Viele unsere Bausteine basieren immer noch auf Unsemantic und davon ist nicht ganz leicht wegzukommen. Dadurch haben Templates, die auf anderen Frameworks basieren (Tailwind CSS, Bootstrap, Bulma), das Leben erschwert. Es gibt Bausteine, die in PHP die grid-*
oder andere template-spezifische Klassen gerne setzen würden (mr-1
, rounded-lg
, flex
- Beispiele von Tailwind). Zum Teil lassen sich die (unsemantic) Bausteine in den anderen Templates nicht benutzen.
Klar, man kann alles in CSS mit !important
überschreiben, aber das löst nur einige Probleme.
Vor knapp 2 Wochen habe ich mit Mor geredet und dabei ist folgende Idee entstanden:
Template-Entwickler sollten die Möglichkeit haben, die PHP Methoden von Bausteinen zu überschreiben.
Die erste Idee war, dass ich neue (für das Template) Bausteine definiere und die body Methode überschreibe. Das ist aber ziemlich viel. Man muss die locale für Titel, Description, Einstellungen, etc kopieren, die große bricks.xml
Datei anlegen, immer dafür sorgen, dass die Einstellungen mit dem "originalen" Baustein gleich sind, etc.
Daher wäre einfacher, wenn man irgendwo in xml
die einzelnen Methoden definieren würde, die man überschreiben möchte. Wie das genau umgesetzt wird, musst du das noch mit @mor klären.
Wenn das umgesetzt wird, dann muss jemand (ich) nach und nach (wahrscheinlich bei Bedarf) die Bausteine / Controls so anpassen, dass nicht immer die ganze getBody()
überschreibt werden müsste (siehe Beispiel unten). Auch die CSS Dateien kann man per getCssFile()
einbinden und somit leicht eigene CSS Datei liefern, falls man das braucht.
Beispiel
Im Template TailwindCSS habe ich ein Baustein definiert, wo die Methode ausgelagert ist, die template-spezifische CSS Klassen setzt. Somit muss später in z.B. Template Business Pro nur die eine Methode überschrieben werden (+ HTML, was aber in Ordnung ist).