---
title: "RTE übernimmt keine Formatierungen?"
url: "https://www.typo3.net/d/81339-rte-uebernimmt-keine-formatierungen"
source: "typo3.net"
tags: ["Backend","RTE & CKEditor","Frage"]
created: "2008-09-02"
last_reply: "2010-08-11"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# RTE übernimmt keine Formatierungen?

Backend › RTE & CKEditor · 1 Antwort · gestartet 2008-09-02

## Eröffnungsbeitrag

**fuzz** · 2008-09-02 · [Beitrag #1](https://www.typo3.net/d/81339-rte-uebernimmt-keine-formatierungen/1)

Hallo,

habe ein nerviges Problem mit dem RTE. Sobald ich RTE.default.useCSS = 1
verwende wird kein **B** usw. mehr übernommen und einfach beim speichern entfernt. Des weiteren speichert der RTE grundsätzlich (ob useCSS 1 oder 0) nicht die Textfarbe :-(

Was mache ich falsch?

Hier meine TSconfig für den RTE...

```typoscript
  # Content Stylesheets für den RTE
  RTE.default.contentCSS = fileadmin/templates/styles/rte.css
  
  # CSS anstatt FONT-Tag fuer Firefox
  RTE.default.useCSS = 1
  
  # Texte aus MS Word werden gesaeubert
  RTE.default.enableWordClean = 1

  # Nur bestimmte Buttons einblenden
  #RTE.default.showButtons = bold,italic,strikethrough,sub,sup,cut,copy,paste,search, replace,bullist,numlist;undo,redo,typo3link,unlink,anchor,typo3image, table,visualaid,emotions,flash,advhr,hr,removeformat,charmap,insertdate, inserttime,help,cleanup;code,forecolor,insertlayer,absolute,moveforward, movebackward,visualchars,cite,abbr,acronym,media
  RTE.default.showButtons (
    bold, italic, link, removeformat, undo, table,
    rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
    columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit,
    cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge
  )
 
  # Sonstige Einstellungen
  RTE.default.hideTags = font,font (full)
  RTE.default.showTagFreeClasses = 0
  RTE.default.classesCharacter = 
  RTE.default.classesImage =
  RTE.default.classesAnchor =
  RTE.config.tt_content.bodytext.proc.allowedClasses < RTE.default.classesCharacter
  RTE.default.showStatusBar = 1
  RTE.default.proc {
    overruleMode = ts_css
    dontConvBRtoParagraph = 1
    allowTagsOutside = img,hr
    allowTags = table,tbody,tr,th,td,h1,h2,h3,h4,h5,h6,div,p,br,span,ul,ol,li,pre, blockquote,strong,em,b,i,u,sub,sup,strike,a,img,nobr,hr,tt,q,cite,abbr, acronym
    keepPDIVattribs = align,class,style
    HTMLparser_rte.allowTags < RTE.default.proc.allowTags
    HTMLparser_rte.keepNonMatchedTags = 0    
    entryHTMLparser_db = 1
    entryHTMLparser_db {
    entryHTMLparser_db.xhtml_cleaning = 1
    entryHTMLparser_db.noAttrib = b,i,u,strike,sub,sup,strong,em,quote,blockquote,cite,tt,br,center
    entryHTMLparser_db.tags.font.allowedAttribs = color,style
    entryHTMLparser_db.tags.hr.allowedAttribs = class
    entryHTMLparser_db.tags.b.remap = strong
    entryHTMLparser_db.tags.i.remap = em
    entryHTMLparser_db.rmTagIfNoAttrib = span,div,font
    #entryHTMLparser_db.htmlSpecialChars = 1
  }
```

Danke!

## Antworten

### [#2](https://www.typo3.net/d/81339-rte-uebernimmt-keine-formatierungen/2) · googol · 2010-08-11

Hallo,

Meine TS-Config mit der das funktioniert ist diese:

```typoscript
# Um zu sehen welche Konfiguration für TS_CONIG gerade gilt geht man auf Web -> Info, wählt die erste Seite aus (also Root) und
# statt "Seitenbaumübersicht" im Dropdown Feld "Seiten-TSconfig"

####################################################################
#####################################################################

TCEFORM.tx_templavoila_tmplobj.rendertype.addItems.spezial = Spezialdarstellung

#####################################################################
# (kopie 1) wird beim kopieren nicht mehr angezeigt

TCEMAIN.table.tt_content {
    disablePrependAtCopy = 1
}
#####################################################################

############################################################
############################################################

# mod.web_layout.defLangBinding = 1

mod.SHARED{
    defaultLanguageFlag = at.gif
    defaultLanguageLabel = Deutsch
}

############################################################
############################################################


#*** RTE Classe des Interface (Ausrichtung)
RTE.classes {
    align-left {
#       name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyleft
        name = Linksbündig
       value = text-align: left;
    }
    align-center {
#       name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifycenter
        name = Zentriert
       value = text-align: center;
    }
    align-right {
#       name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyright
        name = Rechtsbündig
       value = text-align: right;
    }
    fusszeile {
        name = Fusszeile
       value = text-size: 10px;
    }     

    first-column {
        name = Erste Spalte
    }
        
    odd {
        name = Ungerade Zeile (1., 3., 5., ...)
    }
    even {
        name = Gerade Zeile (2., 4., 6., ...)
    }
}

RTE.classesAnchor {
   # ******************************************
   # EIGENE:
   # ******************************************

   internalLinkMetaEben {
       class = MetaMenuItem
       type = page
       titleText = Interner Link zur Metaebene
   }

   # ******************************************
   # DEFAULT:
   # ******************************************

   externalLink {
       class = external-link
       type = url
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:external_link_titleText
   }

   externalLinkInNewWindow {
       class = external-link-new-window
       type = url
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:external_link_new_window_titleText
   }

   internalLink {
       class = internal-link
       type = page
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:internal_link_titleText
   }

   internalLinkInNewWindow {
       class = internal-link-new-window
       type = page
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:internal_link_new_window_titleText
   }

   download {
       class = download
       type = file
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:download_titleText
   }

   mail {
       class = mail
       type = mail
       titleText = LLL:EXT:rtehtmlarea/htmlarea/plugins/TYPO3Browsers/locallang.xml:mail_titleText
   }
}

RTE.default {
    contentCSS = /fileadmin/css/rte_styles.css
  
    # useCSS
    # (htmlArea RTE only)
    # 	
    # boolean
    # 
    # Specifies that Mozilla/Firefox should use style attributes or not.
    # When enabled, Mozilla/Firefox use span tags with style attributes
    # rather than tags such as b, i, font, etc.
    # 
    # Default: 0

    # Wenn RTE.default.useCSS = 1 eingestellt ist macht:
    # Firefox: <span style="font-weight: bold;">asdf</span>
    #         <p style="font-weight: bold;">asd</p>
    # Safari: <b>asdf</b>
    useCSS = 0

# zeige alle CSS-Klassen die in style_rte.css vorhanden sind im RTE an
    #(Dropdown-Box - Absatz) 
#    showTagFreeClasses = 1

  # Verwende im RTE den benutzerdefinierten Stylsheet und ueberschreibe die
  # vorgegebenen Standardformateierungen des RTE
#    ignoreMainStyleOverride = 1

# Man könnte die Klassen (inklusive der Default-Klassen) explizit definieren.
#    classesLinks = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
#    classesAnchor = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail, internal-link-alternative
# Besser ist allerdings wenn man es so macht:
    classesAnchor := addToList(MetaMenuItem)
 
    classesTD = first-column, fusszeile, align-left, align-center, align-right, align-justify, valign-top, valign-middle, valign-bottom
    classesTR = odd, even
    classesParagraph = kleineSchrift, fusszeile
  
    # Tabellen Optionen in der RTE Toolbar
    hideTableOperationsInToolbar = 0
    keepToggleBordersInToolbar = 1
  
    # Tabellen Editierungs-Optionen aktivieren
    disableSpacingFieldsetInTableOperations = 0
    disableAlignmentFieldsetInTableOperations = 0
    disableColorFieldsetInTableOperations = 0
    disableLayoutFieldsetInTableOperations = 0
    disableBordersFieldsetInTableOperations=0
  
    enableWordClean = 1
    disableEnterParagraphs = 0
    
    showButtons (
  
        textstylelabel, textstyle,
        blockstylelabel, blockstyle,
    
        bold, italic, underline, subscript, superscript, left,
        center, right, justifyfull, orderedlist, unorderedlist,
        link, removeformat, copy, cut, paste,
        undo, redo, showhelp,
    
        inserttag, acronym,
        chMode, inserttag, formatblock, strikthrough, insertcharacter, line,        
  
    )
  
    hideButtons (
   
        emoticon, textcolor, bgcolor, user, 
        fontstyle, fontsize, image,  outdent,  indent, lefttoright, righttoleft, findreplace, about, textindicator, 
        
        table, toggleborders, tableproperties, rowproperties,
        rowinsertabove, rowinsertunder, rowdelete, rowsplit,
        columninsertbefore, columninsertafter, columndelete,
        columnsplit, cellproperties, cellinsertbefore,
        cellinsertafter, celldelete, cellsplit, cellmerge,    
  
    )
  
    #fontstyle, fontsize werden ins html geschrieben, deshalb rausgenommen
  
    # Absatz-Formatierungen:
    # ----------------------
    # H1 sollte man eventuell aus semantischen Gründen rausnehmen (Überschrift Inhaltselemente ist schon H1). Voteil wenn es drinnen ist - man kann auch nach einem
    # graphischen Element noch eine H1 machen.
    #
    # Ausgeblendet im Moment:
    #         PRE ... Vorformatiert
    #  BLOCKQUOTE ... Zitat
    #         DIV ... Behälter
    #     ADDRESS ... Adresse
    #          H4 ... Überschrift 4
    #          H5 ... Überschrift 5
    #          H6 ... Überschrift 6
    #
    # hidePStyleItems ist die alte Variante zum Verbergen von Absatz-Formaten. Bug in diesem Zusammenhang: "0007857: hidePStyleItems does not work anymore" 
    # hidePStyleItems = PRE, BLOCKQUOTE, DIV, ADDRESS, H4, H5, H6
    buttons.formatblock.removeItems = PRE, BLOCKQUOTE, DIV, ADDRESS, H4, H5, H6
  
    #Für sauberes html rausgenommen
    hideTags = font, font (full)
  
    showStatusBar = 1
  
    ###############################################################################
    # RTE.default.proc -  ist ein Objekt, das die Konfiguration für die
    #                     Transformation des Inhaltes zwischen RTE-Feld und Datenbank
    #                     beinhaltet. Die Konfigurationsoptionen gelten für alle in
    #                     TYPO3 verwendbaren RTEs und werden über die Klasse
    #                     t3lib_parsehtml_proc gesteuert.
    ###############################################################################
  
    proc { 
        // TRANSFORMATION METHOD - Überschreibe CSS Angaben aus dem TypoScript
        overruleMode = ts_css
    
        // LINES CONVERSION - br wird nicht zu p konvertiert
        dontConvBRtoParagraph = 1
    
        // TAGS ALLOWED OUTSIDE P & DIV
        allowTagsOutside = img, hr

        // TAGS ALLOWED
        allowTags = table, tbody, tr, th, td, h1, h2, h3, h4, h5, h6, p, br, span, ul, ol, li, re, blockquote, strong, em, b, i, u, sub, sup, strike, a, img, nobr, hr, tt, q, cite, abbr, acronym
    
        // TAGS DENIED
        denyTags = font, div
    
        // ALLOWED P & DIV ATTRIBUTES -  Erlaubte Attribute in p, div Tags
        keepPDIVattribs = align, class, style
    
        ###############################################################################
        # HTML Parser Einstellungen - Inhalt ins Frontend
        ###############################################################################
    
        // CONTENT TO RTE
        HTMLparser_rte {
            // TAGS ALLOWED
            allowTags < RTE.default.proc.allowTags
            removeTags < RTE.default.proc.denyTags
#            removeTags = font
  
            // DO NOT REMOVE UNMATCHED TAGS
            keepNonMatchedTags = 0
        }

        ###############################################################################
        # Speichere in Datenbank - Inhalt in die Datenbank
        ###############################################################################
        entryHTMLparser_db = 1
        entryHTMLparser_db {   
            ## tags die erlaubt/verboten sind
            allowTags < RTE.default.proc.allowTags
            denyTags < RTE.default.proc.denyTags
        
            # transformBoldAndItalicTags = 1
            
            # removeTags = center, font, link, meta, o:p, sdfield, strike, title, style

            rmTagIfNoAttrib = div, font
        
            # wenn das auf 1 ist wird &nbsp; nicht mehr erlaubt. Also aus & wird &amp; oder aus " wird &quot;
            htmlSpecialChars = 0
            
            ## align attribute werden erlaubt
            tags {
                # p.fixAttrib.align.unset >
                # p.allowedAttribs = id, title, dir, lang, xml:lang, class, align, style
                # p.allowedAttribs.addToList(style)

                # span.fixAttrib.style.unset >
                # span.allowedAttribs = style
          
                div.fixAttrib.align.unset >
          
                hr.allowedAttribs = class
            }
        }
        
        # http://typo3.sfroemken.de/typo3-tutorials/rte/weitere-beispiele/b-und-i-zu-strong-und-em.html
        # Der RTE kann zwar strong-Bereiche anzeigen, aber der Button zum Fett machen kann nur b-Tags verarbeiten. Genau so auch der Button für kursiv. Dieser
        # kann nur i-Tags verarbeiten...nicht aber em-Tags.
        # In der Transformation vom RTE zum Datenbank werden alle strong-Tags automatisch in b-Tags umgewandelt. Das könnt Ihr mit dem Code-Button mal selbst
        # ausprobieren. Heißt: Wenn ich wie im oberen Beispiel den entryHTMLparser_db verwende. Dann habe ich zwar mein strong aber durch die Transformation
        # landet wieder ein b-Tag in der Datenbank. Also müssen wir auf den exitHTMLparser_db umsteigen. Hier können die Ausgaben der Transformation nochmals
        # nachbearbeitet werden.
        # Wenn ich meinen Datensatz allerdings erneut öffne, dann landet ein strong-Tag im RTE. Wie ich oben bereits erklärt habe, kann der RTE strong zwar
        # anzeigen nicht aber mit den Buttons verarbeiten. Also müssen wir mit einem zweiten HTMLparser den strong-Tag aus der Datenbank wieder in einen b-Tag
        # konvertieren. 

		exitHTMLparser_db = 1
		exitHTMLparser_db {
#			allowTags = p,b,i,strong,em,blockquote,pre,h1,h2,h3,h4,h5,h6,span,div,address

            allowTags < RTE.default.proc.allowTags
            denyTags < RTE.default.proc.denyTags

			tags {
				b.remap = strong
				i.remap = em
			}
		}
		exitHTMLparser_rte = 1
		exitHTMLparser_rte {
#			allowTags = p,b,i,strong,em,blockquote,pre,h1,h2,h3,h4,h5,h6,span,div,address

            allowTags < RTE.default.proc.allowTags
            denyTags < RTE.default.proc.denyTags

			tags {
				strong.remap = b
				em.remap = i
			}
		}

    }
}

RTE.config.tt_content.bodytext {
    # Muss definiert werden, sonst wird das in der Datenbank nicht abgespeichert.
    proc.allowedClasses = roteSchrift, kleineSchrift, fusszeile
    classesCharacter = roteSchrift, kleineSchrift, fusszeile
    classesParagraph = roteSchrift, kleineSchrift, fusszeile
}

# Falsch oder veraltet?!
#RTE.default {
#    classesParagraph = addToList(zitat)
#    proc.allowedClasses = addToList(zitat)
#   
#    # siehe oben ausführlich
#    classesCharacter = addToList(zitat. roteSchrift)
#    classesCharacter = roteSchrift, sehrGross
#   
#    classesImage = blauerRand, 10pxAbstand
#    classesAnchor = intern, extern, mailto
#   
#    # Erlaubte span Klassen aus der CSS-Datei (span wird somit nicht wegparsed)
#    tt_content.bodytext.proc.allowedClasses = zitat, roteSchrift, sehrGross
#}


#*** RTE Farben (Ausrichtung)

# Farbe aus vordefiniertem Farbverlauf deaktivieren
RTE.default.disableColorPicker = 1

# Benutzerdefinierte Farben erstellen
RTE.default.disableSelectColor = 0
RTE.colors {
    grau {
        name = Tabellen Überschrift
        value = #DDDDDD
    }
    blau {
        name = Standard Farbe
        value = #4C6A90
    }
    frenken {
        name = Std. Frenkendorf
        value = #7B95BA
    }
    stein {
        name = Std. Münchenstein
        value = #94AEC9
    }
}
# RTE.default.colors = grau, blau, frenken, stein



#####################################################################
# Rahmen abschalen / Frame (neues Feld im root_setup.ts)

# TCEFORM.tt_content.section_frame {
#     removeItems = 1,5,6,10,11,12,20,21
# } 

# neuen Rahmen hinzufuegen
# TCEFORM.tt_content.section_frame {
#     addItems.100 = Produkt drucken
#     addItems.110 = Normale Box
#     addItems.120 = Kleine Box
#     addItems.130 = Keine Box
#} 




#####################################################################
# FCE für das Frontendediting aktivieren

mod.wizards.newContentElement.wizardItems.special.elements.fce {
	icon = gfx/c_wiz/div.gif
	title = Flexible Content Element
	description = Specially developed Content Element
	tt_content_defValues {
		CType = templavoila_pi1
		tx_templavoila_to = 3
		tx_templavoila_ds = 3
	}
}
 
mod.wizards.newContentElement.wizardItems.special.show := addToList(fce)
```

Die /fileadmin/css/rte_styles.css dazu schaut so aus:

```css
/* Aktivieren falls im RTE für den Newsletter eigene Styles verwendet werden sollen */
/* @import url(newsletter_rte_styles.css); */

/*
.external-link-new-window a, 
.mail a,
*/

/* !General */
/* ---------------------------------------------------------------------- */

td.fusszeile,
p.fusszeile {
                   font-size : 10px;
}

/* Hintergrundfarbe für den RTE-Editor */
.htmlarea-content-body,
.htmlarea-content-body p {
            background-color : #C2FFC2; /* #FFFFFF; */
}

body, /* Schriftfarbe für den RTE-Editor beim erstmaligen Editieren eines Elementes - zu diesem Zeitpunkt verwendet der RTE-Editor noch kein P-Tag */
td,
li,
p,
.bodytext,
.lauftext {
	font-size:11px;
	font-style:normal;
	line-height:15px;
	font-weight:normal;
	font-variant:normal;
	text-transform:none;
	color:#70717d;
	text-decoration:none;
	
	padding-top:0;
	padding-bottom:0;
	padding-left:0;
	padding-right:0;
	margin-top:0;
	margin-bottom:0;
	margin-left:0;
	margin-right:0;
}

.csc-firstHeader,
h1,
.headline {
    color: #ff0080;
	font-size: 21px;
	line-height:normal;
	font-style:normal;
	font-weight: normal;
	font-variant:normal;
	text-transform:none;
	padding: 0px;
	margin-top:0;
	margin-bottom:8px;
	margin-left:0;
	margin-right:0;
	text-decoration:none;
	text-align:left;
}

h2 {
	font-size: 18px;
	font-style:normal;
	line-height:normal;
	font-weight:bold;
	font-variant:normal;
	text-transform:none;
	color:#006ab3;
	text-decoration:none;
}

h3 {
	font-size:11px;
	font-style:normal;
	line-height:normal;
	font-weight:bold;
	font-variant:normal;
	text-transform:none;
	color:#006ab3;
	text-decoration:none;
}

h4 {
	font-size:11px;
	font-style:normal;
	line-height:normal;
	font-weight:bold;
	font-variant:normal;
	text-transform:none;
	color:#006ab3;
	text-decoration:none;
}

h5 {
	font-size:11px;
	font-style:normal;
	line-height:normal;
	font-weight:bold;
	font-variant:normal;
	text-transform:none;
	color:#70717d;
	text-decoration:none;
}

h6 {
	font-size:9px;
	font-style:normal;
	line-height:normal;
	font-weight:normal;
	font-variant:normal;
	text-transform:none;
	color:#70717d;
	text-decoration:none;
	padding-top:0;
	padding-bottom:0;
	padding-left:0;
	padding-right:0;
	margin-top:0;
	margin-bottom:0;
	margin-left:0;
	margin-right:0;
}

/* !Links */
/* ---------------------------------------------------------------------- */

a,
a:link,
a:visited,
a:active {
	font-size:11px;
	font-style:normal;
	line-height:15px;
	font-weight:normal;
	font-variant:normal;
	text-transform:none;
	color:#70717d;
	text-decoration:underline;
}

a:hover {
	color:#006ab3;
	text-decoration:underline;
}

a:focus {
	outline:none;
}


/* !More */
/* ---------------------------------------------------------------------- */

td.first-column,
.td.first-column {
	width:60px;
	background-color:#FF0000;
}

td.align-left,
p.align-left {
	text-align:left;

/*
	padding-top : 0px;
	padding-bottom : 0px;
	padding-left : 0px;
	padding-right : 0px;

	margin-top : 0px;
	margin-bottom : 0px;
	margin-left : 0px;
	margin-right : 0px;
*/
}

td.align-center,
p.align-center {
	text-align:center;
}

td.align-right,
p.align-right {
	text-align:right;
}

td.valign-top {
	vertical-align:top;
}

td.valign-middle {
	vertical-align:middle;
}

td.valign-bottom {
	vertical-align:bottom;
}

.contenttable {
	border:0;
	width:100%;
}

/*
Die Klasse .contenttable wird erst im Frontend hinzugefügt. 
Deshalb muss hier auch td (für das Backend angegeben werden) 
Die klasse td wird in styles.css für das Frontend wieder überschrieben 
mit padding : 0px !important;
*/
td,
.contenttable td {
	padding:2px;
	vertical-align:top;
}

.contenttable td {
	border:1px solid #ECECEC;
/*
	vertical-align : top;
	line-height : 16px;
*/
}

tr.odd,
.tr-odd {
}

tr.even,
.tr-even {
	background-color:#F4F4F4;
}

.contenttable thead tr,
.contenttable thead tr .bodytext,
.tr-0,
.contenttable .tr-0 td {
	background-color:#F4F4F4;
	font-weight:bold;
/*
	color : #FFFFFF;
*/
}

.td-0 {
}

.td-1 {
}

.td-last {
}

.td-2 {
}

.tr-1 {
}

.td-0 {
}

.td-1 {
}

.td-last {
}

.td-2 {
}

.tr-even {
}

.tr-2 {
}

.td-0 {
}

.td-1 {
}

.td-last {
}

.td-2 {
}

span.roteSchrift {
	color:#FF0000;
}

span.sehrGross {
	font-size:300%;
}

p.kleineSchrift,span.kleineSchrift {
	font-size:80%;
/*
	font-size : 0.8em;
*/
}

.internal-link-alternative-farbe {
	color:darkgreen!important;
}
```

Gruss,

Philipp

---

Quelle: „RTE übernimmt keine Formatierungen?“, typo3.net, https://www.typo3.net/d/81339-rte-uebernimmt-keine-formatierungen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
