Zum Inhalt springen

htmlarea - (p class....) entfernen

Erstellt am 4. März 2009 · 10 Antworten · letzte Antwort am 6. März 2009

Tags: Frage

cherry ·

Ich habe in htmlarea das Problem das stets ein <p>-Tag gesetzt sein muss um den Text mit eigenem CSS zu formatieren. Einfach Text schreiben und dann formatieren geht nicht, es MUSS ein <p>-Tag gesetzt sein.
Ergebnis:

<p class="text">Hier steht der Text</p>

Ich möchte jedoch das ich den Editor öffne und direkt, ohne vorher ein <p>-Tag zu setzen Text schreiben kann und diesen dann formatiere.
Also soll es so aussehen:

<span class="text">Hier steht der Text</span>

Meine Konfiguration des Editors sieht aus (verwendet aus einer Beispielkonfiguration):

###############################################################################
#
#--- RTE Konfiguration -------------------------------------------------------
# - fuer die Einstellung TYPICAL des RTE
#
###############################################################################

#-- Aktiviere RTE fuer alle User

setup.default.edit_RTE = 1

###############################################################################
# RTE.default - konfiguriert die RTEs für alle Tabellen, alle Felder und
#               alle Content-Typen. Einstellungen, die mit RTE.default
#               vorgenommen werden, gelten somit nicht nur für Inhalte,
#               die in der Tabelle tt_content gespeichert sind sondern z.B.
#               auch für tt_news.
###############################################################################

RTE.default {

  # Markup Optionen  (Word Foramtierungen entfernen etc.)
     enableWordClean = 1
     removeTrailingBR = 1
     removeComments = 1
     removeTags = sdfield
 
  # Ein- oder Ausblenden des Color Picker bei der Auswahl der Textfarbe
     disableColorPicker = 0
     
  # blendet Statusbar in htmlarea aus      
     showStatusBar =  0

  # Tabellen Editierungs-Optionen (cellspacing/ cellpadding / border)
     disableSpacingFieldsetInTableOperations = 0
     disableAlignmentFieldsetInTableOperations = 0
     disableColorFieldsetInTableOperations = 0
     disableLayoutFieldsetInTableOperations = 0
     disableBordersFieldsetInTableOperations = 0
     
  # Tabellen Optionen in der RTE Toolbar als Button vertecken oder anzeigen
     hideTableOperationsInToolbar = 0
     
  # Buttons die gezeigt/versteckt werden (Standardliste der Einstellung Typical)
     showButtons = headline, fontstyle, fontsize, size, textcolor, textstyle, textstylelabel, blockstyle, blockstylelabel, bold, italic, underline, left, center, right, orderedlist, unorderedlist, insertcharacter, line, link, image, removeformat, table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, findreplace, insertcharacter, undo, redo, chMode, showhelp, about,
     hideButtons = formatblock, strikethrough,lefttoright, righttoleft, textindicator, emoticon, user, spellcheck, inserttag, outdent, indent, justifyfull, subscript, superscript, acronym, copy, cut, paste
 
  # Fuege der Standardliste der RTE Typical- Einstellung noch folgende Buttons hinzu    
     showButtons := addToList(textcolor, bgcolor, size, fontsize )
 
  # Sortierung der RTE Buttons
     toolbarOrder = headline, bold, italic, underline, left, center, right, orderedlist, unorderedlist, findreplace, insertcharacter, undo, redo, showhelp, about, textstylelabel, textstyle, blockstylelabel, blockstyle, image, link, removeformat, line, table, toggleborders, tableproperties,rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, textcolor,chMode
 
  # Haelt die RTE Icons gruppiert zusammen
     keepButtonGroupTogether = 1
     keepToggleBordersInToolbar = 1
}

###############################################################################
#-- Verwendung eines eigenen Stylesheets fuer den RTE
###############################################################################

# Einstellungen RTE
RTE.default {

  # Zuweisung der CSS-Datei  
  contentCSS = fileadmin/inc/f_style.css

  # zeige alle CSS-Klassen die in f_style.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
}

# Erlaubte span Klassen aus der CSS-Datei (span wird somit nicht wegparsed)
RTE.config.tt_content.bodytext.proc.allowedClasses = text,mainnavi_red,preise,preise_kl

###############################################################################
# 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.
###############################################################################

