Zum Inhalt springen

typolink und if

Erstellt am 25. Oktober 2014 · 5 Antworten · letzte Antwort am 31. Oktober 2014

Tags: Gridelements, Frage

wini2 ·

hallo,

ich würde gerne folgendes typoscript so ändern, dass sich die ausgabe von

wrap = |<span class="pull-right glyphicon glyphicon-chevron-down"></span>
in
wrap = |<span class="pull-right glyphicon glyphicon-chevron-up"></span>

ändert, abhängig davon, ob ein feld namens 'flexform_active' vom redakteur ausgewählt wurde.

das ts sieht so aus:

tt_content.gridelements_pi1.20.10.setup.collapsible_accordion >
tt_content.gridelements_pi1.20.10.setup.collapsible_accordion {

  # Build: <div class="panel-heading">|</div>
	innerWrap.cObject < lib.stdheader
	innerWrap.cObject {
		wrap = <div class="panel-heading">| </div>
		3.headerClass.cObject.928374 = TEXT
		3.headerClass.cObject.928374 {
			value = panel-title 
			noTrimWrap = | | |
		}

	
		10.setCurrent.typolink {
			parameter >
			parameter = #collapse-{field: uid} 
			parameter.insertData = 1
			ATagParams = class="accordion-toggle" data-toggle="collapse" 
			ATagParams.insertData = 1

			ATagBeforeWrap = 1
			wrap = |<span class="pull-right glyphicon glyphicon-chevron-down"></span>
	
			}
		
		stdWrap.dataWrap = |
	}
	
	...

müsste es nicht ungefähr so funktionieren?

   if.isTrue.data = field:flexform_active
   wrap = |<span class="pull-right glyphicon glyphicon-chevron-up"></span>

danke für eure hilfe

OnkelEdi ·

Hallo wini2,

vielleicht auch nur:

if.isTrue.field = flexform_active

ob der Rest stimmt kann ich dir jetzt nicht sagen.
Vielleicht wars das ja auch schon.

Gruß
Eduard

Edit:
oha steht ja schon da oben sorry 🙂

wini2 ·

hallo,
danke für die tipps, die helfen leider auch nicht.

möglicherweise besteht das problem darin, dass der wrap nicht beachtet wird, wenn flexform_active 0 zurückliefert. beim folgendem ts wird nur der wrap für die gesetzte checkbox angewendet. entspr. versuche für if.isFalse funtkionieren leider auch nicht, obwohl in der tsref steht "If the content is "false"... (empty or zero)".

...
#für checkbox nicht gesetzt
wrap = |<span class="pull-right glyphicon glyphicon-chevron-down">  {field:uid} {field:flexform_active} </span>
#für checkbox gesetzt
wrap.if.isTrue.data =  field:flexform_active
wrap.if.isTrue = |<span class="pull-right glyphicon glyphicon-chevron-up">active_on_load? {field:flexform_active}</span>
...
wini2 ·

ich muss was nachtragen, was ich zuvor übersehen habe.

der simple wrap (ohne if) zeigt mir für {field:flexform_active} den nicht-checked-zustand mit 0 bzw. den checked-zustand mit 1 an - sieht soweit gut aus.

der checkbox-wert wird in einem gridelement [in verbindung mit der extension t3sbootstap] gesetzt und offenbar so in im feld pi_flexform der tt_content gespeichert. augenscheinlich kann ich ihn aber nicht direkt auslesen/mit if wrappen.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
    <data>
        <sheet index="general">
            <language index="lDEF">
                <field index="active">
                    <value index="vDEF">0</value>
                </field>
                <field index="style">
                    <value index="vDEF">panel-default</value>
                </field>
            </language>
        </sheet>
    </data>
</T3FlexForms>

ist die checkobx gesetzt, ändert sich der wert in <value index="vDEF">1</value>.

es wäre toll, wenn mir jemand auf die sprünge helfen könnte, wie ich das entsprechend abragen und mit if wrappen kann.

schon mal vielen dank im voraus.

Julian.​Hofmann ·

Hallo Zusammen.

Ich seh hier drei Probleme:

1. wrap ist nur vom Datentyp "wrap", d.h. hat keine Unterstützung für das if. Dafür müsste ein Wrap mit Datentyp "wrap /stdWrap" gewählt werden.

2. Wenn mit einer Eigenschaft zwei alternative Werte gesetzt werden sollen, dann muss zwangsläufig mit einem bedingten override gearbeitet werden.

3. Ist der Zugriff auf flexform-Werte aus TS heraus überhaupt möglich? Wüsste nicht, dass ich das mal gemacht oder gesehen habe...

Als Wrap, der etwa an gleicher Stelle in der Reihenfolge ausgeführt wird, jedoch stdWrap-Eigenschaften (und somit if) unterstützt, wäre z.B. outerWrap

10.setCurrent.typolink {
  wrap >
  outerWrap = |<span class="pull-right glyphicon glyphicon-chevron-down">
  outerWrap.override = |<span class="pull-right glyphicon glyphicon-chevron-up">
  outerWrap.override.if.isTrue.data = field:flexform_active
}

Zum Thema Flexform könnte die Mailingliste interessant sein: http://lists.typo3.org/pipermail/typo3-german/2013-November/097366.html

Viele Grüße
Julian