Ich weiß, dass dieses Thema schon oft aufkam - allerdings habe ich keine Lösung für Typo3 >6.0 gefunden.
Unter diesem Forum habe ich einen angeblichen Lösungsweg gefunden. Allerdings bin ich absoluter Anfänger und habe absolut keine Ahnung, wie ich diesen PHP Code einfügen/ausführen soll.
Gibt es keinen reinen Ansatz via TypoScript?
Ich hatte es einmal so versucht - aber das war wohl auch nicht das richtige:
seite.10.marks.INHALT.parseFunc < t3lib_parsehtml_proc
Für Hilfe wäre ich sehr dankbar - ich sitze schon etliche Stunden am Suchen nach einer Lösung vor dem Rechner...
EDIT:
die parsehtml_proc ist nun nicht mehr aktuell. Sie wurde verschoben in typo3/sysext/core/Classes/Html/RteHtmlParser.php
Dort findet sich in Zeile 731 die Funktion, die ich irgendwie aufrufen sollte...
function TS_links_rte
Ich bin lange nicht mehr in die Verlegenheit gekommen darauf zurück zu greifen,
aber bisher hieß das eigentlich
seite.10.marks.INHALT.parseFunc < lib.parseFunc_RTE
das sollte vermutlich immer noch funktionieren.
Natürlich nur wenn der Rest von INHALT dafür ausgelegt ist, aus einem Einzeiler lässt sich nicht allzu viel heraus interpretieren
hm nein.. das war es leider nicht.
zu meiner Art, wie ich es gemacht habe (sicher komplett falsch?!):
Ich habe ein Backend-Layout mit 3 Spalten angelegt, Inhalt, Teaser und RECHTE_BOX.
In meinem HTML Template habe ich einen Marker INHALT, an dem ich alles einfüge. Das TypoScript dazu lautet:
tt_content.stdWrap.innerWrap >
###### Template #######
seite.10 = TEMPLATE
seite.10 {
template = FILE
template.file = fileadmin/template/template.txt
marks {
INHALT = CONTENT
INHALT {
table = tt_content
}
}
}
tt_content = COA
tt_content {
10 = TEXT
10.field = header
10.wrap = <b> | </b><br>
20 = TEXT
20.field = bodytext
}
seite.10.marks.INHALT < styles.content.get
seite.10.marks.INHALT.HTMLparser=1
# Startseite
[PIDinRootline = 15]
seite.10.marks.TEASER < styles.content.get
seite.10.marks.RECHTE_BOX < styles.content.get
seite.10.marks.TEASER.select.where = colPos=0
seite.10.marks.TEASER.wrap = <div class="teaser">|</div>
seite.10.marks.INHALT.select.where = colPos=1
seite.10.marks.INHALT.wrap = <div class="main_content">|</div>
seite.10.marks.INHALT.parseFunc < lib.parseFunc_RTE
seite.10.marks.RECHTE_BOX.select.where = colPos=2
seite.10.marks.RECHTE_BOX.wrap = <div class="right_box">|</div>
[else]
seite.10.marks.TEASER = ""
seite.10.marks.RECHTE_BOX = ""
seite.10.marks.INHALT.select.where = colPos=0
[GLOBAL]
das ELSE nutze ich nur, weil Teaser und die rechte Box nur auf der Startseite benötigt werden und ich nicht herausbekommen hatte, wie ich das mittels TypoScript anders lösen kann. Für Tipps hierfür wäre ich auch dankbar, wenn es einen schöneren/einfacheren Weg gibt..
Du hast erwähnt, dass du lange nicht mehr darauf zurück greifen musstest. Nur für die (meine) Zukunft: wie löst du dieses Problem?
>> Du hast erwähnt, dass du lange nicht mehr darauf zurück greifen musstest. Nur für die (meine) Zukunft: wie löst du dieses Problem?
Änhlich wie du, ganz einfach deshalb, weil du beim Zugriff über styles.content.get das nicht mehr machen musst.
Leider weiß ich auch nicht was der HTMLparser in diesem Zusammenhang macht, da dieser ja nur dazu da ist diverse HTML-Tags zuzulassen oder zu verbieten und so alleingesellt nicht wirklich Sinn macht.
Probiers doch mal so:
seite.10.marks.INHALT < styles.content.get
# seite.10.marks.INHALT.HTMLparser=1 < das da weg
(...)
seite.10.marks.INHALT.select.where = colPos=1
seite.10.marks.INHALT.wrap = <div class="main_content">|</div>
# seite.10.marks.INHALT.parseFunc < lib.parseFunc_RTE < das da auch weg
ok habe es mal entfernt.
Es scheint sich nichts geändert zu haben. Habe auch mal testweise das styles.content.get entfernt, um zu schauen was dann passiert.. auch das hatte an sich keinen Effekt..
Habe immer noch Links à la
<link 25 - internal-link "Öffnet internen Link im aktuellen Fenster">Testlink</link>
.
die css styled content ist auch in meinen TS eingebunden.
EDIT:
Habe nun den Fehler gefunden.
Ich musste den TS Code
tt_content = COA
tt_content {
10 = TEXT
10.field = header
10.wrap = <b> | </b><br>
20 = TEXT
20.field = bodytext
}
entfernen. Aber warum das einen so großen Einfluss hatte weiß ich nicht. Wäre dankbar, wenn mir das wer erklären könnte.
Sorry mein Fehler, das hatte ich übersehen!
styles.content.get verwendet für das renderObj, also die Definition welche Felder der Datensätze wie dargestellt werden, tt_content.
Wenn du das globale tt_content selbst überschreibst stimmt das natürlich anschließend nicht mehr.
Für ein korrektes rendering sollte das so aussehen:
tt_content = COA
tt_content {
10 = TEXT
10.field = header
10.wrap = <b> | </b><br>
20 = TEXT
20.field = bodytext
20.parseFunc < lib.parseFunc_RTE
}
Generell würde ich aber davon abraten das global zu tun. Der bessere Weg wäre, tt_content in dein rendering zu kopieren und anschliesst anzupassen, bzw. wenn du nur 2 Felder brauchst dies von vorneweg selbst zu definieren:
seite.10.marks.INHALT < styles.content.get
seite.10.marks.INHALT.select.where = colPos=1
seite.10.marks.INHALT.wrap = <div class="main_content">|</div>
seite.10.marks.INHALT.renderObj > # entfernt evtl vorhandene renderAngaben
seite.10.marks.INHALT.renderObj = COA
seite.10.marks.INHALT.renderObj {
10 = TEXT
10.field = header
10.wrap = <b> | </b><br>
20 = TEXT
20.field = bodytext
}
Chrissli schrieb
Sorry mein Fehler, das hatte ich übersehen!
styles.content.get verwendet für das renderObj, also die Definition welche Felder der Datensätze wie dargestellt werden, tt_content.
Wenn du das globale tt_content selbst überschreibst stimmt das natürlich anschließend nicht mehr.
Super - danke dir für diese Erklärung. Nun ist es klar. Ich hoffe, dass mir so ein (dummer) Anfängerfehler nicht nochmals passiert!