RTE.default.proc {

 # Überschreibe CSS Angaben aus dem TypoScript
 overruleMode = ts_css

 # tags die erlaubt / verboten sind
 allowTags = font, size, fontsize,  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, bgcolor, bg, color, underline
 denyTags =
 
 # br wird nicht zu p konvertiert
 dontConvBRtoParagraph = 1

 # Tags die ausserhalb von p, div erlaubt sind
 allowTagsOutside = img,hr,center,span

 # Erlaubte Attribute in p, div Tags
 keepPDIVattribs = class,style,id
}
###############################################################################
# HTML Parser Einstellungen - Inhalt ins Frontend
###############################################################################

HTMLparser_rte {

  # tags die erlaubt/verboten sind
  # uebernehme die Einstellungen von RTE.default.proc
 
  allowTags < RTE.default.proc.allowTags
  denyTags < RTE.default.proc.denyTags
        
  # tags die untersagt sind
  removeTags =

  # entfernt html-kommentare
  removeComments = 1
 }

###############################################################################
# Speichere in Datenbank - Inhalt in die Datenbank
###############################################################################

entryHTMLparser_db = 1
entryHTMLparser_db {

  # tags die erlaubt/verboten sind
  #uebernehme die Einstellungen von RTE.default.proc
 
  allowTags < RTE.default.proc.allowTags
  denyTags < RTE.default.proc.denyTags       
 
  # Falls diese Tags auf der "remove"- Liste stehen, so entferne sie von dieser
  removeTags := removeFromList(font,bgcolor,underline, u)
 
  # Erlaube folgende Attribute
  tags.font.allowedAttribs = color, size, bgcolor,fontsize
 
}

###############################################################################
# Verwende für die Ausgabe im FE die gleichen Einstellungen wie im Editor des RTE
###############################################################################

RTE.default.FE.proc < RTE.default.proc
RTE.default.FE < RTE.default

###############################################################################
# Verwende die gleichen Einstellung zur BEreinigung von Inhatl,
# welcher in den Editor kopiert wurde, wie bei RTE.default.proc.entryHTMLparser_db
###############################################################################

RTE.default.enableWordClean.HTMLparser < RTE.default.proc.entryHTMLparser_db
Julian.​Hofmann ·

Hallo.

Wie versuchst Du, die Formatierung zu setzen? Das klingt mir nach Verwendung der "Block style"-Optionen, die eben - wie der Name sagt - Blöcke (<p>) formatieren. Was Du suchst dürften die "Text style"-Optionen sein, die span-Tag zur Formatierung verwenden.
Ein grobes Überfliegen Deiner Konfiguration hat mich jetzt sich finden lassen, was der Verwendung von "Text style" widersprechen würde.

Viele Grüße
Julian

cherry ·

Stimmt, die von mir angelegten Textformatierungen liegen im Blockstil.
Wir bringe ich denn nun die Formatierungen in die Textstile?

Habe mir schon einiges angesehen, aber irgendwie finde ich die Einstellung nicht.

cherry ·

Habe mir deine "Links" durchgesehen und wieder Hoffnung geschjöpft, aber ne, es funktioniert immer noch nicht. Wenn ich "Seiteninhalt einfügen" aufrufe und der RTE startet, muss ich erst die ENTER-Taste drücken, dann den Text eintragen und kann dann formatieren. Text der außerhalb von <p></p> liegt wird nicht formatiert.

Julian.​Hofmann ·

Hm, also ansich sollte es klappen mit den Zeilen

# Hier nur die Klassen definieren, die im RTE zur Verfügung gestellt 
# werden sollen.
# Die Formatierung kann hier (zur Anzeige im RTE) anders sein, 
# als schließlich im FE 
contentCSS=fileadmin/css/rte.css

# nur Klassen mit Tags erlauben. z. B. : span.meine-klasse {color: red;}
showTagFreeClasses=1
  
# hier wird definiert, welche Klassen den Redakteuren zur
# Verfügung gestellt werden:  die vorhandenen Klassen für die
# Zeichenformatierung werden hier ausgeschaltet:
classesCharacter := lime,red,meine-klasse

# Jetzt müssen die einzelnen Klassen noch explizit erlaubt werden
proc.allowedClasses. = lime,red,meine-klasse

Wie sieht Dein TS jetzt aus?

cherry ·

Zunächst erstmal VIELEN DANK für deine (eure) bisherigen Hilfestellungen!
Habe jetzt dein Stückchen Code in die Konfiguration eingebaut, jedoch ohne jeden Erfolg.
Derzeit sieht die Konfiguration so aus:

