Gelöst! Ich nehm zurück, was ich da behauptet habe wegen fehlendem if-else. Geht sehr wohl, einfach mit CASE.
Der Fehler war folgender: weil ich keinen anständigen Entweder-Oder-Switch hinbrachte, hatte ich einfach zwei CONTENT-Objekte mit den identischen if-Bedingungen hintereinandergesetzt, das eine einfach mit "negate = 1". Das geht aber so nicht, die beissen sich.
Das zweite Contentobjekt hat in der Folge immer einen Datensatz weniger aus tt_content ausgelesen, als es sollte (mit dem Ergebnis, dass gar nichts angezeigt wurde, wenn nur 1 Datensatz auf der Seite war).
Interessant und mir unerklärlich ist aber, dass dieses Verhalten nur aufgetreten ist, wenn die für den Vergleich herbeigezogene Kommaliste als Objekt kopiert wurde, also so:
10.if {
isInList.field = uid
value.cObject < temp.displayedpages_wimage
negate = 1
}
War sie statisch erfasst, also:
10.if {
isInList.field = uid
value = 1,3,9,20
negate = 1
}
wurden alle Datensätze komplett ausgelesen. Seltsam...
Aber eben, die Botschaft ist: wenn es entweder-oder sein soll - dann CASE.
Danke Georg nochmal für die initiale Hilfe...
Urs
***
Weil ich beim recherchieren nicht viele Beispiele für CASE gefunden habe, hier mein Code, vielleicht bringt's wem mal was. Wir befinden uns in einem TMENU; hier werden Texte aus einer Tabelle ausgelesen, die dann in unterschiedlicher Länge (je nachdem, ob sie in der Liste sind oder nicht) gecroppt werden.
Das Objekt temp.displayedpages_wimage ist eine Kommaliste mit UIDs, die mit RECORDS aus einer Tabelle geholt worden sind.
temp.gecroppte_texte = CASE
temp.gecroppte_texte {
key.cObject = COA
key.cObject {
10 = TEXT
10.value = long
10.if {
isInList.field = uid
value.cObject < temp.displayedpages_wimage
negate = 1
}
20 = TEXT
20.value = short
20.if{
isInList.field = uid
value.cObject < temp.displayedpages_wimage
negate = 0
}
}
default = TEXT
default.value >
short = CONTENT
short {
table = tt_content
select {
pidInList.field = uid
where = colPos = 0
}
stdWrap {
stripHtml = 1
wrap = </strong><br />|
crop = 100 | ... | 1
}
}
long = CONTENT
long < .short
long.stdWrap.crop = 180 | ... | 1
}