Zum Inhalt springen

if-Abfrage wird ignoriert

Erstellt am 30. November 2015 · 6 Antworten · letzte Antwort am 14. Dezember 2015

Tags: Frage

OnkelEdi ·

Hallo miteinander,

Ich versuche ein Contentelement bzw. die Bilder davon in Abhängigkeit von section_frame und imagecols
anders darzustellen. Ich hab einiges ausprobiert komme aber leider nicht weiter. Vielleicht ist mein Ansatz auch falsch. Wäre für Hinweise sehr dankbar.

Ich will folgendes umsetzen:
Bei gewähltem Content-Element-Typ „images“ (nur Bilder) sollen alle Bilder auf eine bestimmte Größe (hier 190px x 190px) gecropt werden. Jedes Bild soll einen Wrap mit der Klasse "cropgal_pic" erhalten und die ganze „Galerie“ soll auch noch mal in einen Wrap mit der Klasse "galerie-img-wrapper".
Bedingung dafür soll sein:
Als section_frame muss „galerie“ (hier id 203) ausgewählt sein
Zusätzlich muss bei der Spaltenanzahl der Bilder (imagecols) mehr als 1 ausgewählt sein.

Das aktuelle Typoscript sieht folgendermaßen aus:

lib.tt_content.image < tt_content.image
tt_content.image = CASE
tt_content.image {
  key.field = section_frame
  # id des frames = 203
  203 = COA
  203 {
    10 >
    10 < lib.tt_content.image.10
    20 >
    20 < lib.tt_content.image.20
    20{
      # cropping f. Galerie
      1.file.width.field >
      1.file.height.field >
      1.file.width >
      1.file.width = 190c
      1.file.height >
      1.file.height = 190c
      1.file.maxW >
      1.file.maxW = 190c
      1.file.maxH >
      1.file.maxH = 190c
      1.file.width.override.field = imagewidth
      1.file.height.override.field = imageheight
      1.stdWrap.wrap = <div class="cropgal_pic">|</div>
    }
    20.stdWrap.wrap = <div class="galerie-img-wrapper">|</div>
20.if{
        value = 1
    #1 kleiner als imagecols
        isGreaterThan = imagecols 
                }
  }
  # rendering für alle anderen frames
  default = COA
  default {
    10 >
    10 < tt_content.image.10
    20 >
    20 < tt_content.image.20
  }
}

pageTSConfig:

TCEFORM.tt_content.section_frame {
     addItems {
         203 = galerie
     }
}

Problem:
Mit der CASE-Abfrage für das feld „section_frame“ funktioniert alles wie beabsichtigt.
Die zusätzliche Abfrage für das Feld „imagecols“ macht aber keinen Unterschied, egal was ausgewählt wird.

Ich denke das liegt dann irgendwo an der If-Abfrage. Hab ich da was offensichtliches übersehen oder falsch gemacht?

Gruß
Eduard

OnkelEdi ·

Hallo toifel,

Danke für die schnelle Antwort.
Hab noch mal nachgesehen. Das "field" ist schon drin. Ist mir hier bei der Eingabe wohl verloren gegangen. Also daran liegt es scheinbar nicht.

Gruß
Eduard

Julian.​Hofmann ·

Hallo Eduard.

Problem scheint recht trivial zu sein:
Du kopierst (über Zwischenschritt) tt_content.image.20 auf tt_content.image.203.20.
tt_content.image.20 ist ein cObject USER. USER hat aber keine if-Eigenschaft ( TSref: USER & USER_INT ) => Dein if wird ignoriert.

Viele Grüße
Julian

OnkelEdi ·

Hallo Julian,

So erklärt scheint das ganz logisch 🙂
Kenn mich da aber dann doch nicht so gut aus.
Was wäre denn ein Ansatz um das Problem zu lösen? Kannst du mir da einen Tipp geben?

Gruß
Eduard

Julian.​Hofmann ·

Eine Möglichkeit wäre, eine Zwischenebene einzuschieben:

tt_content.image.203.20 = COA
tt_content.image.203.20 {
    if...
    10 < lib.tt_content.image.20
}

COA hat nämlich im gegensatz zu USER die if-Eigenschaft (TSref COA).

OnkelEdi ·

Hallo Julian,

Danke für die Antwort.
Sowas ähnliches hab ich mir auch überlegt. Aber das ändert doch nichts oder?
Denn abgefragt werden muss ja immer noch imagecols in lib.tt_content.image.20.
Somit ändert sich ja nichts. Oder hab ich das falsch verstanden?

Gruß
Eduard