Hi Mik3e,
ich bin derzeit gerade mit dem selben Problem beschäftigt.
Mein derzeitiges Setup schaut so aus:
RTE.default.proc {
dontConvBRtoParagraph = 1
keepPDIVattribs = class, style, align, id
remapParagraphTag =
overruleMode = ts_images, ts_links, ts_reglinks
}
# Angaben, wie die Ausrichtungen (left, center, right)
# dargestellt und behandelt werden sollen
RTE.classes {
align-left {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyleft
value = text-align: left;
}
align-center {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifycenter
value = text-align: center;
}
align-right {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyright
value = text-align: right;
}
}
# Wenn man in der Basiskonfiguration die Option
# 'Enable links accessibility icons' angewählt hat, werden nach dem
# Einfügen von Links im RTE kleine Icons vor diesen platziert
# Mit den folgenden Angaben können diese leicht wieder entfernt
# oder gar durch eigene Bilder ausgetauscht werden, indem man
# beispielsweise schreibt:
# image = fileadmin/templates/images/icon.gif
RTE.classesAnchor {
internalLink {
class =
type = page
image >
titleText >
}
externalLink {
class =
type = url
image >
titleText >
}
externalLinkInNewWindow {
class =
type = url
image >
titleText >
}
internalLinkInNewWindow {
class =
type = page
image >
titleText >
}
download {
class =
type = file
image >
titleText >
}
mail {
class =
type = mail
image >
titleText >
}
}
# Default-Konfiguration
RTE.default {
# Der Inhalt im RTE lässt sich getrennt mit einem Stylesheet
# versehen, das hier angegeben werden kann
#contentCSS = fileadmin/css/rte_style.css
# Beim Kopieren von Text aus Word und anderen
# Textverarbeitungsprogrammen werden leider nicht nur der sichtbare
# Text, sondern auch unsichtbare Formatierungen mitgenommen, was zu
# unerwünschten Formaten führt. Dieser Eintrag versucht das
# meiste davon zu bereinigen.
enableWordClean = 1
# Entfernt ein <br>, das am Anfang eines Blockelementes steht.
removeTrailingBR = 1
# entfernt HTML-Kommentare aus dem Quelltext. Dies ist besonders dann
# ganz hilfreich, wenn man Text aus HTML-Seiten kopiert und
# damit u.U. unsichtbare HTML-Kommentare mitkopiert hat.
removeComments = 1
# Folgende Tags werden entfernt, wenn man vom Quelltext-Modus in den
# HTML-Modus umschaltet
removeTags = center, font, o:p, sdfield, strike, u
# Folgede Tags UND deren Inhalt werden entfernt
removeTagsAndContents = style,script
# Buttons, die in der RTE-Oberfläche angezeigt werden.
# Die Position gibt zugleich die Reihenfolge an.
showButtons = textstyle, textstylelabel, blockstyle, blockstylelabel, bold, italic, underline, left, center, right, orderedlist, unorderedlist, insertcharacter, line, link, image, removeformat, chMode, table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, findreplace,insertcharacter, undo, redo, showhelp, about
# Buttons, die NICHT in der RTE-Oberfläche angezeigt werden.
# Die Position gibt zugleich die Reihenfolge an.
hideButtons = fontstyle, formatblock, fontsize, strikethrough, lefttoright, righttoleft, textcolor, bgcolor, textindicator, emoticon, user, spellcheck, inserttag, outdent, indent, justifyfull, subscript, superscript, acronym, copy, cut, paste
# Bewirkt, dass Buttons, die zu einer Gruppe gehören, in einer Zeile
# angezeigt werden. Gruppen werden durch senkrechte Striche
# getrennt. Dies wird allerdings bislang nur von Firefox unterstützt.
keepButtonGroupTogether = 1
# Zeigt unterhalb des RTE-Eingabefeldes eine Statuszeile an, in der
# die Schachtelung der Tags angezeigt wird.
showStatusBar = 1
# Inline-Styles für die Ausrichtung in Absätzen und Tabellenzellen
# hinzufügen
inlineStyle.text-alignment (
p.align-left, h1.align-left, h2.align-left, h3.align-left, h4.align-left, h5.align-left, h6.align-left, td.align-left { text-align:left; }
p.align-center, h1.align-center, h2.align-center, h3.align-center, h4.align-center, h5.align-center, h6.align-center, td.align-center {text-align: center; }
p.align-right, h1.align-right, h2.align-right, h3.align-right, h4.align-right, h5.align-right, h6.align-right, td.align-right { textalign:right; }
)
# Wenn Sie diese Option auf den Wert 1 setzen, wird das oben über
# contentCSS eingebundene Stylesheet verwendet. Dann allerdings
# werden die gerade eben definierten Inline-Styles verworfen.
# Wollen Sie dies umdrehen, so müssen Sie die nachfolgende
# Option auf den Wert 0 setzen
ignoreMainStyleOverride = 1
# Hier wird die Transformation zwischen RTE und Datenbank
# konfiguriert
proc {
# Alle Tags, die überhaupt erlaubt sind und damit in die Datenbank
# geschrieben werden
allowTags = table, tbody, tr, th, td, h1, h2, h3, h4, h5, h6, div, 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, center
# Die hier angegebenen Tags sind nicht erlaubt und werden daher
# nicht in die Datenbank geschrieben, sondern vorher entfernt
denyTags = font
# Wenn Sie nicht wollen, dass <br>-Tags zu <p>-Tags konvertiert
# werden sollen, müssen Sie hier den Wert 1 setzen.
dontConvBRtoParagraph = 1
# Lediglich die folgenden Tags sind außerhalb von <p>-Tags und
# <div>-Tags erlaubt
allowTagsOutside = img,hr, div, p
# Folgende Attribute sind innerhalb von <p>-Tags und <div>-Tags
# erlaubt. Alle anderen Attribute werden entfernt
keepPDIVattribs = align,class,style,id
# Folgende Klassen sind prinzipiell erlaubt
allowedClasses (
external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail, align-left, aligncenter, align-right, author
)
# Generelle Einstellungen für den HTML-Parser
HTMLparser_rte {
# Die Liste der erlaubten Tags wird von oben kopiert
allowTags < RTE.default.proc.allowTags
# Ebenso die Liste der nicht erlaubten Tags
denyTags < RTE.default.proc.denyTags
# Tags, die direkt entfernt werden, sind hier angegeben
removeTags = font
# Dies entfernt die HTML-Kommentare
removeComments = 1
# Tags, die nicht richtig verschachtelt sind, werden entfernt
keepNonMatchedTags = 0
}
# Transformationsweg: Vom RTE in die Datenbank
entryHTMLparser_db = 1
entryHTMLparser_db {
# Die Liste der erlaubten Tags wird von oben kopiert
allowTags < RTE.default.proc.allowTags
# Ebenso die Liste der nicht erlaubten Tags
denyTags < RTE.default.proc.denyTags
# Für folgende Tags sind keine Attribute erlaubt
noAttrib = b, i, u, strike, sub, sup, strong, em, quote, blockquote, cite, tt, br, center
# Diese Tags werden entfernt, wenn sie KEINE Attribute
# aufweisen
rmTagIfNoAttrib = span,div,font
# Sonderzeichen werden in Entities umgewandelt
htmlSpecialChars = 1
## align attribute werden erlaubt
tags {
p.fixAttrib.align.unset >
p.allowedAttribs = class,style,align
div.fixAttrib.align.unset >
hr.allowedAttribs = class
# b und i tags werden ersetzt (em / strong)
b.remap = strong
i.remap = em
## img tags werden erlaubt
img >
}
}
# Transformationsweg: Vom RTE in die Datenbank
exitHTMLparser_db = 1
exitHTMLparser_db {
# Das <b>-Tag wird durch <strong> ersetzt
tags.b.remap = strong
# Das <i>-Tag wird durch <em> ersetzt
tags.i.remap = em
# Alle nun noch vorhandenen Tags, die kein Matching besitzen,
# werden an dieser Stelle behalten, da die unerwünschten Tags
# ohnehin beim Entry bereits herausgefiltert wurden.
keepNonMatchedTags = 1
# Eine doppelte Umwandlung von Sonderzeichen in Entities
# muss verhindert werden.
htmlSpecialChars = 0
}
}
# Folgende Klassen zur Auszeichnung von Absätzen sind erlaubt
classesParagraph (
align-left, align-center, align-right
)
# zeigt alle CSS-Klassen an, die im Stylesheet noch nicht zugeordnet
# wurden
showTagFreeClasses = 1
# Folgende Tags dürfen generell nicht eingefügt werden.
hideTags = font
# Tabellen-Optionen in der RTE Toolbar
hideTableOperationsInToolbar = 0
keepToggleBordersInToolbar = 1
# Tabellen-Editierungs-Optionen (cellspacing / cellpadding / border)
disableSpacingFieldsetInTableOperations = 1
disableAlignmentFieldsetInTableOperations = 1
disableColorFieldsetInTableOperations = 1
disableLayoutFieldsetInTableOperations = 1
disableBordersFieldsetInTableOperations = 0
}
RTE.default.enableWordClean.HTMLparser <
RTE.default.proc.entryHTMLparser_db
# Frontend Konfiguration des RTE
# (wird für die Anzeige des RTE beim Frontend-Editing
# benötigt)
RTE.default.FE < RTE.default
RTE.default.FE.userElements >
RTE.default.FE.userLinks >
# Breite des RTE in Fullscreen-Ansicht
TCEFORM.tt_content.bodytext.RTEfullScreenWidth = 90%
Zusätzlich habe ich noch ein paar weitere RTE Einstellungen:
lib.parseFunc_RTE.nonTypoTagStdWrap >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag.DIV = DIV
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.nonWrappedTag = DIV
#--- Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, pre, p, hr, h1, h2, h3, h4, h5, h6, table, tr, td
Damit erreiche ich zumindest schon einmal, dass die DIV Tags nicht mehr in <p> Tags umgewandelt werden. Allerdings macht er mir aus einer Konstruktion wie:
<div id="news">
<ul>
<li><a href="http://localhost/?id=207">Testlink</a></li>
</ul>
</div>
nach dem Speichern folgendes:
<div id="news"></div>
<ul>
<li><a href="http://localhost/?id=207">Testlink</a></li>
</ul>
<p></p>
<div></div>
<p></p>
Ich bin auch schön langsam am verzweifeln, plage mich da jetzt schon seit Stunden damit rum, und finde keine Lösung um den Müll den der RTE da ergänzt zu entfernen.
Irgendjemand eine Idee???
Vielen Dank
Sares