###############################################################################
#
#--- RTE Konfiguration -------------------------------------------------------
# - fuer die Einstellung TYPICAL des RTE
#
###############################################################################
 
#-- Aktiviere RTE fuer alle User
 
setup.default.edit_RTE = 1
 
###############################################################################
# RTE.default - konfiguriert die RTEs für alle Tabellen, alle Felder und
#               alle Content-Typen. Einstellungen, die mit RTE.default
#               vorgenommen werden, gelten somit nicht nur für Inhalte,
#               die in der Tabelle tt_content gespeichert sind sondern z.B.
#               auch für tt_news.
###############################################################################
 
RTE.default {
 
  # Markup Optionen  (Word Foramtierungen entfernen etc.)
     enableWordClean = 1
     removeTrailingBR = 1
     removeComments = 1
     removeTags = sdfield
 
  # Ein- oder Ausblenden des Color Picker bei der Auswahl der Textfarbe
     disableColorPicker = 0
     
  # blendet Statusbar in htmlarea aus      
     showStatusBar =  0
 
  # Tabellen Editierungs-Optionen (cellspacing/ cellpadding / border)
     disableSpacingFieldsetInTableOperations = 0
     disableAlignmentFieldsetInTableOperations = 0
     disableColorFieldsetInTableOperations = 0
     disableLayoutFieldsetInTableOperations = 0
     disableBordersFieldsetInTableOperations = 0
     
  # Tabellen Optionen in der RTE Toolbar als Button vertecken oder anzeigen
     hideTableOperationsInToolbar = 0
     
  # Buttons die gezeigt/versteckt werden (Standardliste der Einstellung Typical)
     showButtons = headline, fontstyle, fontsize, size, textcolor, textstyle, textstylelabel, blockstyle, blockstylelabel, bold, italic, underline, left, center, right, orderedlist, unorderedlist, insertcharacter, line, link, image, removeformat, table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, findreplace, insertcharacter, undo, redo, chMode, showhelp, about,
     hideButtons = formatblock, strikethrough,lefttoright, righttoleft, textindicator, emoticon, user, spellcheck, inserttag, outdent, indent, justifyfull, subscript, superscript, acronym, copy, cut, paste
 
  # Fuege der Standardliste der RTE Typical- Einstellung noch folgende Buttons hinzu    
     showButtons := addToList(textcolor, bgcolor, size, fontsize )
 
  # Sortierung der RTE Buttons
     toolbarOrder = headline, bold, italic, underline, left, center, right, orderedlist, unorderedlist, findreplace, insertcharacter, undo, redo, showhelp, about, textstylelabel, textstyle, blockstylelabel, blockstyle, image, link, removeformat, line, table, toggleborders, tableproperties,rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, textcolor,chMode
 
  # Haelt die RTE Icons gruppiert zusammen
     keepButtonGroupTogether = 1
     keepToggleBordersInToolbar = 1
     
}
 
###############################################################################
#-- Verwendung eines eigenen Stylesheets fuer den RTE
###############################################################################
 
# Einstellungen RTE
RTE.default {
 
  # Zuweisung der CSS-Datei  
  contentCSS = fileadmin/inc/f_style.css
 
  # zeige alle CSS-Klassen die in f_style.css vorhanden sind im RTE an
  #(Dropdown-Box - Absatz)  
  showTagFreeClasses = 1
  
# hier wird definiert, welche Klassen den Redakteuren zur
# Verfügung gestellt werden:  die vorhandenen Klassen für die
# Zeichenformatierung werden hier ausgeschaltet:
classesCharacter := text,mainnavi_red,preise,preise_kl
 
# Jetzt müssen die einzelnen Klassen noch explizit erlaubt werden
proc.allowedClasses. = text,mainnavi_red,preise,preise_kl

}
 
###############################################################################
# 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.
###############################################################################
 
RTE.default.proc {
 
 # Überschreibe CSS Angaben aus dem TypoScript
 overruleMode = ts_css
 
 # tags die erlaubt / verboten sind
 allowTags = font, size, fontsize,  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, bgcolor, bg, color, underline
 denyTags =
 
 # br wird nicht zu p konvertiert
 dontConvBRtoParagraph = 1
 
 # Tags die ausserhalb von p, div erlaubt sind
 allowTagsOutside = img,hr,center,span
 
 # Erlaubte Attribute in p, div Tags
 keepPDIVattribs = class,style,id
}
###############################################################################
# HTML Parser Einstellungen - Inhalt ins Frontend
###############################################################################
 
