Zum Inhalt springen

Extbase CSS Datei einbinden

Erstellt am 30. Mai 2012 · 3 Antworten · letzte Antwort am 1. Juni 2012

Tags: Frage

bschmitt ·

Hi,

ich versuche gerade verzeifelt über eine Extbase Extension eine CSS Datei einzubinden, so dass sie von der ab TYPO3 4.6 vorhandenen CSS/JS Konkatenierung und Komprimierung berücksichtigt wird.

http://wiki.typo3.org/TYPO3_4.6#JS.2FCSS_Compression

Es gibt ja mehrere Ansätze wie man aus einer Extbase Extension eine CSS Datei in eine Seite einbinden kann (ViewHelper, addAdditonalHeader oder ganz dirty direkt im Template). Über einen ViewHelper erscheint für mich die sauberste:

$GLOBALS['TSFE']->getPageRenderer()->addCssFile($path, 'stylesheet', 'all', '', $compress);

Leider hat der Page Renderer zur Laufzeit der Extbase Extension schon alle CSS/JS Dateien zusammengefasst/konkateniert, weshalb meine hinzugefügte nicht mehr mit aufgenommen wird...

Vielleicht habe ich ja auch eine ganz einfache Möglichkeit übersehen... wie macht ihr das? TYPO 4.6 ist ja nun schon ne ganze Weile draußen.

Maks ·

Hi bschmitt,

ich weiss ob wir vom gleichen sprechen, aber ich habe mein CSS für meine Extension in der "setup.txt" eingefügt.

Das File findet man unter Configuration/TypoScript/setup.txt im Ordner seiner eigenen Extension.

LG Maks

bschmitt ·

Vielen Dank für die Antwort Maks!

Ich glaube das ist die einzige Möglichkeit: Das Einbinden über TypoScript in der setup.txt oder der ext_typoscript_setup.txt.

Prinzipiell spricht nichts dagegen, ich muss sie halt nur mehrmals für jedes PageObjekt definieren, da wir relativ viele unterschiedliche TS-Seitentemplates haben.

Page.includeCSS.account1 = EXT:account/Resources/Public/Css/default.css
iFrame.includeCSS.account1 = EXT:account/Resources/Public/Css/default.css
mobilePage.includeCSS.account1 = EXT:account/Resources/Public/Css/default.css
...

Ein weiterer Nachteil, wenn man es über 'Configuration/TypoScript/setup.txt' macht ist, dass man in jeder Seite, in der das Plugin eingefügt wird, noch zusätzlich über Template > Edit the whole template record > Includes > Include static (from extensions) > Extension setup.txt auswählen muss, damit das TS überhaupt greift (zumindest war das bei mir so). Und das jedes Mal zu tun, will ich unseren Redakteuren nicht zumuten...

Ich habe es dann über ext_typoscript_setup.txt gelöst, das macht eigentlich genau das was ich will. Wird immer ausgeführt wenn die Extension in einer Seite ist und ein Redaktuer muss keine Nacharbeit leisten.

kainobi ·
bschmitt schrieb
$GLOBALS['TSFE']->getPageRenderer()->addCssFile($path, 'stylesheet', 'all', '', $compress);

Das geht nur nicht, wenn es eine non-cachable controller action (USER_INT) ist. Siehe hier: http://forge.typo3.org/issues/22273

In solch einem Fall bleibt momentan wirklich nur übrig, das CSS global über das Page-Objekt einzublenden.

Ein weiterer Nachteil, wenn man es über 'Configuration/TypoScript/setup.txt' macht ist, dass man in jeder Seite, in der das Plugin eingefügt wird, noch zusätzlich über Template > Edit the whole template record > Includes > Include static (from extensions) > Extension setup.txt auswählen muss, damit das TS überhaupt greift (zumindest war das bei mir so). Und das jedes Mal zu tun, will ich unseren Redakteuren nicht zumuten...

Das kann eigentlich nicht sein, da TS normalerweise auf alle Unterseiten vererbt wird (auch die Static Templates). Da muss in deiner Config irgendwo ein Hund drinnen gewesen sein...