Seiten-ID anzeigen lassen

Wie kann man in den Templates die Seiten- oder Kategorie-ID anzeigen lassen?

@Max_Shop, @MarkusFischer wisst ihr, wie das geht, weil das wäre sehr nützlich, um bestimmte Seiten per CSS ändern zu können?

Vielen Dank im Voraus.

Ist geraten, aber ich würde es mit {{ page.id }} versuchen. Das bezieht sich dann aber auf die URL und nicht den Inhalt.

Falls du eine Testumgebung hast, und in der .env Datei von prod auf dev wechseln, und dann im Template {{ dump() }} eingeben. Das gibt dir alle verfügbaren Variablen aus.

Wenn ich {{ page.id }} oder {{category.id }} im Template einfüge, wird im Browser nichts angezeigt.

Mit {{ dump() }} im Template sieht man im Browser Einträge zu „#pageId“ und „#cmsPageId“, aber ich weiß nicht wie ich mir nur diese Werte ausgeben lassen kann. Wie geht das?

Was ist der Unterschied zwischen „#pageId“ und „#cmsPageId“?

Ohne es zu wissen, pageId wird die gesamte Seite sein, cmsPageId der CMS-Teil, der innerhalb einer page ist.

page.navigationId
page.cmsPage.id

Vielen Dank. Das könnte es sein. Wie hast du diese Angaben hergeleitet?

Mit {{ page.navigationId }} bekomme ich unterschiedliche Werte auf verschiedenen Seiten.
Mit {{ page.cmsPage.id }} bekomme ich zum Teil gleiche oder gar keinen Wert auf verschiedenen Seiten.

Per dump().

Ja, jede URL hat eine eigene navigationId.
Wenn eine Seite kein CMS-Element hat, dann kann auch keine cmsPageId ausgegeben werden.

Gibt es eine Anleitung für die Herleitung solcher Ausgaben und der Bedeutung der Variablen?

Es gibt bei dump() auch noch „#id“ und „#_uniqueIdentifier“.

Wofür sind die und wie spricht man die an?

Ohne es zu wissen würde ich behaupten: nein.

Die Herleitung ist das Arbeiten mit dem Shopware Repository auf GitHub.

Eine solche Anleitung könntest du als Verbesserungsvorschlag aufnehmen.

Danke nochmal. Du hast was drauf.

Gibt es statt der Seiten-Id eine einfache Möglichkeit, um nur bestimmten Seiten ein anderes CSS hinzuzufügen?

Im body Tag stehen je nach Typ der Seite Klassen, wie bspw. is-ctl-navigation oder is-act-home

Du könntest dann per .is-act-home div {} z.B. alle div Tags auf der Homepage ansprechen.

Ansonsten wird es schwierig einzelne Seiten ohne eine navigationId zu adressieren.

Die body-Klassen sind zu unspezifisch.

Deswegen wollte ich das mit der Seiten-Id machen.

Ich dachte, vielleicht gibt es noch einen einfacheren Weg, wie CSS im Backend nur bei bestimmten Seiten einzufügen.

Die navigationId wird nicht ins Template geschrieben. Das musst du selbst machen.

@UX4U man könnte auch ein Zusatzfeld für Kategorien anlegen. Hier kannst du dann bei den gewünschten Kategorien eine entsprechende CSS Klasse hinterlegen, die du dann im Template an entsprechenden Stellen den Elementen zuweisen kannst.

Mit folgendem kostenlosen Plugin kannst du dir alle verfügbaren Variablen über den Symfony Profiler anzeigen lassen: Helpful development tools | Shopware Store