Zum Hauptinhalt gehen

Strukturvariablenwert einer definierten Pageref auslesen

Kommentare

5 Kommentare

  • Zendesk API User
    Author: Hewera-Harz - 11/18/2021 9:06

    Hallo Holger,

    deinen Vorschlag habe ich versucht. Leider kommt für den Part mit isSet eine Fehlermeldung beim Speichern der Vorlage.

    0
  • Zendesk API User
    Author: hoebbel - 11/18/2021 9:35

    Hallo Petra,

    UPS - das isSet() so nicht funktioniert, hatte ich nicht auf dem Schirm :smileysad:

    Dann fürchte ich, dass Du über das form gehen musst, also beispielsweise so:

    $CMS_SET(ref,#global.page.meta("md_test_pageref").getPageRef)$

    $CMS_SET(set_struktur_variable,"")$

    $CMS_FOR(count,[1..ref.depth])$

                    $CMS_IF(!ref.getParentFolder.getFormData.form.findEditor("ss_robots").isNull && !ref.getParentFolder.getFormData.get("ss_robots").isEmpty)$

                                    $CMS_SET(set_struktur_variable,ref.getParentFolder.getFormData.get(#global.language,"ss_robots").get())$  

                                    $CMS_SET(void,#for.BREAK)$

                    $CMS_END_IF$

    $CMS_SET(ref,ref.getParentFolder())$

    $CMS_END_FOR$

    $CMS_VALUE(set_struktur_variable)$

    getFormData.form.findEditor liefert NULL, wenn der Editor nicht vorhanden ist. Auf die Art kann man dann ohne Fehler prüfen, ob die Struktur-Variable gesetzt ist oder nicht.

    Ich habe in das Beispiel mal das #for.BREAK mit eingebaut, so dass die Schleife abgebrochen wird, sobald der Wert gefunden wurde. Statt dessen kannst Du aber natürlich auch weiterhin prüfen, ob die Variable "set_struktur_varaible" Inhalt hat oder nicht. Sofern keine sehr tiefen Bäume geprüft werden, sollte dies Performancetechnisch kaum einen Unterschied machen, da die abgefragten Knoten sich im Cache befinden.

    Viele Grüße

    Holger

    0
  • Zendesk API User
    Author: hoebbel - 11/17/2021 15:18

    Hallo Petra,

    das erste, was mit auffällt, ist die Reihenfolge der Prüfungen. Du prüfst zuerst auf empty (das gibt die Exception) und dann auf Null. Möglicherweise reicht es schon aus, die beiden Prüfungen einfach umzudrehen.

    Wahrscheinlich aber nicht, da die Exception ja aussagt, dass es das FormField nicht gibt (und nicht, dass es Null ist).

    Funktioniert das hier?

    $CMS_IF(set_struktur_variable=="" && isSet(ref.getParentFolder.getFormData.get("ss_robots")) && !ref.getParentFolder.getFormData.get("ss_robots").isEmpty)$

    Also erst zu prüfen, ob die Variable existiert und wenn ja, ob die nicht leer ist.

    Tipp: Anstatt die Schleife jedes mal bis zur Sitestore Wurzel laufen zu lassen, würde ich diese mit $CMS_SET(void, #for.BREAK)$ [vor dem $CMS_END_IF$] vorzeitig abbrechen, sobald ich einen Wert gefunden habe. Dann kannst Du dir auch das set_struktur_variable=="" im $CMS_IF()$ sparen, da die $CMS_IF()$ Abfrage dann nur durchlaufen wird, solange die Variable noch nicht gesetzt ist.

    Viele Grüße

    Holger

    0
  • Zendesk API User
    Author: Hewera-Harz - 11/18/2021 9:53

    Hallo Holger,

    danke, das hat es gebracht, keine Fehler mehr.

    Wobei ich aber trotzdem nicht verstehe, dass man für Variablen in den Metadaten vererbte Werte abfragen kann und auch für Strukturvariablen anscheindend über einen Navigationsfunktion.

    Warum dann nicht in einer Abfrage für den Strukturordner selber?

    Danke für deine Hilfe und Lösung

    Viele Grüße

    Petra

    0
  • Zendesk API User
    Author: hoebbel - 11/18/2021 10:06

    Hallo Petra,

    gute Frage. Die Antwort lautet erst einmal, weil es nicht oft genug gewünscht wird.

    Der entsprechende Feature Request hat nur 25 Punkte, steht auf den internen Listen somit ziemlich weit unten.

    Viele Grüße

    Holger

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.