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.