INHALT = CONTENT
INHALT {
table = tt_content
select.orderBy = sorting
select.where = colPos = 0
table.20 = TEXT
table.20 {
field = bodytext
select.split {
token = ®
cObjNum = |*|1|*|2
1.current = 1
1.noTrimWrap = ®| <sup class="reg">®</sup> |
2.current = 1
}
}
}
Hallo zusammen,
ich möchte gerne ® und auch andere Sonderzeichen im Inhalt und auch später in Seitentitel, Überschriften ect. gegen eine andere Schreibweise ersetzen lassen.
Leider habe ich im Internet nur bruchstückhafte Lösungen gefunden, daraus ist der obige Versuch entstanden, der leider nichts verändert.
Was mache ich falsch?
Danke für`s Lesen und die Hilfe im Voraus.
Hallo 3d-swiss,
ich habe in etwa das gleiche Problem wie Du. Ich kann dir folgendes anbieten, weiß nicht ob Dir das hilft.
Der Schnipsel:
tt_content.stdWrap.parseFunc.short {
Italien = XXX
}
ersetzt in sämtlichen Überschriften, Inhaltselementen, tt_news-Elementen den Begriff Italien durch XXX. Nun ist das Problem, dass Sonderzeichen nicht funktionieren, denn genau das habe ich auch versucht.
Ich habe dem Kunden nun gesagt, er solle einfach nur den Firmennamen eingeben und ich ersetze diesen dann durch den Firmennamen mit dem Sonderzeichen, denn das funktioniert.
Also mach evtl. folgendes:
tt_content.stdWrap.parseFunc.short {
Firmenname = Firmenname<sup class="reg">®</sup>
}
tt_content.stdWrap.parseFunc.short {
(R) = <sup class="reg">®</sup>
}
Wäre ne Lösung, aber ich weiss bei besten Willen nicht, wo ich diese Zeilen hinschreiben muss. #angry#
Drum habe ich es ja auch im Anfängerbereich gepostet: :-)
Hab eine kleine Extension (Key: regex) geschrieben. Mit dieser kann man den Quellcode (alles zwischen den Body-Tags) mit Regulären Ausdrücken "bearbeiten".
Syntax ist folgende:
patternI = /regulärer Ausdruck/
patternI.replacemant = Ersatztext
d.h. beliebig viele Ausdücke die sich nur im Index (I) unterscheiden.
Beispiel mit drei RegEx:
config.regex {
pattern1 = /###name###/i
pattern1.replacemant = ERSETZT
#Das ® als HTML nur ohne Leerzeichen
pattern2 = /& reg;/
pattern2.replacemant = copyright
#Kommentare entfernen
pattern3 = /<!--.*-->/
pattern3.replacemant =
}
config.regex {
#Das ® als HTML nur ohne Leerzeichen
pattern1 = /®/
pattern1.replacemant = <sup>®</sup>
}
Ersetzt leider ® nicht durch ein hochgestelltes ®.
Zweiter Versuch:
config.regex {
# (R) umwandeln
pattern1 = /(R)/
pattern1.replacemant = <sup>®</sup>
}
Ersetzt ALLE grossen R (auch ohne Klammern) im Text und im Quellcode durch (®). Warum bleiben die Klammern sichtbar.
Wenn ich noch erfahren darf, wie ich nur (R) in Klammern ersetzen kann, dann wäre das eine gute Lösung für mich.
Noch nie mit Regulären Ausdrücken gearbeitet? Runde Klammern haben eine besondere Funktion, die mußt man "escapen"
versuchsmal so:
config.regex {
# (R) umwandeln
pattern1 = /\(R\)/
pattern1.replacemant = <sup>®</sup>
}
Im Grunde genommen ist das die "preg_replace" - Funktion durch die man den Content "jagd"
PHP-Doku zu preg_replace:
http://de.php.net/manual/de/function.preg-replace.php
PS: Hast PN
Danke für den Tipp!
Aberwie schreib ich die Story, wenn ich 2 Wörter - z.b "Max Mustermann" finden und "stylen" soll???
Die beiden Wörter stehen immer in der gleichen Reihenfolge und nur wenn Sie in der Kombination stehen....
lg Pewe
Besten Dank für die Hilfe. Problem gelöst :-)
@Pewe_at:
z.B. so:
config.regex {
# Wenn Gross- und Kleinschreibung eine Rolle spielt
pattern1 = /Max Mustermann/
# und wenn sie keine spielt so:
# pattern1 = /Max Mustermann/i
pattern1.replacemant = <span style="color: #ff0;">Max Mustermann</span>
}
das wär's, aber leider passiert mit dem Script bei mir garnix! :o
Evtl. am Ende des Templates anfügen damit das Rendern erst zum Schluß kommt.
Nö! Hat leider auch keinerlei Wirkung gezeigt!
Ist da eventuel zusätzlich noch etwas notwendig, das ich ev. nicht im System haben könnte?
mfg Pewe_at
Ne eigentlich nicht! Klappt es mit anderen Zeichen auch nicht?
Ne, das Script macht leider gar nichts!
Ich hab sogar den "Tippfehler" (replacemant ) auf replacement ausgebessert.... :o ...wenn's einer ist.... :o
Vom Alex hab ich noch Tipps bekommen, die beruhen allerdings auf eigenen Ext, die grundlegend was anderes machen sollten. Diese, eigentlich einfache Funktion klappt aber leider nicht. Ein "Wort" hab ich geschafft, bei 2 gehts nicht mehr.
lg Pewe
1. Saug dir neue Version (0.0.3)
2. Prüfe Unter Template->Constant Editor -> Category: PLUGIN.REGEX ob das Plugin aktiviert ist (1 muß da stehen)
3. Wie ist dein Leerzeichen zwischen Max und Mustermann definiert (& nbsp; ,& #160; oder implizites Leerzeichen)? Pattern Matching muß zu 100% stimmen sonst klappts nicht!!!
Versuch das (da ist ein Leerzeichen bei & nbsp; und bei & #160; welche du herausnehmen solltest:
config.regex {
pattern1 = /\bMax(?:(?:& nbsp;)|\s|(?:& #160;))+Mustermann/
pattern1.replacement = <span style="color: #ff0;">Max Mustermann</span>
}
Jetzt hab ich das halbe System nochmal übergedreht, alles alte rausgeschmissen, deine regex 0.0.3 reingespielt und:
Es läuft so wie's sein soll! :p
Sogar der erste Versuch mit:
config.regex {
# Wenn Gross- und Kleinschreibung eine Rolle spielt
# pattern1 = /Max Mustermann/
# und wenn sie keine spielt so:
pattern1 = /Max Mustermann/i
pattern1.replacement = <b>Max Mustermann</b>
}
läuft schon super! 😃
Der zweite Tipp mit:
config.regex {
pattern1 = /\bMax(?:(?:& nbsp;)|\s|(?:& #160;))+Mustermann/
pattern1.replacement = <span style="color: #ff0;">Max Mustermann</span>
}
sieht auf den ersten Blick :o etwas verwirrend aus, ist aber perfekt gelöst!
Ich nehme an, dass irgend einer der notwenigen Teile auf meinem Testsystem zerschossen war - sonst war ja irgendwas passiert...
Danke nochmal!
lg Pewe_at
Olla!
Anbei noch eine reine TS-Lösung - obwohl der Gedanke mit regEx arbeiten zu könen, auch sehr interessant ist 🙂.
Diese ersetzt den String CPRGHT mit < sup >®< /sup >
# replace CPRGHT with <sup>®</sup>
# headers
lib.stdheader.10.setCurrent.parseFunc.short.CPRGHT = <sup>®</sup>
# regular content
tt_content.text.20.parseFunc.short.CPRGHT = <sup>®</sup>
# menues
tt_content.menu.20.stdWrap.parseFunc.short.CPRGHT = <sup>®</sup>
lib.parseFunc.short {
CPRGHT = <sup>®</sup>
}
#rte
lib.parseFunc_RTE.short {
CPRGHT = <sup>®</sup>
}
gruss, fuss