patric_dosch
I'm new here

Inhalt einer referenzierte Seite auslesen

Jump to solution

Bin hier über folgenden Artikel Meta-Daten einer in der Struktur referenzierten Seite auslesen gestolpert und habe ein ähnliches Problem. Allerdings möchte ich direkt auf den Inhalt einer referenzierten Seite zugreifen.

Über $CMS_VALUE(ref(ss_overview).page.body("content"))$ bekomme ich den bereits gerenderten Content des Bereiches. Ich muss aber auf die dort gepflegen Inhalte zugreifen.

Mein Ergebnis soll etwas sein wie:

$CMS_FOR(entry,ref(ss_overview).page.[...].cs_entries)$

     $CMS_VALUE(entry.title)$

$CMS_END_FOR$

Vielleicht hat jemand schon ein ähnliches Problem gelöst und weiß Rat ... freue mich auf Antworten.

Grüße, Patric

17 Replies

etwas unschön ist gut formuliert Smiley Wink

0 Kudos

Zudem könnte man ja ermöglichen, dass man (da keine Eindeutigkeit bei Sections über den Referenznamen herrscht) mehrere Elemente zurückgeben, die alle diesen Namen haben und man selbst kann dann z.B. über den Kontext rausfinden, ob das die Section ist die man haben wollte.

Die API soll einen dazu leiten, diese beiden Schritte umzudrehen: Erst über den Kontext gehen (z.B. Eingrenzen auf die Seite), dann den Namen vergleichen.

Ich bin mir sicher, das es auch für deinen Anwendungsfall eine geeignete Alternative gibt. Daher: Kannst du deinen Anwendungsfall schildern? Gerne auch in einem neuem Top-Level-Posting und hier nur darauf verweisen..

Peter
0 Kudos

Dass die API einem dazu bringen soll erst über den Kontext zu gehen, verstehe ich. In meinem Anwendungsfall habe ich auch den Kontext Page / Body. Allerdings verstehe ich nicht wieso ich über alle Sections iterieren soll, um die Section mit meinem Namen zu finden und das nicht in einer Methode der API passieren kann.

Habe gerade noch mal im JavaDoc nachgeschaut.

Ich vermute, ich habe meine Frage schon selbst beantwortet.

Ist von euch die folgende Methode dafür gedacht?

StoreElement.getChildren(TypedFilter<T> filter, boolean recurse)

So dass man dann praktisch einen TypedFilter mit einem String-Vergleich implementiert ?

Verstehe ich das richtig ?

0 Kudos

Ja, das ist eine Möglichkeit.

Leider haben es die funktionalen Sprach-Aspekte ja nicht nach Java 6 und 7 geschafft, so dass dieser Weg wohl erst ab Java 8 seinen volle Stärke auspielen kann.

Peter
0 Kudos

Hallo ich habe ein ähnliches Problem.

Über die Navigation-Funktion lasse ich mir die Seiten, aus einem Ordner in der Struktur ausgeben.

Die referenzierten Seiten enthalten Absätze. In den Absätzen sind Einträge aus Datenquellen über das FS_LIST-Element eingebunden.

Nun möchte ich über die Seite, auf die Absätze (nur der allererste Absatz) auf diese zugeordneten Datenquellen-Einträge zugreifen und dort die hinterlegte Überschrift des Datensatzes auslesen.

Die Seite sieht im Inhalt so aus und darunter habe ich noch den Ausschnitt aus dem Absatztemplate zur Einbindung der Datenquelle eingefügt:

st_viewportlist.jpg

Meine Navigation-Funktion sieht momentan so aus:

    <CMS_FUNCTION name="Navigation" resultname="fr_result">

        <CMS_PARAM name="expansionVisibility" value="all"/>

        <CMS_PARAM name="wholePathSelected" value="1"/>

        <CMS_PARAM name="siteMap" value="1" />       

        <CMS_VALUE_PARAM name='root' value='folder'/>

        <CMS_ARRAY_PARAM name="pageRefRendering">

            <CMS_ARRAY_ELEMENT index="0..7"><![CDATA[

            $CMS_IF(page == #nav.ref.referenceName)$

             $CMS_IF(#nav.ref.getPage().getTemplate.getUid() ==  "overview")$

               $CMS_SET(pagelist, #nav.ref.getPage().getBodyByName("content").getChildren())$

               $CMS_SET(my_pagelist, pagelist.toList())$

                    $CMS_IF(my_pagelist.size > 0)$                                             

                        $CMS_FOR(section_item, my_pagelist.get(0).getData())$

                            $CMS_IF(section_item.getName() == "st_viewportlist")$

                                $CMS_VALUE(section_item.getFormData().get(#global.project.masterLanguage, "st_viewportlist").get())$

                                $--CMS_VALUE(section_item.getData().get("st_viewportlist").toList())--$

                            $CMS_END_IF$

                        $CMS_END_FOR$                            

                    $CMS_END_IF$

                $CMS_END_IF$

            $CMS_END_IF$

            ]]></CMS_ARRAY_ELEMENT>

        </CMS_ARRAY_PARAM>

    </CMS_FUNCTION>

Bei den fett gedruckten Befehlen komme ichnun nicht weiter. Ich befinde mich schon auf dem ersten Absatz und möchte dort das Element st_viewportlist auslesen, damit ich die Datensätze im Zugriff habe.

Auf dem Datensatz möchte ich dann das Feld cs_headline ausgeben.

Kann hier jemand helfen?

0 Kudos

Ich habe gerade auch noch diese Variante ausprobiert:

$CMS_SET(my_list, section_item.getData().get("st_viewportlist"))$

$CMS_VALUE(my_list.get(0).cs_headline)$

Leider auch ohne Erfolg.

0 Kudos

Hey, mein Thema ist leider schon so lange her, aber wenn ich mich richtig erinnere solltest du

$CMS_SET(set_viewportlist,section_item.getFormData().get(#global.project.masterLanguage, "st_viewportlist").get())$

Danach über die Liste.

$CMS_FOR(entry, set_viewportlist)$

    $CMS_VALUE(entry.title)$

$CMS_END_FOR$

Ich hoffe ich kann dir helfen.

Grüße, Patric

0 Kudos

Hallo, danke für die Antwort. Leider bekomme ich hier kein Ergebnis zurück 😞

0 Kudos