Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2007-06-13 21:07:09

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,316

[de-de] if/else Logik bei einmaliger Verschachtelung

Ich habe jetzt fast zwei Stunden dafür gebraucht, eine if/else Logik mit einfacher (1 mal) Verschachtelung ans Laufen zu kriegen. Wirklich nur die Logik. Dass die Verschachtelung als output_form separat gelagert wird, wusste ich.
Das muss doch nicht sein! Es lag zwar auch an der unübersichtlichkeit all der Spitzklammern sowie der customfield-Namen, die ich gerne leichtverständlich (also lang ;) halte, aber selbst mit HTML-freiem Aufbau hat es mich Nerven gekostet.

Ich möchte da gerne besser werden. Gibt es da ein systematisches Vorgehen? Woran erkenne ich beispielsweise, was ich als erstes abfragen muss? Was wird wo hinein geschachtelt? Gibt es bei drei abzufragenden Optionen mehr als eine Lösungsmöglichkeit? Vielleicht bin ich noch zu vage, ich erzähle gern, was es zu erreichen gab und welche Vorgaben dazu gehörten. Vielleicht reicht das aber auch schon, und man muss nicht alles ganz genau wissen. Ich würde mich auch freuen, wenn hier ein Link zu einer Anfängerseite für if/else-Logik gepostet würde. Was ich bisher ergoogelt hab, war für mich zu unverständlich, ich habe eben keine Programmiersprache gelernt.
Danke.

Last edited by uli (2007-06-13 21:08:18)


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#2 2007-06-14 05:44:11

wet
Developer Emeritus
From: Vöcklabruck, Austria
Registered: 2005-06-06
Posts: 3,391
Website GitHub Mastodon

Re: [de-de] if/else Logik bei einmaliger Verschachtelung

Bahnhof…

Schreib mal in einfachen Worten auf, was du erreichen möchtest:

Etwa so

wenn custom_field_1 das wort ‘adam’ enthält
dann will ich Baustein ‘foo’ ausgeben
andernfalls will ich Baustein ‘bar’ ausgeben

oder etwas komplexer

wenn custom_field_1 das wort ‘adam’ enthält
und wenn custom_field_2 das wort ‘eva’ enthält will ich Baustein ‘foo’ ausgeben
andernfalls will ich Baustein ‘bar’ ausgeben

Offline

#3 2007-06-14 12:51:54

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,316

Re: [de-de] if/else Logik bei einmaliger Verschachtelung

Robert, du hast mit deinem “Bahnhof” völlig recht. Wenn ich das heute lese ohne meinen brainschwurbel … es geht nicht mal klar daraus hervor, dass ich es geschafft hatte.
Allein deine Art der wenn-dann-Fragestellung und die damit verbundenen Bausteine zeigen mir die unverkrampfte Denke.
OK. Ziel war sowas:

Wenn custom field “Preis” den Preis enthält (if 1): Ausgabe von »custom field “Preis” und Link “Interesse”«
Wenn custom field “Preis” das Wort “verkauft” enthält (if 2): Ausgabe von »Text “Das Bild ist leider verkauft”«
Wenn custom field “Auftragsarbeit” das Wort “ja” enthält (if 3): Ausgabe von »custom field “Preis”, Text “Das Bild ist leider verkauft” und Link “Auftragsarbeit”«
(der Preis darf vom Kunden dann natürlich nicht gelöscht werden.
Notiz an mich selbst: hier zur Sicherheit chh_if_data einpflanzen)

Meine Lösung ist jetzt

<txp:if_custom_field name="Auftragsarbeit möglich?" val="ja"> (if 3)
Preis
verkauft
Link
<txp:else />
<txp:if_custom_field name="Preis (nur Zahl) oder »verkauft«" val="verkauft"> (if 2)
verkauft
<txp:else /> (if 1)
Preis
Link
</txp:if_custom_field>
</txp:if_custom_field>

Wobei hier die in die form ausgelagerte Verschachtelung nur der Lesbarkeit halber inline steht.

Mich interessiert nun, wie das jemand mit Programmierkenntnissen von der Systematik her anginge. Wieso war es logisch, if3 als erstes abzufragen? Ist es völlig klar, dass hier verschachtelt werden muss oder geht es auch flach? Hab ich die effizienteste Lösung gewählt? Oder gab es sogar nur eine?
Außerdem:
Kann man die Systematik in eine Formel fassen, damit Änderungen in der Aufgabenstellung einfacher begegnet werden kann? Und woran kann ich bei anderen Augabenstellungen erkennen, was am effizientesten ist, ob ich verschachteln muss, ob es nur einen Weg gibt?

Last edited by uli (2007-06-14 13:03:59)


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

Board footer

Powered by FluxBB