HTMLparser_rte {
 
  # tags die erlaubt/verboten sind
  # uebernehme die Einstellungen von RTE.default.proc
 
  allowTags < RTE.default.proc.allowTags
  denyTags < RTE.default.proc.denyTags
        
  # tags die untersagt sind
  removeTags =
 
  # entfernt html-kommentare
  removeComments = 1
 }
 
###############################################################################
# Speichere in Datenbank - Inhalt in die Datenbank
###############################################################################
 
entryHTMLparser_db = 1
entryHTMLparser_db {
 
  # tags die erlaubt/verboten sind
  #uebernehme die Einstellungen von RTE.default.proc
 
  allowTags < RTE.default.proc.allowTags
  denyTags < RTE.default.proc.denyTags       
 
  # Falls diese Tags auf der "remove"- Liste stehen, so entferne sie von dieser
  removeTags := removeFromList(font,bgcolor,underline, u)
 
  # Erlaube folgende Attribute
  tags.font.allowedAttribs = color, size, bgcolor,fontsize
 
}
 
###############################################################################
# Verwende für die Ausgabe im FE die gleichen Einstellungen wie im Editor des RTE
###############################################################################
 
RTE.default.FE.proc < RTE.default.proc
RTE.default.FE < RTE.default
 
###############################################################################
# Verwende die gleichen Einstellung zur BEreinigung von Inhatl,
# welcher in den Editor kopiert wurde, wie bei RTE.default.proc.entryHTMLparser_db
###############################################################################
 
RTE.default.enableWordClean.HTMLparser < RTE.default.proc.entryHTMLparser_db

Das witzige ist, wenn man überhaupt noch von witzig sprechen kann, ich habe seit 3 Jahren eine Typo3-Installation laufen bei der es funktioniert. Ist noch eine 3er Typo3-Version, und wenn ich die komplette Konfiguration übernehme tritt das selbe Problem auf.

Julian.​Hofmann ·

Hast Du die üblichen Dinge für RTE-Anpassungen beachtet? Also Konfigurations-Cache löschen, htmlarea-Dinge aus typo3temp löschen,... (lokalen Browser-Cache löschen, deaktivieren,...)

Deine Konfiguration ist (nicht konkret zu dem Problem) etwas widersprüchlich. In Zeile 98 in RTE.default.proc.allowedTags steht z.B. font mit drin, in Zeile 143 wird das font-Tag dagegen in die remove-Liste aufgenommen. Auch die Zeile 49 ist eher überflüssig, da sie bereits in Zeile 45 gesetzt ist (bzw. die Buttons dort schon dabei sind).

Die Zeilen 114 bzw. 133f. dürften so auch keine Wirkung haben, da sie in RTE.default.proc stehen müssten. Das könnte sogar Dein Problem direkt betreffen...

cherry ·

Habe mal die von dir bemerkten Zeilen geändert, bzw. gelöscht, alle Caches geleert und auch die typo3temp geleert.
Aber es gibt keinerlei Änderung.

Julian.​Hofmann ·

Nachdem ich mir Deine ursprüngliches Posting nochmal durchgelsen habe und sowohl mit meiner Konfiguration als auch mit Deinen etwas rumprobiert habe, bin ich glaube ich dem "Problem" auf die Spur gekommen:

Das Verhalten sollte so sein, dass Du zuerst einen Absatz erzeugen muss (p-Tag in Sourceansicht) und darin dann Text markieren und mit "Text style" auszeichnen kannst. Denn span-Tags sollten nicht außerhalb von Absätzen stehen bzw. (Fließ-)Text nicht ohne Absätze. Der Absatz (<p>) wird spätestens beim Speichern von RTE-Inhalten drumherumgesetzt.
Insofern dürfte Deine Konfiguration von Anfang an schon gepasst haben (bis auf die syntaktischen bzw. logischen Fehler aus meinem letzten Beitrag)

cherry ·

Also bei meiner älteren, funktionierenden Typo3-Installation, schreibt es folgendes in den Quelltext:

<p><span class="text>Hier steht der text</span></p>

Also steht das erste <p></p> schon beim Aufruf des RTE drin.
Nur bei der derzeitigen Installation ist beim Aufruf des RTE nichts vorhanden, es muss erst erzeugt werden. Also ENTER-Taste drücken, das kann doch so auch nicht korrekt sein? Es müsste doch auch bereits ein <p></p> da stehen, oder liege ich da falsch?