Mittwald CM Service: TYPO3-Hosting, TYPO3-Schulungen, Agenturpakete, Managed-Server
Optimiertes TYPO3 Hosting von Mittwald CM Service

Dynamisch eine CSS-Datei erstellen

Wenn Sie seitenabhängig CSS-Definitionen brauchen und diese allerdings nicht im Head-Bereich, sondern in einer seperaten Datei  stehen sollen, können Sie sich mit einem Trick helfen.

Sie müssen dazu nur die Ausgabe einer Seite wie im folgenden Beispiel definieren:

TypoScript (Setup)

  1. css = PAGE
  2. css {
  3.         typeNum = 22
  4.         config{
  5.                 additionalHeaders = Content-type: text/css
  6.                 disableAllHeaderCode = 1
  7.         }
  8.         10 = TEXT
  9.         10.value (
  10.                 body {
  11.                         margin: 0px;
  12.                         padding: 0px;
  13.                 }
  14.                 h5 {
  15.                         text-decoration: none;
  16.                         font-weight: bold;
  17.                         font-size: 40px;
  18.                         color: red;
  19.                         background-color: silver;
  20.                         display: box;
  21.                 }
  22.         )
  23. }
  24. page.headerData.775 = TEXT
  25. page.headerData.775.dataWrap =  <link rel="stylesheet" type="text/css" href="index.php?id={field:uid}&type=22" />|

TypoScript-Erläuterung

Von Zeile 1-23 wird die Ausgabe der CSS-"Datei" konfiguriert. Damit die Ausgabe auch als Text ausgeliefert wird, wird in Zeile 5 die Headerinformation modifiziert.

Die CSS-Datei darf natürlich nicht den Head- und Body-Bereich einer normalen Webseite haben. Aus diesem Grund wird der Header-Code in Zeile 6 komplett gelöscht.

In Zeile 8-22 wird die Ausgabe noch relativ starr (hier mit Beispieldaten) angegeben - allerdings können Sie die CSS-Daten ja auch aus einem zuvor mit dem Kickstarter ergänzten Datenbankfeld der pages-Tabelle auslesen und hier dynamisch einfügen lassen.

Zeile 24 und 25 fügt jetzt in der normalen Webseite noch den Link zur
Stylesheet-"Datei" ein.

Die TypeNum-Angabe ist überigens nicht zwingend 22.
Sie müssen nur eine freie typeNum verwenden.


Kommentare von registrierten Benutzern:

Kommentar von: Fabian-K

18. 08. 2008, 17:00
Da muss ich den Kollegen Helger leider ein klein wenig korrigieren. ;-)


Wir GENERIEREN eine Css-Datei, daher muss keine CSS Datei im Fileadmin vorhanden sein.
Und der obenstehende Code kommt in's SETUP (bzw. auf deutsch "Konfiguration") des Templates.
(Ob du dafür ein neues +ext Template anlegst oder es in dein Haupttemplate schreibst, bleibt dabei dir überlassen. Das ist im Endeffekt dann nur eine Frage der Übersichtlichkeit..)


Ein viel wichtigeres (und aktuelleres) Thema ist: CoolURI Anpassungen!!
Habe dafür etwas rätseln müssen, daher poste ich es mal hier her.


Zunächst bearbeiten wir unsere .htaccess Datei:
In der Zeile
Php:Zeilennummerierung:  An / Aus

  1. RewriteRule ^(typo3|t3lib|...|cgi-bin|robots.txt)/ - [L]
erweitern wir das Ganze hinter "robots.txt":
Php:Zeilennummerierung:  An / Aus

  1. RewriteRule ^(typo3|t3lib|tslib|...|cgi-bin|robots.txt|index.php(.+)type=22)/ - [L]


Tun wir dies nicht, dann kann die Seite "index.php?id=XX&type=22" nicht aufgerufen werden.
(CoolURI versucht nämlich, einen simulierten Pfad zu finden, der für diese CSS-Seite nicht existiert.)
Diese "Erweiterung" gilt natürlich dann nur für die CSS-Seite (type=22). Das müsst Ihr dann entsprechend anpassen, wenn Ihr einen anderen typeNum für die CSS Datei (Zeile 3) verwendet.


Hinzu kommt noch eine kleine Änderung im Typoscript (Zeile 25).
Aus
Typoscript:Zeilennummerierung:  An / Aus

  1. page.headerData.775.dataWrap =  <link rel="stylesheet" type="text/css" href="index.php?id={field:uid}&type=22" />|
wird folgendes:
Typoscript:Zeilennummerierung:  An / Aus

  1. page.headerData.775.dataWrap =  <link rel="stylesheet" type="text/css" href="/index.php?id={field:uid}&type=22" />|

(Ein Slash (/) kommt vor das "index.php?...", sonst versucht Euer Typo3 die index.php in den simulierten Unterpfaden zu finden.)

hth - fabian.

Profil

Kommentar von: Helger

23. 02. 2007, 10:18
In den Seiteneigenschaften unter TS

Oder du erstellst ein +extensions Template und bindest dort die CSS Datei ein, welche als externe Datei im Fileadmin liegt.

Profil

Kommentar von: Flummi

03. 12. 2006, 20:25
Wo genau muss ich denn das TypoScript eintragen? In die Seiteneigenschaften der Seite, dessen CSS-Definition unterschiedlich sein soll?
Oder in eine neue Seite?
Oder als neues Template?


Profil



Seite drucken
 
TYPO3 Hosting in der Version 4.3.2 kostenlos bei Mittwald CM Service testen

TYPO3 4.3.2 jetzt testen

Testen Sie die neue TYPO3 Version 4.3.2 kostenlos für einen Monat


Entwicklerschulungen

  • Espelkamp:
    Mit., 17.03.10 - Fre., 19.03.10
  • Berlin:
    Mit., 21.04.10 - Fre., 23.04.10
  • Köln:
    Mon., 21.06.10 - Mit., 23.06.10