Shopware 6 Store-Api Erlebniswelt

Hallo Shopware-Community,

ich versuche momentan mit der Store-Api die Erlebniswelten (cms_page) zu holen. In der Dokumentation braucht man dafür die cmsPage ID.

https://docs.shopware.com/en/shopware-platform-dev-en/store-api-guide/navigation#get-cms-page

Diese bekomme ich beim besten willen aus keinem request / finde ich nichts in der Dokumentation & vendor Ordner wo ich rückschlüsse raus ziehen kann, wie ich an die cmsPage ID komme.

 

Hoffe Ihr könnt mir helfen.

Grüße

Du kommst über die Navigation wenn sie cms Elemente enthält an die ID. Wenn du nur eine Kategorie hast, kannst du von dort aus auch die CMS Page laden

@Shyim schrieb:

Du kommst über die Navigation wenn sie cms Elemente enthält an die ID. Wenn du nur eine Kategorie hast, kannst du von dort aus auch die CMS Page laden

 Gibt es eine Möglichkeit nur die „landingpage“ oder die normalen „pages“ zu holen? Habe es jetzt geschafft (sofern ich genug Memory size habe) die Category durch die main-navigation zu holen.

{
    "parentId": "2a227ad46fe44937aa2b87bab4848543",
    "name": "Batterien",
    "cmsPageId": "d3370ce7a4ab4dbba355527ba0efc961",
    "id": "5dd19de6c0904d29bea76952f47bf401",
    "apiAlias": "category"
},

Abfrage Url:

/store-api/v1/navigation/main-navigation/main-navigation

 

Update: Was ich vor habe, ist über die API einzelne cmsPages direkt zu laden. Komplettes HTML. Habe jetzt mal über die Datenbank die cmsPage ID von der Startseite genommen, dort ist zwar alles verschachtelt, aber gibt es eine Möglichkeit direkt die schon gerenderte Seite sich via API zu holen?

 

Du kriegst kein HTML. Du kriegst nur die Daten als JSON. Die API ist für den Headless Betrieb entwickelt, von daher gibt es kein HTML zurück.

Du kannst entweder Die Page über die Kategorie holen (/store-api/v1/category/xxxxxx) oder die Cms Seite direkt (/store-api/v1/cms/xxxxxxx).

@Shyim schrieb:

 

Du kriegst kein HTML. Du kriegst nur die Daten als JSON. Die API ist für den Headless Betrieb entwickelt, von daher gibt es kein HTML zurück.

Du kannst entweder Die Page über die Kategorie holen (/store-api/v1/category/xxxxxx) oder die Cms Seite direkt (/store-api/v1/cms/xxxxxxx).

Für die /store-api/cms/ brauch ich ja schon die cmsPageId. Wenn ich jetzt main-navigation abfrage, bekomme ich alle Categories und deren cmsPageIds zurück.

Welche route muss ich denn benutzen um die Landingpages zu bekommen? Bzw. was würde am meisten Sinn machen um komplett die Storefront gerendet zurück zu bekommen? Die API ist für den Headless Betrieb gemacht, klar. Nur würde ich gerne vereinzelnt die gepflegten Erlebniswelten zurück geben. Das man nicht zusätzlich irgendwo das Frontend pflegen muss.

HTML bekomme ich in „maßen“ zurück. Halt alles irgendwie zerkleinert in den einzelnen Blöcken.

"name": "Startseite",
    "sections": [
        {
            "type": "default",
            "blocks": [
                {
                    "type": "text-on-image",
                    "slots": [
                        {
                            "data": {
                                "content": "\n\nMitgliedschaftVersandkostenfreie Lieferung für einmalig 0€ übers ganze Jahr & viele weitere Vorteile!",
                                "apiAlias": "cms_text"
                            },
                            "id": "a9b2c3f64fc446778c4f29c542bd8c66",
                            "apiAlias": "cms_page_slot"
                        }
                    ],
                    "apiAlias": "cms_page_block"
                }
            ],
            "apiAlias": "cms_page_section"
        },
        [...]
    },
}

 

Wenn du die Landingpage gerendert zurückhaben möchtest ist die Store-API der falsche weg. Du kriegst hier nur die die eingesetzen Blöcke und ihre Konfiguration um daraus selber eine zu rendern mit custom templates oder so.

Für die gerenderte Seite kannst du /widgets/cms/navigation/ID verwenden. 

@Shyim schrieb:

Wenn du die Landingpage gerendert zurückhaben möchtest ist die Store-API der falsche weg. Du kriegst hier nur die die eingesetzen Blöcke und ihre Konfiguration um daraus selber eine zu rendern mit custom templates oder so.

Für die gerenderte Seite kannst du /widgets/cms/navigation/ID verwenden. 

Genau das habe ich gesucht, dankeschön. Kann ja doch so einfach sein. 

Darf ich das nochmal aufgreifen, das ist interessant! Was genau möchtest du mit der API und der Storefront anfangen? Also was war der Plan ? Ging es um automatisierungen von Content bzw. Verweisen?

Das ist nun 2 Jahre her, sorry das weiß ich nicht mehr.

Ich würde das Thema gerne noch einmal aufgreifen. Im Endeffekt stehe ich vor dem selben Problem.

Alle Seiten welche sich in der Navigation und somit in den Kategorien befinden bekomme ich über den Endpunkt: /navigation/main-navigation/main-navigation ODER über „/category“.

Allerdings bekomme ich die Landingpages nicht, bzw. finde ich keinerlei Endpunkte welche mir all meine Landingpages zurückgeben.

Ich habe lediglich diesen Endpunkt gefunden:
„/store-api/landing-page/{landingPageId}“

Der bringt mir aber nichts weil ich die ID ja garnicht bekomme.
Nehmen wir an der User legt eine Landingpage an und verlinkt diese nicht über eine Kategorie, sondern über einen Link in einem Rich Text zB. Dann habe ich ein Problem weil ich dann die Landingpage nicht kenne. Ich bräuchte also einen GET Endpoint alá „/store-api/landing-pages“, gibt es sowas?

LG
Alex und Frohe Weihnachten an Alle :wink:

Okay habe die Lösung:

Man muss die Landingpage anlegen und muss diese dann auch in der Navigation verlinken. Sofern man das nicht tut klappt es nicht.

Wenn das getan ist, reicht der „/category“ API Endpunkt aus und man hat die Landingpage ID.