Zum Inhalt springen

Zweispaltiger Text mit Split

Erstellt am 20. Januar 2012 · 4 Antworten · letzte Antwort am 6. August 2012

Tags: Frage

Niklas Lazinbee ·

Hallo,
ich möchte einen Text zweispaltig auf eine Webseite bringen, allerdings nur, wenn eine Bedingung erfüllt ist.

Ansatzweise geht es so

tt_content.text {
   20 = TEXT
   20 {
	field = bodytext
	required = 1
	split = COA
	split {
            token = ###SPLITTER###
            cObjNum = 1 || 2
            1.current = 1
            1.if.equals.field = section_frame
            1.if.value = 70
            1.wrap = <table border="0" cellpadding="0" cellspacing="3"><tr><td valign="top"> | </td>
            2.current = 1
            2.if.equals.field = section_frame
            2.if.value = 70
            2.wrap = <td valign="top"> | </td></tr></table>
        }
	}
}

Allerdings wird so, wenn secteion_frame ungleich 70 ist gar kein Text mehr dargestellt. Ich würde hingegen gerne das "split" komplett deaktivieren, wenn der Wert nicht übereinstimmt, also mit der Bedingung direkt beim "split" ansetzen.

Oder noch besser, kein "split" wenn ###SPLITTER### nicht im Text vorkommt.

Hat da jemand einen Tip, ich habe leider nichts dazu gefunden?

Beste Grüße
Niklas

Niklas Lazinbee ·

Eine neu Idee zum selben Problem, die schon ein wenig besser funktioniert:

tt_content.text {

	
	30 = COA
	30.if.equals.field = section_frame
	30.if.value = 70
	30 {
	    10 < tt_content.text.20
	    10.split = COA
		10.split {
            token = ###SPLITTER###
            token.required=1
            cObjNum = 1 || 2
            1.current = 1
            1.wrap = <table border="0" cellpadding="0" cellspacing="3"><tr><td valign="top"> | </p></td>
            2.current = 1
            2.wrap = <td valign="top"><p> | </td></tr></table>
        }
	       
	}
}

Jetzt wird der Text, der in css_styled_content bei "20" erstellt wird nicht mehr vom "split" beeinflusst

# *****************
# CType: text
# *****************
tt_content.text = COA
tt_content.text {
	10 = < lib.stdheader

	20 = TEXT
	20 {
		field = bodytext
		required = 1

		parseFunc = < lib.parseFunc_RTE

		editIcons = tt_content:bodytext, rte_enabled
		editIcons.beforeLastTag = 1
		editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext

		prefixComment = 2 | Text:
	}
}

Der Nachteil ist, wenn "section_frame" auf "70" steht, steht der Text doppelt auf der Seite, einmal normal und einmal zweispaltig.

Für diese Fall müßten man "20" wieder löschen, nur wie?

Beste Grüße
Niklas

udowald ·

Hallo Niklas,

ich empfehle dir die Extension "multicolumn". Die ist wirklich klasse.

Wenn Du es dennoch mit eigenem TS machen möchtest, kommst Du wahrscheinlich um ein Case Object nicht rum. So in die Richtung wie unten.

temp.standard < tt_content.text
temp.zweispaltig < tt_content.text.20
temp.zweispaltig.split
.....etc.
tt_content.text = CASE
tt_content.text {
      key.field = section_frame
      default < temp.standard
      0 < temp.standard
      10 < temp.webkat
      20 < temp.benefit
      70 < temp.zweispaltig
      }
Niklas Lazinbee ·

Danke für die Antwort, das sieht ganz gut aus, sobald ich wieder etwas Zeit habe, werde ich mein TS einmal umbauen. "multicolumn" kenne ich auch und setze ich auch ein, allerdings habe ich dabei im Falle meines Vorhabens den Eindruck, mit Kanonen auf Spatzen zu schießen.

Beste Grüße
Niklas

Niklas Lazinbee ·

Wenn auch schon einige Zeit vergangen ist, ich habe den Vorschlag von udowald noch einmal aufgegriffen. Hier das zugehörige Typoscript

temp.standard < tt_content.text
temp.zweispaltig < tt_content.text.20
temp.zweispaltig.split = COA
temp.zweispaltig.split {
    token = ###SPLITTER###
    token.required=1
    cObjNum = 1 || 2
    1.current = 1
    1.wrap = <table border="0" cellpadding="0" cellspacing="3"><tr><td valign="top"> | </p></td>
    2.current = 1
    2.wrap = <td valign="top"><p style="display:none"> | </td></tr></table>
}

tt_content.text = CASE
tt_content.text {
    key.field = section_frame
    default < temp.standard
    0 < temp.standard
    230 < temp.zweispaltig
}

Besten Dank,
Niklas