+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Genaue Syntax einer speziellen If Abfrage in Typoscript, oder doch besser CASE?

  1. #1
    TP-Junior heikehk macht alles soweit korrekt
    Registriert seit
    Feb 2011
    Beiträge
    11

    Genaue Syntax einer speziellen If Abfrage in Typoscript, oder doch besser CASE?

    Hallo Ihr anderen,

    Ich bin erst seit zwei Wochen dabei mich mit Typoscript in einem realen Projekt auseinander zu setzen. Ich habe schon viele Bücher hier liegen, surfe wie ein Weltmeister und grüble.

    Mit dieser Technik habe ich schon fast alles gelöst, was ich mit meinem Template machen möchte und bin schon ziemlich stolz darauf. Ich arbeite ohne Templavoila, mit dem ich nicht so wirklich warm geworden bin und ich möchte auch Typoscript begreifen. Bisher dachte ich, ich wäre auf einem guten Weg, aber jetzt hänge ich seit Tagen über dem gleichen Problem, bei dem es mittlerweile nicht mehr darum geht, ob ich das letztendlich so machen werde, wie ich ursprünglich dachte.

    Ich habe folgendes Objekt definiert in dem ich abfrage, ob in einer Content Spalte ein Inhalt vorhanden ist.

    Code:
    page.temp.30 = COA
    page.temp.30 {
          10 = TEXT
          10 {
            value = 1
            if.isTrue.numRows < styles.content.getLeft
          }
          20 = TEXT
          20 {
            value = 2
            if.isTrue.numRows < styles.content.get
          }
          30 = TEXT
          30 {
            value = 3
            if.isTrue.numRows < styles.content.getRight
          }
    
    }
    Gebe ich dieses Objekt in einem Mark mit page.temp.30 aus, dann steht dort:

    1 - nur die linke Spalte hat einen Inhalt
    12- Links und mitte haben einen Inhalt
    23 - Mitte und rechts haben inhalt
    123 - alle drei Spalten haben einen Inhalt
    13 - nur links und rechts
    oder eben nix

    Ich möchte nun diese Zahlenkombinationen abfragen und eventuell an dieser Stelle direkt das Template zuweisen, welches für die jeweilige Kombination vorbereitet ist (inklusive einem, welches dann zieht, wenn nichts eingetragen ist).

    Ungeachtet der Tatsache, dass ich diese Sache auch anders lösen könnte, mache ich hier seit Tagen Kopfstände und bekomme diese aus Programmierersicht simple Abfrage nicht hin.

    Ich habe es zuerst mit CASE probiert.
    Das hat irgendwie nicht geklappt.
    Jetzt dachte ich, dass eine solche Abfrage helfen könnte:
    Code:
    page.temp.40 = COA
    page.temp.40 {
          
          10 = TEXT
          10 {
            value = 25_50_25 Aufteilung
            if.value = 123
            if.equals < page.temp.30
             }
      }
    Aber wie ich mich auch auf den Kopf stelle, es geht nicht. Ich lasse mir den Wert über einen Mark zum Debugging ausgeben, aber bei oben gezeigtem IF bleibt es auch dann leer, wenn in allen drei Spalten was steht und die Ausgabe von page.temp.30 123 ist.

    Was mache ich falsch?
    Wie würde die passende CASE-Variante aussehen (die würde mir eher gefallen)?

    Ich habe ja das gefühl, dass es daran liegt, dass page.temp.30 in drei Teilen besteht und dann dieses 123 nicht interpretiert werden kann, aber wir bekomme ich das hin?

    Bitte Bitte Bitte,
    kann mir jemand aus diesem Loch helfen?

    Danke
    Heike

  2. #2
    TP-Junior heikehk macht alles soweit korrekt
    Registriert seit
    Feb 2011
    Beiträge
    11
    Also ich habe gestern noch gegrübelt und recherchiert und dachte es läge eventuell daran, dass in meinem Objekt ja drei verschiedene Zahlen stehen und falls kein Inhalt vorhanden ja nix. Aus diesem Grund habe ich gesucht und gefunden, wie ich diese drei Zahlen addieren kann. Somit habe ich einen eindeutigen Zahlencode für jede Variante.

    Aber da Problem bleibt. Gebe ich das Ergebnis aus, dann ist alles OK.
    Packe ich das gleiche in mein CASE-Objekt als Key, dann wird nur der Default wert ausgeführt.

    Hier der aktualisierte Code von page.temp.30, welches das richtige Ergebnis liefert und page.temp.40, dem nicht funktionierenden CASE:

    Code:
    page.temp.30 = COA
    page.temp.30 {
          10 = TEXT
          10.value = 0
          20 = TEXT
          20 {
            value = +1
            if.isTrue.numRows < styles.content.getLeft
          }
          30 = TEXT
          30 {
            value = +2
            if.isTrue.numRows < styles.content.get
          }
          40 = TEXT
          40 {
            value = +3
            if.isTrue.numRows < styles.content.getRight
          }
          stdWrap.prioriCalc = 1
    }
      
    page.temp.40 = CASE
    page.temp.40 {
          key {
          10 = TEXT
          10.value = 0
          20 = TEXT
          20 {
            value = +1
            if.isTrue.numRows < styles.content.getLeft
          }
          30 = TEXT
          30 {
            value = +2
            if.isTrue.numRows < styles.content.get
          }
          40 = TEXT
          40 {
            value = +3
            if.isTrue.numRows < styles.content.getRight
          }
          stdWrap.prioriCalc = 1
          }        
          default = TEXT
          default.value = was anderes
          6 = TEXT
          6.value = 25_50_25 Aufteilung
          5 = TEXT
          5.value = 66_33 Aufteilung
          4 = TEXT
          4.value = 50_50 Aufteilung
          3 = TEXT
          3.value = 33_66 Aufteilung
          2 = TEXT
          2.value = 100 Aufteilung
       
      }
    Den CASE so zu schreiben:
    Code:
    page.temp.40 = CASE
    page.temp.40 {
          key < page.temp.30
          default = TEXT
          default.value = was anderes
          6 = TEXT
          6.value = 25_50_25 Aufteilung
          5 = TEXT
          5.value = 66_33 Aufteilung
          4 = TEXT
          4.value = 50_50 Aufteilung
          3 = TEXT
          3.value = 33_66 Aufteilung
          2 = TEXT
          2.value = 100 Aufteilung
       
      }
    bringt auch nix.
    Ach mensch, hat denn keiner eine Idee? Irgendwie denke ich immer, dass ich direkt vor dem Ergebnis stehe und endlich kapiert habe, was da passiert und dann klappt es doch nicht.

    Ich habe das Gefühl, dass ich, wenn ich das nicht kapiere, etwas Grundlegendes falsch verstehe und ich will es wirklich lernen. Ich habe schon gelesen, dass man, wenn man schon programmiert hat, mit Typoscript etwas Probleme hat, aber, das kann doch nciht sein, dass die gleiche Abfrage, die bei mir das gewünschte Ergebnis bringt dann in der Abfrage nicht mehr funktioniert.

    Bin echt grad am Verzweifeln.
    Leider weiß ich zur Überprüfung, was er macht auch keine andere Alternative als eine Ausgabe über ein Mark. Der Object BRowser, der mir ja schon oft weiter geholfen hat, ist für mich grad auch nicht interpretierbar.

    Hilfähhhh

    Heike

+ Antworten

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 29.11.2009, 12:34
  2. Problem mit Typoscript in einer DS
    Von Wolfgang G im Forum TYPO3
    Antworten: 4
    Letzter Beitrag: 26.07.2007, 18:49
  3. Excel - IF/THEN bzw. CASE-Abfrage
    Von PeterBrand im Forum Einfach so ...
    Antworten: 6
    Letzter Beitrag: 03.09.2003, 13:39
  4. eingabe abfrage case insensitve
    Von lurch27 im Forum Flash & Multimedia
    Antworten: 0
    Letzter Beitrag: 16.07.2003, 11:55

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51