[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>&nbsp;</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