Neue TemplateEngine: Twig

Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Neue TemplateEngine: Twig

Beitrag von creativecat »

Ich mach hier einen neuen Thread auf.

Ich versuche mich tatsächlich das erste Mal an einem eigenen Treiber für eine TE...

Funktioniert schon grundsätzlich mal im Frontend, aber das ganze Handling der Pfade, vor allem Frontend/Backend/Fallback etc. muss ich mir noch anschauen...

Die lib_twig einfach mal ins Modules-Verzeichnis schmeißen, die TwigDriver.php nach [*]/framework/CAT/Helper/Template/ und in der initialize.php die TE auf Twig umstellen:

Code: Alles auswählen

$parser = CAT_Helper_Template::getInstance("Twig");
Aktuell kann das Ding nur die Funktionen cat_url, check_section und check_block.

@Bianka: Ist der Ansatz so grundsätzlich richtig/gut?
Für die Extensions (hießen bei Dwoo Plugins) habe ich zusätzlich eine Klasse "Twig_GetBlackCatPlugins" geschrieben, welche alle Extensions aus einem übergebenen Ordner lädt und zurückgibt.
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von creativecat »

Erstes Update. Jetzt werden beim Render schon mal Pfade gesetzt. Klappt in Frontend und Backend schon mal super :-) Hurra!

Eigentlich klingt das mit den Namespaces für Templates interessant - könnte irgendwie für modules, templates o.ä. genutzt werden. Die Frage ist nur, was wäre der Gewinn :-P Man müsste dafür vermutlich deutlich mehr aufbohren, als nur den Treiber zu schreiben...

Wie oben beschrieben einbauen. Damit werden die Templates soweit geladen, aber natürlich sind noch nicht die ganzen Plugins angepasst. Wir müssten dazu nicht nur alle Plugins anpassen, sondern auch sämtliche .tpl-Dateien, weil diese noch auf Dwoo-Standard laufen. Twig unterscheidet sich aber im Syntax schon deutlich...

Ein Screenshot des Backends mit bisher 4 übersetzten Extensions - schaut schon sehr gut aus. Man muss leider alle Funktionen umschreiben von
{get_page_headers} zu {{get_page_headers()}}
und sämtliche Variablen von
{$MAIN_MENU} zu {{MAIN_MENU}}

=> Das geht leider nicht wirklich durch Suchen&Ersetzen...
Bildschirmfoto 2022-04-11 um 22.05.58.png
Bildschirmfoto 2022-04-11 um 22.05.58.png (1.26 MiB) 1742 mal betrachtet
Dateianhänge
Twig.zip
(252.12 KiB) 53-mal heruntergeladen
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von creativecat »

Ich hab mal spaßeshalber mit einem angepassten Template auf Dwoo zurückgestellt. Damit kommt Dwoo definitiv nicht klar. Ich glaube mit Smarty würde Dwoo mindestens teilweise zurechtkommen, richtig?
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von shadowcat »

Kann man das Begrenzungszeichen nicht einstellen?
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von shadowcat »

creativecat hat geschrieben:
Di 12. Apr 2022, 08:59
Ich hab mal spaßeshalber mit einem angepassten Template auf Dwoo zurückgestellt. Damit kommt Dwoo definitiv nicht klar. Ich glaube mit Smarty würde Dwoo mindestens teilweise zurechtkommen, richtig?
Ach, das war Smarty, nicht Twig... :roll: Ich kann die Frage aber trotzdem nicht beantworten. :lol:
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von creativecat »

shadowcat hat geschrieben:
Di 12. Apr 2022, 09:00
Kann man das Begrenzungszeichen nicht einstellen?
Stimmt, das müsste gehen... ich schau mal ;-)
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von shadowcat »

Im Prinzip müssen wir auch nicht mehr Dwoo-kompatibel sein, wenn wir jetzt switchen. Ganz oder gar nicht. :mrgreen:
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von creativecat »

Also ich hab es versucht, aber so ganz mag der mich nicht :-P

Das sollte eigentlich funktionieren, aber er will es nicht sauber interpretieren. Variablen funktionieren, aber Funktionen mag er so nicht und if/else sowieso nicht...

Code: Alles auswählen

$lexer = new \Twig\Lexer($this, [
        "tag_comment" => ["{*", "*}"],
        "tag_block" => ["{", "}"],
        "tag_variable" => ['{$', "}"],
      ]);
      $this->setLexer($lexer);
Für meine paar Seiten würde ich das mit Twig wohl hinbekommen. Alles umzuschreiben. Man könnte ja noch ein paar Versionen die lib_dwoo mitschleifen und im Backend eine Option setzen lassen, ob man die neue oder alte TE nutzen will. Wobei wir uns fürs Backend entscheiden müssten... Weil ein Mischmasch (was ja theoretisch möglich wäre, weil die Templates immer mitliefern welche TE die wollen könnten) wird nicht funktionieren.

Puh... Den nächsten Zopf abschneiden?
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von creativecat »

Ein Vergleich Smarty/Twig nimmt sich nicht viel...
Mein aktueller Ordner von Twig ist auf jeden Fall um ziemlich genau 200KB leichter als Dwoo ;-) Aber da fehlen auch noch ein paar Plugins...

EDIT: Wenn ich mir über den composer schnell mal Smarty ziehe, hat das mehr als doppelt so viel Gewicht als Dwoo... also Twig ist auf jeden Fall ein Leichtgewicht, wenn ich das so auf die Schnelle richtig sehe ;-)
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Neue TemplateEngine: Twig

Beitrag von shadowcat »

Einfach so auf Twig umsteigen klappt bei mir nicht.

Fatal error: Uncaught Twig\Error\LoaderError: Unable to find template "backend_pages_modify.tpl" (looked into: E:/00_Development/BC1Portables/v1.5/root/modules/wysiwyg/templates/default, E:/00_Development/BC1Portables/v1.5/root/modules/wysiwyg/templates/default). in E:\00_Development\BC1Portables\v1.5\root\modules\lib_twig\vendor\twig\twig\src\Loader\FilesystemLoader.php:227

Da fehlen mir sicher die angepaßten Templates.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Gesperrt