Einzelnen Beitrag anzeigen
  #3  
Alt 29.03.07, 08:23
move-elevator move-elevator ist offline
Forum Newbie
 
Registriert seit: 28.03.07
Ort: Dresden
Beiträge: 19
Ausrufezeichen Lösung für Spaltenabhängige ParseFuctions

Grüß GOTT miteinander,

gestern auf dem Heimweg fiel mir noch ein Lösungsansatz ein - und siehe da er funktioniert.

Hintergrund:
In Jedem Contentelement ist ja die colPos = Spaltenpostition gespeichert.
Wenn ich also vor dem Rednering aber nach der Definition der Parsfunctions Einfluss auf die Inhaltselemente nehmen will, geht das über die Unterscheidung an genau diesem Merkmal.

Und so geht´s:

Typoscript-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
# Man erzeuge eine Kopie der anzupassenden Pars-Functions
parseFunc_RIGHT < lib.parseFunc_RTE

# Man ändere das class Attribut für den Text nach belieben
parseFunc_RIGHT.nonTypoTagStdWrap.encapsLines.addAttributes.P.class = bodytextright

# Man erstelle sich eine Kopie des Contentelementes für das man die
# Pars-Func spaltenabhängig verändern möchte
tt_content.specialtext < tt_content.text.20

# Man Lösche das Original Element
tt_content.text.20 >

# Man lege es neu und Leer an - aber diesmal vom Typ CASE (Fallunterscheidung)
tt_content.text.20 = CASE
tt_content.text.20 {

# Man Definiere als schlüsselfeld eben die colPos = In welcher Spalte befinde ich mich
key.field=colPos

# Für den default wert = 0 Also mittlere Spalte kopiere man die oben erstellte Kopie des
# originals wieder in das Element hinein
default < tt_content.specialtext

  # Für den Fall "2" Also hier die rechte Spalte kopiere man ebenfaslls die Kopie
  # wieder hinein...
2 < tt_content.specialtext

  # Und hier Weise man die die oben erstellte Variation der Pars-Func dem Objekt zu
  #  und hat zum ergebnis <p class="bodytextright">... Oder was immer  man möchte.
2.parseFunc < parseFunc_RIGHT
}

Fazit:
Zugegeben vielleicht nicht die eleganteste Methode - aber es beweist dass man mit Typo3 Niemals in der Sackgasse steckt sondern immer eine Lösung findet. Wenn man auch manchmal um die Ecke denken muss.

Viel Spaß bei Variieren - und wenn jemand eine Elegantere Lösung kennt... her damit.
__________________
Viele Grüße - Florian Wentzel
move:elevator GmbH - Abteilung Neue Medien
www.typo3me.de
Mit Zitat antworten