# FAQ

# Wie erstelle ich ein eigenes CMS Element?

Wie du ein eigenes CMS Element erstellst, kannst du hier nachlesen.

# Elemente kopieren

Antwort anzeigen

Es ist möglich Elemente aus einem Plugin in ein anderes zu kopieren.

# Beispiel

Du möchtest z.B. das Jumbotron Element aus dem Demo Plugin in dein eigenes Plugin oder Custom Theme kopieren.

  • Kopiere dafür den Ordner jumbotron aus custom/plugins/NetiNextCmsElementBuilderDemo/src/Resources/neti_cms_elements/ inkl. der beiden Dateien in dein Plugin / CustomTheme unter dem Pfad custom/plugins/DEINPLUGIN/src/Resources/neti_cms_elements/
  • Lade die Daten auf den Server
  • Unter "Inhalte > CMS Elemente" klicke auf "Synchronisieren": Sync Button
  • Nun wird das neue Element angezeigt.

Element wird nicht angezeigt

Falls das Element nicht angezeigt wird, prüfe das in der composer.json deines Plugins oder Custom Theme Plugins:

"require": {
    "netinventors/next-cms-element-builder": ">=4"
},
1
2
3

hinterlegt ist.

# Was passiert, wenn ein CMS Element nicht mehr verfügbar ist?

Antwort anzeigen

Es kann passieren, dass CMS Elemente nicht mehr verfügbar sind, wenn beispielsweise das Plugin deaktiviert oder deinstalliert wird, in dem das CMS Element gespeichert ist.

Wenn das also passiert, wird die Erlebniswelt, welche das CMS Element verwendet wahrscheinlich nicht mehr ordentlich in der Administration funktionieren und in der Storefront wahrscheinlich falsch dargestellt werden.

Wir haben eine Funktion bereitgestellt, welche diese Fehlerquellen erkennt und dir die Möglichkeit bietet defekte Referenzen zu löschen.

Dies kannst du unter "Inhalte > CMS Elemente" (siehe Screenshot) durchführen.

Lookup References

Mit klick auf den Button "Referenzen prüfen" werden alle Erlebniswelten nach defekten Referenzen durchsucht und anschließend das Ergebnis übersichtlich dargestellt.

Lookup References Result

Hier können dann die Referenzen einzeln oder alle gelöscht werden. Beachte dabei, dass bei der Löschung der Referenz das CMS Element aus der Erlebniswelt komplett gelöscht wird und es eventuell zu ungewollten Datenverlust führen kann, falls das CMS Element zu einem späteren Zeitpunkt wieder verfügbar ist.

# Wie werden CMS Elemente grundsätzlich registriert?

Antwort anzeigen

Auch hier gibt es wieder verschiedene Möglichkeiten.

Grundsätzlich wird bei Installation / Aktivierung / Aktualisierung eines Plugins im jeweiligen Plugin-Verzeichnis geprüft, ob dort CMS Elemente abgelegt sind und werden automatisch im System registriert. Wird ein Plugin deaktiviert oder deinstalliert, werden die CMS Elemente, welche durch das Plugin registriert wurden, deaktiviert.

Deaktivierte CMS-Elemente sind in der Administration nicht mehr verfügbar.

Eine weitere Möglichkeit bietet ein Konsolen-Kommando:

bin/console neti:ceb:sync:elements
1

Natürlich haben wir auch daran gedacht eine Möglichkeit in der Administration bereitzustellen. Nach der erfolgreichen Synchronisierung wird die Administration neu geladen, um eventuell neue CMS Elemente direkt in der Administration verfügbar zu haben.

Sync Button

# Es kann kein Plugin zum Speichern ausgewählt werden

Antwort anzeigen

Es werden aus Sicherheitsgründen nur Plugins angezeigt, die ein Requirement auf CmsElementBuilder Plugin haben. Passe dazu in deinem Plugin oder Theme die Datei composer.json an und ergänze diese um:

"require": {
    "netinventors/next-cms-element-builder": ">=4"
},
1
2
3

und

"extra": {
    "netinventors": {
        "NetiNextCmsElementBuilder": {
            "config": {
                "writeAccess": true
            }
        }
    }
}
1
2
3
4
5
6
7
8
9

Fehlt die Konfiguration "writeAccess": true oder ist "false" können aus dem Plugin nur Elemente gelesen aber keine geschrieben werden.

# Warum braucht man Plugin(s) für die CMS Elemente?

Antwort anzeigen

Die Dateien des CMS Element sollten immer in einem eigenen Plugin oder in dem eigenen Custom Theme Plugin gespeichert werden. Damit wird vermieden, dass das CMS Element (bzw. deren Dateien) bei einem Plugin-Update verloren gehen. Bei einem Update des Plugins werden die physikalischen Dateien des Plugins von Shopware gelöscht, das neue Plugin-Paket heruntergeladen und in den Plugin-Ordner von Shopware entpackt. Dies führt dazu, dass auch die Dateien für das CMS Element gelöscht werden - sofern diese sich in dem Plugin-Ordner befanden.

Der Vorteil eines eigenen Plugins ist, dass dieses Plugin ggf. versioniert und in anderen Projekten weiterverwendet werden kann.

Best Praxis

Speichere die Daten in das verwendete Custom Theme Plugin.