-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-Dateie