[TYPO3-german] jQuery-Bibliothek in eigenen Extensions

Peter Linzenkirchner liste at lisardo.de
Wed May 8 16:25:11 CEST 2013


Hallo Sven, 

wenn man den Core nicht mitliefert, ist die Extension keine Plug&Play-Extension mehr ... Einschalten per Constants ist unter dem Aspekt die bessere Lösung. 

Auch wenn alles im Footer (oder im Head) geladen wird, gibt es ein Reihenfolge-Problem, das habe ich eben mit Powermail gemerkt: Meine Extension wurde vor Powermail installiert, ohne jQuery. Powermail lädt jQuery, aber nach meinem jQuery-Plugin. Ergebnis ist ein JavaScript-Fehler. Den Reihenfolge-Fehler gibts sogar dann, wenn man den jQuery-Core nur einmal über eine Extension lädt; diese Extension muss dann nämlich grundsätzlich als erstes installiert werden. Das würde wieder dafür sprechen, alle Extension grundsätzlich ohne den jQuery-Core auszuliefern, und in der Doku darauf zu verweisen, dass der Core eigens geladen werden muss. 

--

Dein Ansatz erscheint mir aber logisch und ein guter Kompromiss. Werde meine Extension so umschreiben, dass jQuery per Constants geladen wird. Und wenn ich da schon dabei bin, dann auch gleich eine Konstante ob in Head oder in den Footer. 

Danke!
Peter



Am 08.05.2013 um 15:48 schrieb Sven Wappler <mailinglists at wapplersystems.de>:

> 
> Hallo Peter,
> 
> ich als Webentwickler bin der Meinung, auf das Mitliefern des
> jQuery-Cores zu verzichten, oder wenn überhaupt dann einfach optional
> über eine Template-Konstante einschaltbar zu machen.
> Der jQuery-Core sollte nicht mitgeliefert werden, weil meistens die
> Versionen schnell veralten und man irgendwann dann sowieso den Core
> manuell einbauen muss, weil der Extension-Entwickler nicht aktualisiert
> (warum sollte er auch jeden Monat).
> Außerdem muss man sich als Administrator sowieso um die Kompatibilität
> der einzelnen Skripte kümmern. Und so kompliziert ist der Einbau des
> Cores mit ein wenig TypoScript nun auch wieder nicht.
> Sollte die eigene Extension jQuery Java-Scripte benötigen, dann einfach
> in den Footer damit. Dort können sie immer geladen werden, egal ob der
> Core im Header oder im Footer geladen wird.
> 
> Grüße, Sven
> 
> 
> Am 08.05.2013 15:04, schrieb Peter Linzenkirchner:
>> Hallo!
>> 
>> ich habe in der Extension-Entwicklung ein Problem mit dem Einbinden von jQuery, das generellerer Natur ist, deshalb würde ich das gerne diskutieren. 
>> 
>> Viele Extensions benötigen jQuery und binden die Bibliothek auch ein. Sobald man mehr als eine Extension installiert, wird die Bibliothek also doppelt installiert und man bekommt JavaScript-Fehler. Meist kann man das Einbinden der Bibliothek per Typoscript abschalten, z. B. bei Powermail über dieses Typoscript: 
>> 
>> page {
>> 	includeJSFooterlibs {
>> 		powermailJQuery >
>> 		powermailJQuery.external >
>> 	}
>> }
>> 
>> Man kann also theoretisch das Einbinden der Bibliothek in allen Extensions abschalten und nur in einer drin lassen. Aber in dem Fall gibt es zwei Probleme: 
>> 
>> 1. Header / Footer
>> Ein Teil der Extensions bindet das eigene JavaScript bzw. die jQuery-Plugins im Header ein. Wenn man jQuery selbst im Footer einbindet, bekommt man entsprechende Fehlermeldungen, dass jQuery nicht gefunden wird. 
>> Man muss 
>> - entweder eine eigene jQuery-Bibliothek in den Head einbinden, 
>> - oder dafür sorgen, dass alle Extensions ihre jQuery-Plugins in den Footer legen. 
>> 
>> 2. allgemeines Reihenfolgeproblem
>> includeJSFooterlibs scheint die JavaScript-Bibliothek nicht in alphabetischer Reihenfolge zu laden sondern in der Lade-Reihenfolge der Extensions. Das kann zu kuriosen Zufällen führen: mal ist jQuery an erster Stelle, mal nicht ... mal wirft es Fehler, mal nicht. und es reicht, eine Extension kurz zu deinstallieren und schon geht es nicht mehr. 
>> 
>> ---
>> 
>> gibt es da Lösungen, Ideen? Wie gehe ich in einer eigenen Extension am besten damit um? 
>> 
>> Ich binde momentan meine JavaScript-Bibliothek so ein: 
>> $GLOBALS['TSFE']->pSetup['includeJSFooterlibs.'][$this->extKey.'_1']  ... 
>> das erscheint mir zunehmend als schlechte Idee. 
>> 
>> Alex macht es in Powermail so: 
>> 
>> page {
>> 	includeJSFooterlibs {
>> 		....
>> 	}
>> }
>> 
>> das ist flexibler denke ich, weil man einfach den Abschnitt aus dem Extension-Setup kopieren, erweitern und dann ins page-setup einbauen kann. Aber es ist nicht benutzerfreundlich ... 
>> 
>> Danke
>> Peter
>> 
>> 
>> 
>> --
>> Xing: http://www.xing.com/profile/Peter_Linzenkirchner
>> Web: http://www.typo3-lisardo.de
>> Facebook: http://tinyurl.com/lisardo-multimedia
>> 
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>> 
> 
> 
> -- 
> WapplerSystems: http://www.wapplersystems.de
> T3Yaml Template: http://t3yaml.de
> T3bootstraptv: http://t3bootstraptv.de
> Xing: https://www.xing.com/profile/Sven_Wappler
> Geeklist: http://geekli.st/svewap
> Twitter: https://twitter.com/WapplerSystems
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia



More information about the TYPO3-german mailing list