TYPO3 Quickies und Snippets

50 Sprachen online kostenlos lernen - auch als APP

TYPO3 Quicktipps und Snippets

Eine Sammlung sehr spezieller Tipps und Tricks für TYPO3.


1. Einem Redakteur nicht erlauben alle Überschriften zu verwenden

Man kann in der PAGE TSConfig angeben, dass Elemente aus der Auswahlbox des RTE entfernt werden sollen, also beispielsweise

RTE.default.buttons.formatblock.removeItems = h1 #(h1 wird aus der Select-Box entfernt).

Um PAGE TSConfig für User zu benutzen trägt man es im USER TSConfig ein und setzt einfach ein "page." davor, also

page.RTE.default.buttons.formatblock.removeItems = h1

2. Typoscript CONDITION - Admin oder Redakteur?

Manchmal möchte man bestimmte Setups (PAGE-TS oder USER-TS) davon abhängig machen, ob der aktuelle User ein Admin ist oder nicht. Dazu gibt es eine einfache TS-Condition

[adminUser = 0]
  TCEFORM.tt_content.header_layout.removeItems = 0,1,2,3,4,5,6
[global]

Diese wird nur ausgeführt, wenn der User kein Admin ist. Für Admins aus der 0 eine 1 machen (das Beispiel entfernt aus der Auswahlbox "Header / Type" alle Einträge)

3. Das Pipe-Zeichen | im Typoscript verwenden

Das Pipe-Zeichen (senkrechter Strich |) wird gerne als Trenner - zum Beispiel in einem Seitentitel verwendet. Das Zeichen hat aber in Typoscript eine besondere Bedeutung. Daher muss das Zeichen ASCII-codiert werden wenn man es verwenden möchte. Beispiel:

headerData.10.wrap = <title>Mein Seitentitel &#124 ; | Mein-Domain-Titel.de</title>

Wichtig: Das Leerzeichen vor dem ";" muss entfernt werden und dient nur der korrekten Ausgabe hier im Beispiel.

4. Tags innerhalb des A-Tags bei einem TMENU

Bei modernen Layouts (vor allem Bootstrap) kommen häufig Tags (meist SPANS) innerhalb des A-Tag vor. Um dies im Typoscript zu ermöglichen geht man so vor:

NO.wrapItemAndSub = <li>|</li>
NO.linkWrap = <span class="meine-klasse">|</span>
NO.ATagBeforeWrap = 1 

Durch den letzten Eintrag wird bewirkt, dass Wrap in den A-Tag geht und nicht umgekehrt.

5. Links im RTE mit Klasse versehen

Manchmal möchte man Links die man im RTE setzt speziell formatieren. Eine einfache Möglichkeit ist es, ihn bei Bedarf mit einer Klasse zu versehen.

RTE.default.classesAnchor := addToList(mein-speziallink)
 RTE.default.proc.allowedClasses := addToList(mein-speziallink)
 RTE.default.classesAnchor.mein-speziallink {
 class = mein-speziallink
 type = page
 titleText = LLL:fileadmin/labels/rte.xml:error
 }

Diesen Code trägt man ins TS-Setup der root-Seite ein. Erzeugt man jetzt im RTE einen Link, dann hat man in der Auswahlliste des Link-Typs einen neuen Eintrag (hier: mein-speziallink). Dieser wird dann mit der entsprechenden Klasse versehen und kann per CSS formatiert werden.

6. Strong und em statt b und i im RTE

Die Zeiten ändern sich - und ebenso sollte man sich endlich mal abgewöhnen die HTML Tags B und I zu verwenden. Modern ausgedrückt heissen die einfach STRONG und EM. Das blöde daran: TYPO3 will nicht standardmäßig modern. Wir müssen also in den Seiteneigenschaften der root-Seite ins TS-Setup einen kleinen Eintrag machen, damit es auch funktioniert.

RTE.default.proc {
  exitHTMLparser_db = 1
  exitHTMLparser_db {
    tags.b.remap = strong
    tags.i.remap = em
  }
} 

7. Typolink im Content-Element HTML verwenden

Manchmal muss es schnell gehen. Das Content-Element HTML ist dann fast immer passend, weil man die Formatierung ja direkt im HTML-Code angeben kann. Problem: Das Element versteht bloß hardcodierte Links. Typolinks in der Form <LINK 12>Test</LINK> gibt es einfach direkt aus ohne den Link zu formatieren.

Der nachfolgende Eintrag ins TS-Setup parst unseren LINK-Eintrag wie jeden anderen Link - funktioniert also auch mit RealURL.

tt_content.html.parseFunc.tags.link < lib.parseFunc.tags.link

7. Den Default-wrap aus CSS-STYLED-CONTENT um HTML Elemente entfernen

Die Standarderweiterung CSS STYLED CONTENT spart einem viel Arbeit - nervt aber auch an manchen Stellen. Zum Beispiel ist der DIV-wrap um Contentelemente des Typs HTML meist sinnlos und stört, wenn man etwa selbst neue DIVs aufmachen und schließen möchte. Folgender Typoscript macht damit Schluss.

# Default wrap um HTML-Elemente entfernen
tt_content.stdWrap.innerWrap.if { 
    value = html
    isInList.field = CType 
    negate = 1 
}