Zum Inhalt springen

Stylesheet (CSS) in Extension einbinden

Erstellt am 30. Januar 2009 · 10 Antworten · letzte Antwort am 3. Februar 2009

Tags: Frage

ManfredD ·

Hallo,

ich habe eine Frontend-Extension geschieben. Meine Ausgaben generiere ich in der "class.NAME_pi1.php" und einem HTML-Template. Nun würde ich gerne eine CSS-Datei einbinden. Wie kann ich das machen?

Danke und Grüße
Manfred

ThBodi ·

Du solltest das nicht machen. Die bessere Variante ist das Einbinden der css-Anweisungen per Typoscript:

plugin.tx_NAME_pi1 {
  _CSS_DEFAULT_STYLE (
    #... hier kommt das css rein
  )
}

Wenn es aber unbedingt die CSS-Datei sein soll, geht das per $GLOBALS['additionalHeaderData']. Das ist ein Array, dem Du freien Text anhängen kannst, der innerhalb der <head>-Tags ausgegeben wird.

just2b ·

Hallo,

das mit _CSS_DEFAULT_STYLE lehne ich ab, weil es dann immer eingebunden wird. Ich binde eine CSS datei immer selbst im Header ein, damit ist das auch nur da drinnen wo es gebraucht wird.

Als BSP gäbs chgallery

ThBodi ·

Nur habe ich als Admin so keine Möglichkeit, die Einbindung dieser css-Anweisungen komplett zu unterbinden. Sieht der Programmierer der Extension noch zusätzlichen einen "TS-Schalter" vor, lass ich mir das gerne gefallen. 😉

just2b ·

natürlich gehört dann die Möglichkeit her, den Pfad zu bestimmen bzw das CSS nicht einzubinden.

aber CSS hat imo in TS nix verloren

digedag ·

Naja mit

plugin.tx_NAME_pi1._CSS_DEFAULT_STYLE >

ist man das CSS ja auch schnell wieder los.
Schlimmer finde ich Extensions, die immer noch ext_typoscript_setup.txt verwenden und sich damit automatisch in jede Seite reinhängen. #paralyzed#

just2b ·
digedag schrieb

Naja mit

plugin.tx_NAME_pi1._CSS_DEFAULT_STYLE >

ist man das CSS ja auch schnell wieder los.

trotzdem hängts auf jeder seite drinnen wo das TS gesetzt wird.

digedag schrieb

Schlimmer finde ich Extensions, die immer noch ext_typoscript_setup.txt verwenden und sich damit automatisch in jede Seite reinhängen. #paralyzed#

mach ich auch, solang das TS ansicht nichts fremdes manipuliert und nicht riesen groß ist. Scheitern ja schon viele dran das static zu inkludieren. Das nehm ich nur wenn zB irgendwas an existierenden extensions geändert wird

georg

digedag ·
just2b schrieb

mach ich auch, solang das TS ansicht nichts fremdes manipuliert und nicht riesen groß ist. Scheitern ja schon viele dran das static zu inkludieren. Das nehm ich nur wenn zB irgendwas an existierenden extensions geändert wird

Den Leuten zu erklären, daß sie das Static TS einbinden müssen, ist wirklich ein Problem. Allerdings hatte ich schon zwei Installationen, die arge Probleme hatten, weil zuviel TS-Code vorhanden war. Da ist man froh, wenn man genau festlegen kann, welches TS auf welcher Seite vorhanden sein muss. 🙂

ManfredD ·

Einen wunderschönen Montag morgen und vielen Dank für die vielen Antworten! 🙂

Ähm... ich hab alle Antworten mehrmals gelesen und bin etwas verwirrt... Bin blutiger TYPO3-Anfänger und weiß nicht, wo ich "plugin.tx_NAME_pi1" oder "$GLOBALS['additionalHeaderData']" reinschreibe, wie ich eine "CSS Datei selbst im Header einbinde" oder einen "TS-Schalter" einbaue *schäm*
Und ich weiß vor lauter Antworten auch nicht so recht, welcher dieser Wege nun der richtige ist :o

Bitte entschuldigt mein Unwissen... Vielleicht kann mir jemand sagen, was ich jetzt genau in welcher Datei reinschreiben soll.

Vielen Dank!! 🙂
Manfred

digedag ·

Hast Recht, der Faden ist vom ursprünglichen Topic etwas abgewichen. Ich finde das Vorgehen von tt_news zum Thema CSS einbinden sehr gut und damit kann bestimmt auch jeder leben:

Die CSS Definitionen werden in ein separates Static-Template ausgelagert:

1. Leg in deiner Extension ein Verzeichnis static/css an
2. Darin legst du eine Datei setup.txt
3. Diese bindest du in der ext_table.php ein:

t3lib_extMgm::addStaticFile($_EXTKEY,'static/css/', 'CSS Vorgaben');

4. In die setup.txt schreibst du dann deine Stylesheets:

plugin.tx_dein_ext_key {
  _CSS_DEFAULT_STYLE (
.main {border:1px solid #F9FFE5;}
)
}

4. Damit es im FE angezeigt wirst, bearbeitest du dein Haupt TS-Template und fügst dort unter "Enthält" -> "Statische einschließen" das Static Template mit ein. Vorher noch den BE-Cache löschen, da du die ext_tables.php verändert hast!

ManfredD ·

Yeah Yeah Yeah!
Hat wunderbar funktioniert 🙂

Vielen Dank für die ausführliche Erklärung!!

Grüße Manfred

EDIT: Hmmm, wie kann ich denn diesen Thread als "gelöst" markieren?
EDIT2: Habs gefunden, war eigentlich nicht zu übersehen *g*