Adding a custom CMS element

Hallo,

leider scheint es in der Doku noch ein paar Lücken zu geben - mir fehlte der Hinweis, das über storefront:build / administration:build noch der Import aus der main.js generiert werden muss, damit das Element funktioniert.

Leider funktioniert das aktuell bei mir nicht, DEV Umgebung aktualisiert am 7.2.2020.
Wenn ich bei dem Beispielcode des swag-docs-custom-cms-element den Ordner src/Resources/public lösche, wird dieser auch nicht wieder erstellt. 

Hat sich da wieder etwas verändert, was in der Doku noch etwas versteckt ist oder nicht vermerkt wurde?

 

Matthias Wolf

Hallo @bluewolf,

ich stehe gerade beim selben Problem. Ich habe dieses Shopware Tutorial- Add CMS element gefolgt aber irgendwas klappt nicht und die admin Seite wird leer gerendert, also die Seite ist komplett weiß. Nur, wenn ich das Plugin deinstalliere wird die Seite richtig geladen. Das heißt, irgendein File macht alles kapput.

Hast du eine Lösung für deine Problematik gefunden? Würde mich sehr interessieren :slight_smile:

LG

Hallo @jfranke
in meine Not hatte ich das Plugin von jemand anderen programmieren lassen, kann da also leider nicht weiterhelfen. Sorry

schau doch in den Logfiles nach oder in den Browser Dev-Tools, da siehst du welcher Request eine fehlerhafte Response zurückgibt. Dort steht in der Antwort auch der Fehler drin.

Ich komme bei dem Thema auch nicht klar.
Ich habe eigentlich alles aus der Doku übernommen und der Ordner Resources/public/administration ist mit allen Dateien angelegt worden.
Aber in die app.js vom Backend wurden die Sachen nicht mit reingenommen, weshalb das Element dann auch fehlt.
In der dev.log kann ich nicht wirklich was finden und beim ./psh.phar administration:build ist auch alles sauber durchgelaufen.

Jemand eine Idee woran es liegen könnte?

Hat keiner eine Idee.

Ich bekomme aus der Doku weder einen CMS Block noch ein CMS Element in die Erlebniswelten, nach dem adminstration:build wurden werden die CSS und JS ganz normal in den Resource/public ordner erzeugt, aber im Backend sehe ich trotzdem nicht.
Erhalte auch keinerlei Fehlermeldungen oder so

Nutzt du schon das neue App-System von Shopware oder noch das alte Plugin-System?

Soweit ich weiß gibt es aktuell noch Probleme bei CMS-Elementen im App-System. Mit dem alten Plugin System kann man allerdings ohne Probleme CMS-Blöcke und Elemente anlegen.

Die Ordnerstruktur bei den Elementen ist sehr wichtig, wie eigentlich überall in Shopware. Bei den Blöcken also genau darauf achten → src/Resources/app/administration/src/sw-cms/blocks/HIERBLOCKEINTRAGEN(z.B. text oder commerce/BlockName/

Dann wie in der Doku component und preview Ordner anlegen und alles in den .js Dateien regestrieren. Hier ist auch der Name wichtig damit was im Backend ankommt…

Und dann am Ende den CMS Block regestrieren in der index.js mit

Shopware.Service('cmsService').registerCmsBlock({
 name: 'name',
 label: 'label,
category: 'blockCategory'
....

Dann am Ende den ./psh.phar administration:build durchführen und der Block sollte in den Erlebniswelten unter dem entsprechenden Block erscheinen.

Hallo wertes Forum,

ich klinke mich hier mal mit einem eigenen Problem ein, welches ebenfalls CMS-Elemente betrifft. Ich betone hier „Elemente“ ausdrücklich, da ich beim Erstellen von Blöcken i.d.R. weniger Probleme habe.

Ich habe mir für den Wunsch eines Kunden das Element „product-box“ kopiert und so angepasst, wie ich es brauche. Die Backend-Komponente habe ich einwandfrei zum Laufen bekommen. Im Frontend scheint es allerdings zu Schwierigkeiten zu kommen:
Ich habe mir natürlich auch zur Ausgabe meiner neuen Produktbox das Template von /views/storefront/element/cms-element-product-box.html.twig kopiert und ebenfalls angepasst. Hier kommt es nun zu meinem Problem: Die Shopware-Relatierten Twig-Funktionen zum Einbinden und Erweitern von Template-Dateien scheinen an dieser Stelle nicht zu funktionieren. Die Erweiterung der klassischen Produktbox mittels sw_extend erzeugt ein leeres div, ebenso die Verwendung von sw_include. Die Standard-Funktionen von Twig habe ich an dieser Stelle nicht getestet, da die Verwendung von sw_* ja schon sinnvoll ist.

Ich hab das Gefühl, dass mir ein Schritt zwischen Config im Backend und Ausgabe im Frontend fehlt. Hat da jemand eine Idee?

LG;LA

Du brauchst einen entsprechenden DataResolver und ein Struct Element. Wenn du das beides korrekt anlegst bekommst du auch eine Ausgabe im Frontend.

1 „Gefällt mir“

Du hast jetzt einen anderen Pfad geschrieben wie es in der Doku steht, hast du das auf die schnell übersehen oder ist die Doku hier verkehrt.
Zum einen der Pfad, bei dir ist es "…src/sw-cms/… in der Doku „…src/module/sw-cms“…

So sieht meine Struktur aus

@f.mertens Bei mir ist es mit: src/module/sw-cms. Ich orientiere mich da an der Struktur auf GitHub, die Doku scheint an manchen Stellen immer mal wieder für kleine Verwirrungen zu sorgen.

@ninja Vielen Dank für den Schubs in die richtige Richtung! Ich bin dann noch auf diese Antwort bei Stack Overflow gestoßen. Mit den Anhaltspunkten kann ich etwas tiefer schürfen.

LG;LA

Es ist natürlich …src/module/sw-cms… da hat sich ein kleiner Fehler bei mir eingeschlichen. Die Struktur sieht schon mal richtig aus.

Eigentlich schade, hätte es leicht erklären können.

Aber die Javascript Daten unter Resource/public werden ja auch korrekt erstellt.

Kann man das irgendwie im Backend debuggen um den Fehler auf der Spur zu kommen?

Du könntest dein Code mal mit dem github Repo vergleichen und schauen ob das Plugin aus dem Repo bei dir läuft.

Für das CMS-Element:

Für den CMS-Block:

Laufen die bei dir hast du vermutlich irgendwo einen kleinen Fehler. Steht denn bei dir was in der Konsole?

@ninja, vielen dank für deine Geduld und auch danke für die Links, mir war irgendwie gar nicht bewusst das die Doku sachen auch schon fertig bei github vorhanden sind.

Dadurch konnte ich jetzt noch mal anders einsteigen und habe denke den Fehler gefunden, und der lag bei mir, ich bin bei diesen ganzen Begriffen durcheinander gekommen. Ich dachte das cms-block würde eine neue Auswahl in dem Selectfeld „Bock-Kategorie“ anlegen, dabei ist Block das was unter diesen Kategorien zu finden ist und ich als Element im Kopf hatte.

Ich denke mein Problem ist jetzt gelöst.

2 „Gefällt mir“

Kein Problem, ist am Anfang auch alles sehr verwirrend. Habe auch ein wenig gebraucht um alles einigermaßen zu verstehen :smiley:

2 „Gefällt mir“