Zum Hauptinhalt gehen

ContentSelect mit Parameter und Filterung

Kommentare

4 Kommentare

  • Zendesk API User
    Author: kohlbrecher - 8/15/2017 12:27

    Hi Tobi,

    wenn mich nicht alle täuscht, dann passt bei dir die Reihenfolge nicht. Der ContentSelect wird bereits vor dem Durchlauf deiner Schleife ausgeführt. Du kannst dann auf das Ergebnis zugreifen, dieses aber nicht mehr beeinflussen.

    Wie genau sieht denn dein Anwendungsfall aus?

    Grüße

    Jan

    0
  • Zendesk API User
    Author: aVogt - 8/18/2017 13:54

    Hallo Tobi,

    ich habe es anders verstanden.

    Ausgehend von

    ... will ich dem ContentSelect übergeben, damit mir der entsprechende Datensatz ausgeliefert wird ...

    müsstest Du auch wirklich das ContentSelect für jeden Wert aufrufen  Ein

    $CMS_VALUE(cs_ad_mapping)$

    reicht da m.E. nicht.

    Wir haben so etwas wie folgt umgesetzt:

    Aufruf in der Seitenvorlage:

    Für jeden Eintrag von dem der Datensatz ermittelt werden soll, wird ein Script aufgerufen (bei uns wird die jeweilige Tabelle, eine ID des zu ermittelnden Datensatzes  und der Resultname des Contentselect übergeben)

    $CMS_RENDER(script:"SCRIPTNAME", TABELLE:"VORDRUCKE",RESULTNAME:"cs_VD",DSID: VDID)$

    Das Script sieht wie folgt aus

    //!BeanShell

    // Stand: 25.09.2013

    out = new StringBuilder();

    out.append("<CMS_HEADER>");

    out.append(" <CMS_FUNCTION name=\"contentSelect\" resultname=\"").append(RESULTNAME).append("\" context=\"PAGE\">");

    out.append("   <CMS_VALUE_PARAM name=\"value_bez\" value=\"").append(DSID).append("\" />");

    out.append("   <CMS_PARAM name=\"schema\" value=\"SFO\" />");

    out.append("   <QUERY entityType=\"").append(TABELLE).append("\">");

    out.append("    <FILTERPARAM parameter=\"value_bez\" datatype=\"java.lang.String\" />");

    out.append("    <EQ attribute=\"FS_ID\" parameter=\"value_bez\"/>");

    out.append("   </QUERY>");

    out.append("  </CMS_FUNCTION>");

    out.append("</CMS_HEADER>");

    result.setValue(out.toString());

    Alternativ kannst Du dir auch erst alle Datesätze holen und z.B. in einer Map speichern (mit Name, Datensatz - geht nat. nur, wenn der Name eindeutig ist). Dann kannst Du über dein Array iterieren und in der Map nachsehen, ob der Name darin enthalten ist.

    Welcher Weg performanter ist hängt sicher davon ab, von wie viel Werten Du den Datensatz haben möchtest und wie viele Datensätze vorhanden sind.

    Aber vielleicht habe ich dein Anliegen auch falsch verstanden

    Grüße Andreas

    0
  • Zendesk API User
    Author: neumann - 9/1/2017 11:00

    Hallo Tobi,

    benötigst Du noch weitere Hilfe oder hat Dir die Antwort von Andreas bereits geholfen?

    In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere

    Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

    gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

    Viele Grüße

    Emre

    0
  • Zendesk API User
    Author: TWidmayer - 9/5/2017 13:46

    Hallo Andreas,

    ja mittlerweile hatte ähnlich wie dein Alternativ-Vorschlag gelöst!

    Das mit dem Script sieht aber auch spannend aus.

    Das Problem bei meiner Vorgehensweise war glaub ich,

    dass sofern man einmal eine Variable per Parameter dem ContentSelect übergeben hat,

    diese nicht überschrieben wird, bzw. überschrieben an den ContentSelect weitergegeben wird.

    Scheint als würde der ContentSelect mit dem anfangs übergebenem Parameter bestehen bleiben

    viele Grüße

    Tobi

    0

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