[TYPO3-german] RTE nervt - Paragraph, Schachtelung, Absatz-Tags
Uschi Renziehausen
typo3news at otherone.de
Mon Jul 10 19:30:08 CEST 2006
Hi Matthias,
also, man kann Typo3 schon dazu bringen, DIV und P zu unterscheiden.
Dies zu erreichen war meine Hauptbeschäftigung während der letzten zwei
Wochen. Da ich experimentiere, läuft bei mir der RTE derzeit im
Demo-Mode, und darauf müsstest du dann zumindest testeshalber auch mal
umstellen. Sobald ich denn auch die letzte Einstellung verstanden habe,
steige ich um auf Advanced.
Anbei der Code meiner Page TSConfig, soweit er sich auf Transformationen
bezieht. Ich habe das sogar kommentiert, Englisch zwar, aber immerhin.
Dies regelt erst mal nur die Transformationen zwischen RTE und DB, also
gucken, ob der dir genehme Code im phpMyAdmin und in der Textarea des
RTE ankommt.
------------- Page TSConfig Start --------------
# Do not clean code pasted from word processors currently, because we
first have
# to find out what to clean! It is no good to just remove all
formatting, because
# authors will get frustrated when they have to format it all over again.
# Better try and remap what makes sense. On the TODO list!
RTE.default.enableWordClean = 0
# Still not really figured out, but with these settings we will be able
# to put html example code in inline elements.
# NOTE: This only counts for elements, but not for entities!
# Even on JS level there is some unwanted magic when switching between
# html code view and wysiwyg mode
RTE.default.proc.entryHTMLparser_db.htmlSpecialChars = 0
RTE.default.proc {
dontHSC_rte = 1
dontUndoHSC_db = 1
}
# Leave my DIVs and do NOT treat them as paragraphs!
# This can be done by hiding div and p from the central
# parser.
# Unfortunately this means, that <p> will also be stored
# in the database and there are no linebreaks left! No way out of this
# unless one writes a customized central parser!
RTE.default.proc.entryHTMLparser_db.tags.div.remap = box
RTE.default.proc.exitHTMLparser_db.tags.box.remap = div
RTE.default.proc.entryHTMLparser_db.tags.p.remap = para
RTE.default.proc.exitHTMLparser_db.tags.para.remap = p
RTE.default.proc.entryHTMLparser_rte = 1
RTE.default.proc.exitHTMLparser_rte = 1
# Elements generally allowed
# If you decide to keep your p and div elements on the way to the
database by
# mapping them to some fancy tag (here box and para), make sure that
those fancy
# tags are members of this list!
RTE.default.proc.allowTags = box, para, a, abbr, acronym, address,
blockquote, b, br,caption, cite, code, dfn, dl, dt, dd, div, em, h1, h2,
h3, h4, h5, h6, hr, i, img, kbd, li, link, ol, p, pre, q, sdfield, span,
strong, sub, sup, table, thead, tbody, tfoot, td, th, tr, tt, ul, var
RTE.default.proc.entryHTMLparser_db.allowTags < RTE.default.proc.allowTags
RTE.default.proc.entryHTMLparser_rte.allowTags < RTE.default.proc.allowTags
RTE.default.proc.exitHTMLparser_db.allowTags < RTE.default.proc.allowTags
RTE.default.proc.exitHTMLparser_rte.allowTags < RTE.default.proc.allowTags
# Make sure that the fancy elements box and para are in the list
# of allowedTagsOutside, because if not so, they will be wrapped
# in <p>-elements
RTE.default.proc.allowTagsOutside = hr, address, box, para
# I do not know why, but without the allowTagsOutside defined for
entryHTMLparser_rte
# and exitHTMLparser_rte the div-elements are preceded with <p></p>
after loading the
# content from the database for the first time, and if you then store
the content again,
# you end up with <p> </p>.
RTE.default.proc.exitHTMLparser_rte.allowTagsOutside <
RTE.default.proc.allowTagsOutside
RTE.default.proc.entryHTMLparser_rte.allowTagsOutside <
RTE.default.proc.allowTagsOutside
# Not sure yet. We will see
RTE.default.proc.entryHTMLparser_db.keepNonMatchedTags = 0
RTE.default.proc.HTMLparser_db.xhtml_cleaning = 1
------------------------- Page TSConfig End ---------------------------
So, und nun musst natürlich noch der Weg von der DB zum Frontend
angepasst werden.
------------------------- Page Template -------------------------------
## no class="bodytext" for every P
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes >
## do not remap DIVs to P
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag.DIV >
lib.parseFunc.denyTags >
lib.parseFunc_RTE.denyTags >
## make DIV an externalBlocks.tag and call parseFunc_RTE recursivly
lib.parseFunc_RTE.externalBlocks.div.callRecursive=1
## do not autolink every string that starts with http or mailto even
# if the author did not want one
lib.parseFunc_RTE.makelinks >
lib.parseFunc_RTE.externalBlocks.ul.stdWrap.parseFunc.makelinks = 0
lib.parseFunc_RTE.externalBlocks.ol.stdWrap.parseFunc.makelinks = 0
## do not add class="contenttable" to every table cell!
lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class
>
## avoid unwanted p-elements in th/td on the way to FE
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default >
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc
=< lib.parseFunc
---------------------------
Ich hoffe, dass hilft dir weiter. Lies die Kommentare durch, ein paar
Nachteile hat die Methode schon, weil der Content ohne RTE nun schwer zu
editieren ist, aber immerhin, MIT geht es jetzt :))
Liebe Grüße, Uschi
Matthias Süncksen wrote:
> Uschi Renziehausen schrieb:
>> Hallo Matthias und gleichzeitig ein erstes Hallo an alle :)
>>
>> Zunächst mal die Frage, welchen RTE du verwendest (incl.
>> Versionsangabe) und welche TYPO3-Version. Wichtig wäre auch noch (für
>> den Fall, dass es sich um rtehtmlarea >= 1.3.7 handelt), ob du bei der
>> Konfiguration typical oder demo ausgewählt hast.
>>
> Hi, danke für deine Antwort.
>
> Die Version hier ist 1.4.1 und ausgewählt ist 'typical'. Meine TS-Config
> hatte noch
> RTE.default { ... } drum herum, hatte ich nur nicht geschrieben.
>
> Aus euren Antwort entnehme ich, dass der RTE sich damit im HTML-
> standardkonformen Bereich bewegt.
>
> Ich vermute aber, dass er dasselbe macht, wenn ich die <h3> und <ul> Tags
> nicht im <p>-Block sondern im <div>-Block befinden, wo sie doch
> erlaubt sein dürften.
>
>>> hat hier möglicherweise jemand eine Lösung für einige
>>> Standard-Annoyances vom RTE..?
>>>
>>> Nicht erlaubt ist leider:
>>> <p> <h3>text ..</h3></p>
>>>
>>
>> Ich gebe ja zu, dass RTE-Konfiguration so ähnlich ist wie CIA-Computer
>> hacken, aber in diesem Falle hat der RTE recht! Innerhalb von <p> kann
>> kein <h3> stehen. Willst du das aus Formatierungsgründen haben? In dem
>> Fall hilft dann CSS weiter. Gehe ich recht in der Annahme, dass du die
>> Abstände nach oben und unten vergrößern willst? In dem Fall hilft in
>> der CSS z.B.: h3 {margin-top: 1em; margin-bottom: 1em}
>>
>
> Ich habe hier die Aufgabe, eine größere Menge an bestehendem HTML-Content
> nach Typo3 zu migrieren, als Typo3-XML-Import. Das bestehende HTML kann
> ich zwar in gewissen Grenzen vorab konvertieren..
>
> Zu deiner Frage, was ich formattechnisch erreichen möchte: das
> RTE-<p></p>-Wrapping
> erzeugt Leerzeilen, wo ich leider gar keine gebrauchen kann. Und die
> alleinstehenden
> <br/> hätte ich gern so gehabt, wie sie sind.
>
> Ich habe gerade mit dieser TS-Config experimeniert:
>
> rte.default.proc.remapParagraphTag = div
> rte.default.proc.useDIVasParagraphTagForRTE = 1
>
> .. aber der RTE nimmt die <H3> auch aus <div>-Blöcken wieder heraus.
>
> Ich werde jetzt einmal überlegen, ob ich vor meinem Import die <H3>-Tags
> nicht
> in <span class="h3"> konvertiere.
>
> fg,
> Matze
>
>
>
>>> Der RTE macht daraus:
>>> <p></p>
>>> <h3>text..</h3> <p></p>
>>>
>>> Nicht erlaubt ist offenbar:
>>> <br>
>>> <h3>text..</h3>
>>> <br>
>>>
>>
>> Du schreibst weiter unten, in deiner Page TSConfig stünde
>>
>> proc.dontConvBRtoParagraph = 1
>>
>> Der vollständige Objektpfad muss lauten:
>> RTE.default.proc.proc.dontConvBRtoParagraph = 1
>>
>> Außerdem solltest du besser sauberes XHTML schreiben, also <br/> statt
>> <br>
>>
>>
>>
>>> Auch nicht möglich:
>>> <p>
>>> <ul> ..
>>> </ul>
>>> </p>
>>>
>>
>> Auch dein Fehler: Ein <ul> ind <p> ist meines Wissens nicht erlaubt.
>> Was willst du denn mit diesem Markup erreichen? Wahrscheinlich ist
>> auch hier CSS dein Freund.
>>
>>
>>
>>> Und so weiter und so fort. Der RTE erlaubt offenbar keine
>>> Schachtelung von HTML, Tags, die er irgendwie als
>>> Absätze klassifziert.
>>>
>>
>> Das ist richtig! Und dummerweise rechnet er auch DIV als Absatz,
>> eigentlich aber nicht so sehr der RTE, sondern vielmehr der
>> Transformationsmechanismus von TYPO3, der deinen Content auf dem Weg
>> von der Datenbank zum RTE und wieder zurück verwandelt, und dann gibt
>> es natürlich auch noch eine Umwandlung des Contents auf dem Weg von
>> der Datenbank zum Frontend.
>>
>> Es gibt durchaus Wege aus der Misere, aber sag erstmal, was du
>> eigentlich formattechnisch erreichen willst, sonst wird das hier zu
>> 'glaskugelig'.
>>
>> Liebe Grüße, Uschi
>>
>>
>>
>>
>>> In der TS-Page-Config steht bereits:
>>> removeTrailingBR = 0
>>> proc.dontConvBRtoParagraph = 1
>>>
>>>
>>> Beste Grüße,
>>> Matze
>>>
>>>
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.netfielders.de
>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>>
>>
>
More information about the TYPO3-german
mailing list