-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hallo Uwe.

Meine Empfehlung: Lass es bleiben, sofern es nicht wirklich zwingende Gründe 
dafür gibt.

Du hast vermutlich sowohl für CSS als auch für JS Compression und Concatenation 
an, der Benutzer bekommt also auf jeder Seite in Idealfall nur eine CSS-Datei 
und eine JS-Datei weil serverseitig im Hintergrund mehrere Dateien 
zusammengeführt werden.
Wenn du anfängst, auf jeder Seite nur genau das CSS und JS zu laden das für die 
Seite notwendig ist, müssen deine Webseitenbesucher bei jedem Seitenaufruf 
erneut ein paar hundert KB CSS und JS runterladen, obwohl sich der Code 
*eigentlich* nur ein paar Zeichen unterscheidet. Wenn alle Seiten das gleiche 
JS und CSS verwenden ist zwar die Dateigröße um ein paar KB größer, dafür sind 
Folgerequests mit "304 - Not Modified" möglich, was in Summe die Performance 
verbessert.

Es gibt natürlich technische Gründe, das dann doch wieder aufzuweichen. 
Darunter fallen alle Dateien, die von anderen Webservern kommen und da ggf. 
verzögert werden. Ich muss z.B. nicht auf jeder Seite die Google-Maps-Lib 
einbinden wenn ich nur auf einer einzigen Seite eine Google-Karte haben möchte.

Vielleicht bietet Gridelements außerhalb der TYPO3-Basismechanismen noch die 
ein oder andere Möglichkeit die ich nicht kenne. Das kann dir sicher Jo 
beantworten. Wobei mir sowas bisher noch nicht aufgefallen ist.

Das was du vor hast, lässt sich mit TYPO3-Boardmitteln erst mal nicht 
durchführen. Jedenfalls nicht so einfach, und auch nicht 100% wasserdicht.

Zwar könntest du an ein bestimmtes Gridelements-Content per stdWrap einfach JS 
und CSS anhängen. Das würde dann aber mitten im Body landen. Bei mehrfacher 
Verwendung des gleichen Elementtyps auch mehrfach. Das ist also keine so 
wahnsinnig gute Idee.
Das USER-Objekt hat zwar ein "includeLibs"-Argument. Das betrifft allerdings 
PHP-Ressourcen. Es ist dafür also semi-geeignet.

Es gibt dafür eigentlich nur zwei halbwegs brauchbare Weg. Beide haben aber 
jeweils ihre ganz speziellen Nachteile.

Erstens könntest du an den  Gridelements-Elementtyp per USER oder 
stdWrap/includeLibs einen PHP-Aufruf anbinden, der die JS-Datei in 
$GLOBALS[TSFE] registriert. Wenn ich mich recht entsinne hat Powermail1 das 
damals gemacht, zum Beispiel. Dabei musst du aber hoffen, dass dieses Element 
nicht innerhalb eines *_INT gerendert wird, also nicht in einem COA_INT und 
nicht von einem USER_INT aufgerufen wird. Dann nämlich dürfte das entsprechende 
Header-Fragment bereits gerendert sein wenn das *_INT dazu kommt und der Header 
enthält die JS-Datei "manchmal" nicht. Nämlich immer dann nicht, wenn der Rest 
der Seite aus dem Cache kommt.

Die zweite Variante wäre, z.B. im "includeJS" per stdWrap ein PHP-Script 
einzuschleusen, dass global prüft, ob auf der aktuellen Seite ein 
entsprechendes Gridlements-Content vorkommt und dann das JS nur ein einziges 
Mal anfügt. Das kann aber ggf. schief gehen, wenn du das Element via "Insert 
Records" einbindest, weil dann das Content ja gar nicht auf der eigentlichen 
Seite liegt. Oder aber es kann schief gehen, wenn das Gridelements-Content 
aufgrund von z.B. Sprachbeschränkungen oder Zugriffsrechten für den aktuellen 
Frontendbenutzer nicht sichtbar ist. Auch wenn das der weniger schlimme 
Fehlerfall ist, weil das JS dann einfach untätig zu viel auf der Seite ist. 
Schlimmer ist jedenfalls, dass das Gridelements-Element da ist aber das JS dazu 
nicht.

Deshalb meine Empfehlung: Binde CSS und JS die du potenziell überall benötigen 
könntest grundsätzlich überall ein, und solches CSS und JS dass du nur manchmal 
benötigst dann von Hand auf den wenigen Seiten wo es gebraucht wird. Ein 
"Carousel" fällt für mich in die Kategorie "muss überall gehen".

Gruß,



Stephan Schuler
Web-Entwickler | netlogix Media

Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: media.netlogix.de




netlogix GmbH & Co. KG
IT-Services | IT-Training | Media
Neuwieder Straße 10 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: i...@netlogix.de | Web: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Stefan Buchta, Matthias Schmidt



- -----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org 
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Uwe Thiemann
Gesendet: Donnerstag, 19. Februar 2015 12:43
An: typo3-german@lists.typo3.org
Betreff: [TYPO3-german] CSS-Datei für bestimmtes Grid Element laden

Hallo,

ich habe unter Typo3 6.2 und Grid Elements 3.1.0 eine Site mit mehreren 
Grid-Elementen angelegt, die auf verschiedenen Seiten verwendet werden.

Mein Grid-Element mit der ID 21 benötigt die owl-carousel.css und 
owl-carousel.js-Dateien.

Diese Dateien würde ich gerne nur in solche Seiten einbinden, in denen das 
Grid-Element mit der ID 21 verwendet wird. Gibt es hierfür eine Typo-Lösung, 
oder muss ich ein JavaScript programmieren, dass das Vorhandensein des Elements 
überprüft und die Dateien dann einbindet?

Vielen Dank für Eure Hilfe

Uwe
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

-----BEGIN PGP SIGNATURE-----
Version: PGP Universal 3.3.2 (Build 15704)
Charset: utf-8

wpUDBQFU5gqzpp0IwsibV8MBCP8KBAC4GXbUa9JOnKeWUTqkcHN49uJBwFTG7DXn
9ZT3rmJiDETY19nwF5TTFdtr3pq85NE/UMuIjVji6pvIJ+DYf4A0d32ZQLMesRNF
HaNa1h+yGVjpcESMP4wlgkGpD41nzVh7V1L8c3EwwlC7vzJ/OhM/7nZcYt2I0Ghq
hLpUJDCLkA==
=pQ+V
-----END PGP SIGNATURE-----
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an