Zum Hauptinhalt gehen

Strukturvariablen über CaaS

Kommentare

9 Kommentare

  • Zendesk API User
    Author: Peter_Jodeleit - 1/17/2023 13:28

    Das ist korrekt, Strukturvariablen werden nicht über den CaaS bereitgestellt.
    Könnt ihr den Anwendungsfall erläutern, für den ihr Strukturvariablen einsetzt?

    0
  • Zendesk API User
    Author: f_koenig - 1/23/2023 13:52

    Wir nutzen das recht häufig um Teilbäumen unserer Website Werte mitzugeben.

    Wenn also z. B. Seiten in diesem Teilbaum Informationen zum Thema "X" beinhalten setzen wir eine Strukturvariable "ss_productinfo" = "X". Dann können wir auf allen Unterseiten in den Templates oder Skripten mit dieser Variable arbeiten.

    Ich hätte daher eigentlich erwartet, dass diese Daten auch bei einem Headless-Konsum der Daten verfügbar sind, z. B. im Navigation Service oder eben im CaaS. 

    Was für Möglichkeiten haben wir denn hier sonst?

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 1/23/2023 14:28

    Der Weg dafür ist über ein Custom-Data-Element im Navigation Service.

    0
  • Zendesk API User
    Author: f_koenig - 1/25/2023 13:52

    OK, danke. Ich habe die Dokumenation zu den Custom-Data-Elementen im Navigation Service gefunden. Hast du noch einen Hinweis für mich, wie ich innerhalb des Skriptes navigation_service_custom_data die Strukturvariablen auslesen kann um sie entsprechend zu übergeben?

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 1/25/2023 14:43

    Hilft dir das Beispiel hier: https://docs.e-spirit.com/odfs/access/de/espirit/firstspirit/access/store/sitestore/PageRefFolder.html 

    try to retrieve a DataValue (variable) with desired name

     

    0
  • Zendesk API User
    Author: f_koenig - 1/26/2023 12:59

    Ja, das hilft mir, danke.

    Ich habe es jetzt so weit:

    import de.espirit.firstspirit.access.store.sitestore.PageRef;

    if (e instanceof PageRef) {
        folder = e.getParentFolder();
        if (folder != null) {
            data = folder.getData();
            variableName = "ss_division";
            dataValue = data.get(variableName);

            if (dataValue != null) {
                customData.put(variableName, dataValue.getEditor().get(language));
            }
        }
    }

    Allerdings kann ich mit getParentFolder() immer nur den direkt parent SiteStoreFolder holen und dort auf die Variable prüfen. Die Strukturvariablen dagegen sind ja rekursiv. Gibt es dazu eine gute Lösung oder muss ich manuell rekursiv nach oben durch die Struktur iterieren bis ich einen Folder gefunden habe an dem der Wert gesetzt ist, bzw. bis ich am Root-Knoten angekommen bin?

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 1/26/2023 13:23

    Das sieht doch sehr gut aus.

    Und ich glaube ihr müsst da selber rekursiv die Hierarchie hoch gehen, zumindest kenne ich keine andere Möglichkeit.

    0
  • Zendesk API User
    Author: f_koenig - 1/26/2023 14:38

    OK, danke.

    Hier mal mein fertig funktionierendes Skript, falls es mal jemand benötigt:

    import de.espirit.firstspirit.access.store.pagestore.Page;
    import de.espirit.firstspirit.access.store.sitestore.PageRef;
    import de.espirit.firstspirit.access.store.sitestore.PageRefFolder;
    import de.espirit.firstspirit.store.access.sitestore.SiteStoreRootImpl;

    // Strukturvariable ss_division
    ss_division = "";

    // Ordner rekursiv nach oben durchlaufen
    recurse(folder) {
        if (folder != null && (folder instanceof PageRefFolder || folder instanceof SiteStoreRootImpl) ) {

            // Strukturvariablen auslesen
            data = folder.getData();
            dataValue = data.get("ss_division");

            // Variablen nicht überschreiben
            if (ss_division.equals("") && dataValue != null) {
                ss_division = dataValue.getEditor().get(language);
            }

            // Weiter nach oben rekursieren
            recurse(folder.getParentFolder());
        }
    }

    // Für jede Seite
    if (e instanceof PageRef) {
        recurse(e.getParentFolder());

        // Strukturvariable ss_division
        customData.put("ss_division", ss_division);
    }

    Gibt es eigentlich einen speziellen Grund warum die Strukturvariablen nicht automatisch im Navigation Service ausgegeben werden?

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 1/26/2023 15:31

    Vielen Dank, ich habe dein Skript als Lösung markiert.

    Alle Site-Store Variablen im Navigation Service zu haben ist nicht das, was alle tatsächlich alle Kunden wollen. Neben dem Nachteil der erhöhten Payload sind die Anforderungen hier (nur bestimmte Variablen, nur bestimmte Werte, mit oder ohne "Vererbung", etc.) zu unterschiedlich.

    0

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