[TYPO3-german] RTE nervt - Paragraph, Schachtelung, Absatz-Tags
Matthias Süncksen
suencksen at xiah.de
Tue Jul 11 15:50:37 CEST 2006
Uschi Renziehausen schrieb:
> 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.
>
>
Danke, vielleicht kann ich das gebrauchen! Interessante Idee das mit
dem Remapping der Tags.
btw, Am Ende steht ja:
RTE.default.proc.entryHTMLparser_db.keepNonMatchedTags = 0
Das musste ich auf "1" setzen, weil der RTE sonst offenbar auch <br/>
für ein "nonMatchtedTag" hält - zumindest löschte er bei mir bei "0"
die <br/> aus einem <div><br/></div> heraus.
/Matze
> ------------- 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
>>>
>>>
>>>
> _______________________________________________
> 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