18.April 2024    
   homeProjekteSoftwareTypo3-Snippets

 

Hobby 234x60
reichelt elektronik – Elektronik und PC-Technik
Seite zuletzt geändert: 13.05.2013 10:53

Typo3-Snippets

Diese Seite enthält ein paar kleine Codesnippets und Notizen für Typo3. Es handelt sich nicht um hochwissenschaftliche Ergüsse, sondern eher um ein ausgelagertes Gedächtnis.

Definieren von Standardzugriffsrechten für neue Seiten

Wenn man z.B. mit Gruppen arbeitet, kommt es immer wieder vor, dass neu angelegte Seiten nicht von anderen bearbeitet werden können, weil nur der Eigentümer die passenden Rechte hat, aber keine Gruppe zugewiesen ist. Das lässt sich durch ein paar Zeilen in der Seiten-TSConfig der Root-Seite anpassen:

TCEMAIN {
  permissions{
    groupid = 6
    user = show, editcontent, edit, new, delete
    group = show, editcontent, edit, new
    everybody = show
  }
}

Bei o.g. Beispiel würde einer neuen Seite automatisch die Gruppe mit der ID 6 zugewiesen und die drei Zugriffsrechte würden vergeben werden.

Cache löschen für Backend-Benutzer (nicht-Admin)

Wenn man einem BE-Benutzer nicht gleich den Admin geben will, gibt es gelegentlich das Problem, dass dieser dann nicht in der Lage ist, den Cache zu löschen (seitenweise oder komplett).

Dafür kann man im TSConfig des Benutzers oder, falls er Mitglied einer Gruppe ist und die ganze Gruppe das Recht bekommen soll, der Gruppe folgendes eintragen:

options.clearCache.pages=1
options.clearCache.all=1

Der Benutzer muss sich dann noch mal neu anmelden, dann hat er die beiden Icons zum Cache-Löschen zur Verfügung.

Weitere Textstile und Blockstile für den RTE definieren

Um weitere Textstile im RTE verwenden zu können, genügen wenige Zeilen im Root-TSConfig. Hier z.B. für einen orangefarbenen Text mit 16px Größe:

RTE.default {
  contentCSS = fileadmin/templates/rte_formate.css
  proc.allowedClasses := addToList(orangetext)
  buttons.textstyle.tags.span.allowedClasses := addToList(orangetext)
}

RTE.classes {
  orangetext {
    name = Orange Text
    value = color: #f18421; font-size: 16px;
  }
}

Zusätzlich muss die oben definierte CSS-Datei angelegt werden und eine passende CSS-Definition enthalten, die dann für das Beispiel so aussieht:

span.orangetext {
  color: #f18421;
  font-size: 16px;
}

Die gleiche Definition muss dann auch die CSS-Datei enthalten, die für das Frontend benutzt wird, sonst wird da zwar der Textstil mit im HTML-Code verankert, aber es hat natürlich keine Auswirkungen auf die Darstellung, da der Browser damit nichts anfangen kann.

Für einen neuen Blockstil sieht das im Wesentlichen gleich aus. Wollen wir z.B. einer Tabelle einen bestimmten class-Namen zuweisen:

RTE.default {
  contentCSS = fileadmin/templates/rte_formate.css
  proc.allowedClasses := addToList(meinetabelle)
  buttons.blockstyle.tags.table.allowedClasses := addToList(meintabelle)
}

RTE.classes {
  meinetabelle {
    name = Meine Tabelle
    value = border: 1px solid red;
  }
}

Und in den CSS-Dateien dann z.B. diese Zeilen:

table.meinetabelle {
  border: 1px solid red;
}

In diesem speziellen Fall wird die Auswahl dann bei den "Tabelleneigenschaften" unter "CSS-Stil" - "Tabelle" zur Verfügung gestellt.

Allerdings wird hierbei (das betrifft aber IMHO nur class-Namen für Tabellen) dann auffallen, dass im Frontend der class-Name, der im Backend so schön einstellbar war, einfach weg ist - da steht im HTML jetzt einfach nur noch "<table class="">". Das lässt sich verhindern, indem man im Setup des Templates diese Zeile einfügt:

lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list >

 

 

Inline CSS mit Typoscript

Wenn man beispielsweise abweichend von den Haupt-CSS-Definitionen für einzelne Seiten andere CSS festlegen will und nicht per Hand eine eigene CSS-Datei dafür schreiben will, kann man auch im Typoscript (im Setup-Bereich z.B. eines ergänzenden seitenspezifischen Templates) mit "cssInline" ein Inline-CSS definieren.

Anders als man beim Namen "cssInline" vermuten könnte, wird die Definition dann aber NICHT mit im HTML-Code verewigt, sondern Typo3 erzeugt selber eine CSS-Datei in typo3temp und bindet diese dann als externe CSS-Definition (mit 'link rel="stylesheet"')in die Seite ein.

Der wesentliche Vorteil gegenüber der selbstgeschriebenen CSS-Datei besteht darin, dass der CSS-Code hier direkt per Typoscript manipuliert werden kann.

page.cssInline {
10 = TEXT
10.value (
div.mainwin {
margin: 4px;
border: 1px solid grey;
}
)
}
 
 
Keine Kommentare
Kommentar hinzufügen

* - Pflichtfeld

*



*
Copyright © 2008-2017