blog.bartlweb - a technologist's external brain

Thema: TYPO3

HTML-Header aus einer Typo3-Extension heraus erweitern

Des öfteren ist es sehr hilfreich aus einer Extension heraus dem HTML-Header noch Einträge hinzuzufügen. Der wohl häufigste Beweggrund dafür wird das einbinden von JS bzw. CSS-Dateien sein.

$GLOBALS['TSFE']->additionalHeaderData[$this->extKey] = '<script src="/files/script.js" type="text/javascript"></script>';

Dynamisch erzeugtes Inline-JS bzw. Inline-CSS kann auch direkt mittels den dafür vorgesehenen Funktionen eingebunden werden.

$GLOBALS['TSFE']->setJS($this->extKey, 'alert("dynamisches JS");');
$GLOBALS['TSFE']->setCSS($this->extKey, '.dynamisch {margin: 1em}');

eigene PHP-Funktionen in Typoscript einbinden

Es ist durch aus möglich eigene PHP-Funktionen in Typoscript einzubinden, um komplexe Ausgaben zu erzeugen oder komplexe Bedingungen für Conditions zu erstellen.

eigene Funktionen

Um eigene Funktionen überhaupt in Typoscript einbinden zu können, muss zunächst die entsprechende PHP-Datei, in der diese definiert sind, eingebunden werden.

includeLibs.<beliebigername> = directory/user_<yourclassname>.php

Die Benennung der Klasse (und damit des Dateinamens, der der Klasse entsprechen sollte) unterliegt der Einschränkung, dass diese immer mit user_ zu beginnen hat.

Die Klassen und Funktionendefinition sieht im Grundstock so aus:

Typo3-Content-Elemente in zufälliger Reihenfolge ausgeben

Es ist durch aus möglich Content-Elemente einer Seite bzw. einer Spalte der Seite im Frontend in zufälliger Reihenfolge auszugeben. Dazu bedienen wir uns dem Ansatz per Typoscript eigene SQL-Befehle abzusetzen.

page = PAGE
page.10 = CONTENT
page.10 {
  table = tt_content
  select {
    where = colPos=0
    max = 1
    orderBy = rand()
  }
}

Das unten stehende Beispiel verwendet diese Option um beliebige Content-Elemente (auch von verschiedenen Seiten) per Typoscript auszugeben.

page = PAGE
page.10 = CONTENT
page.10 {
  table = tt_content
  select {
    pidInList = 2,3,4
  }
}

Mehrsprachiger Typoscript-Code

Um per Typoscript generierte Elemente Mehrsprachig zu gestalten, kann man entweder Conditions bemühen oder die lang-Option wie unten angeführt bemühen.

page = PAGE
page.10 = TEXT
page.10.value = English Text
page.10.lang.de = Deutscher Text

Tabellen im Typo3-Backend verstecken

Hin und wieder gibt es Tabellen deren Auflistung man im Typo3-Backend nicht benötigt (wie z.B. static_info_tables). Das folgende Typoscript kann entweder im User- oder im Page-TS angegeben werden und versteckt angegebene Tabellen.

mod.web_list.hideTables = tablename,tablename1

Language-Files von Extensions per Typoscript überschreiben

Wer nur kleine Anpassungen an den Language-Files einer Extension vornehmen will oder dies abhängig von einer Condition tun möchte, kann diese auch per Typoscript überschreiben.

plugin.tx_plugin._LOCAL_LANG.default.key = value plugin.tx_plugin._LOCAL_LANG.de.key = value

Dabei ist noch zu beachten, dass das Default-Array, unabhängig von der eingestellten Sprache, immer die Sprache Englisch enthält.

Body-Tag per Typoscript manuell erzeugen

Gerade wenn man unterschiedliche Templates benötigt hilft es oft Klassen oder ID's zum Body-Tag hinzuzufügen. Mit dem folgenden Typoscript können Sie die Ausgabe des Body-Tags selbst steuern.

page = PAGE
page.bodyTagCObject = HTML
page.bodyTagCObject.value = <body class="page startpage">

Nachfolgendes Beispiel weist dem Body-Tag die aktuelle Seiten-ID als ID zu.

page = PAGE
page.bodyTagCObject = HTML
page.bodyTagCObject.value.field = uid
page.bodyTagCObject.value.wrap = <body id="|">

Cache-Löschen im Typo3-Backend für Redakteure freischalten

Gerade bei Webseiten mit vielen Extensions die sich das typo3-interne Caching zu Nutze machen, ist es oft hilfreich wenn Redakteure den Frontend-Cache selbst löschen können. Standardmäßig wird dieser Nutzergruppe diese Funktion jedoch nicht angezeigt. Die folgenden beiden Zeilen Typoscript sind in das User-TS für den jeweiligen Nutzer oder die jeweilige Gruppe einzufügen und aktivieren das Löschen des Caches für einzelne Seiten bzw. die ganze Website.

options.clearCache {
    pages = 1
    all = 1
}

aktuelle BaseUrl in Typo3-Extension auslesen

Will man absolute Urls in seiner Extension generieren ist es oft hilfreich die aktuell über Typoscript definierte BaseUrl auszulesen.

Dabei stehen Ihnen die folgenden beiden Varianten zu Verfügung:

$GLOBALS['TSFE']->tmpl->setup['config.']['baseURL']
 
$GLOBALS['TSFE']->baseURL

Leider hat die letztere der beiden Varianten nicht immer funktioniert.

Typo3-Installation absichern

Wie bei jedem öffentlich zugänglichen System sollte man auch bei Typo3 auf die Sicherheit der Installation achten. Die folgenden Tipps und Einstellungen helfen dabei.

Backend

  • entfernen Sie den Standard-Admin-Benutzer "admin" bzw. ändern Sie auf jeden Fall das Default-Passwort ("password")
  • entfernen Sie nicht benötigte Extensions
  • Typo3-Core und Extensions regelmäßig updaten

Install-Tool

generelle Einstellungen

  • ändern Sie das Install-Tool Passwort (Default-Passwort: "joh316")
  • generieren Sie den Encryption-Key neu

Änderung der generellen Konfiguration ("5: All Configuration" / localconf.php)

  • E-Mail-Benachrichtigung bei fehlerhaften Backend-Logins aktivieren
[BE][warning_email_addr] = your@mail.com
[BE][warning_mode] = 0
  • Cookies gegen XSS schützen
[SYS][cookieHttpOnly] = 1
  • Cookies bei HTTPS-Verbindung verschlüsselt senden