Freitextfelder sind dir sicherlich schon bekannt und eventuell hast du auch schon mit diesen gearbeitet. In diesem Beitrag wollen wir dir eine Methode beibringen um in einem Plugin ein Freitextfeld zu erstellen.
Wie du später im Frontend das Shopware Freitextfeld ausgeben lassen kannst erfährst du in diesem Beitrag.
(Lesedauer ~5 Minuten)
Zuerst erstellen wir einen Ordner der den gleichen Namen wie unsere Pluginklasse haben soll. Wir nehmen für dieses Beispiel 'EmzAttribute'.
Weitere Infos zur Pluginerstellung erfährt ihr in dieser Blogreihe.
Also legen wir in unserem Shopware Verzeichnis unter 'custom/plugins' den Ordner 'EmzAttribute' und in diesem die 'EmzAttribute.php' Datei an.
Alle allgemeinen Informationen zu unserem Plugin werden in der plugin.xml Datei gespeichert. Diese muss im Hauptverzeichnis unseres Plugins stehen.
Unter Label wird der Name des Plugins (8mylez Attribute) für den Plugin Manager angegeben und die Version. Als erste Release Version verwenden wir die 1.0.0.
Anschliessend kommen Copyright, Lizenzmodell und Author Daten hinzu sowie eine Verlinkung zu unserer Webseite.
In dieser Datei finden wir auch den Changelog welcher immer Informationen zu der jeweiligen Versionierung enthalten soll damit jeder Entwickler der in unser Plugin schaut soweit weiß was in jener Version geändert wurde.
Wenn wir schon bei dem hinterlegen der Daten sind können wir ja auch gleich ein schönes Pluginbild einsetzen. Das Bild muss den schlichten Namen 'plugin.png' haben und auch im Hauptverzeichnis unseres Plugins liegen.
Die Klasse Plugin von der wir in unserer PHP Datei ableiten erkennt diese Dateien und verarbeitet diese automatisch.
Kommen wir zurück zum Coden in unsere 'EmzAttribute.php'. Nun werden die Grundlegenden Funktionen wie die Installationsmethode, Deinstallationsmethode und Buildmethode erstellt.
Bei diesen Funktionen rufen wir lediglich die Parent Funktionen auf welche in der Plugin.php von Shopware hinterlegt sind.
Jetzt kommen wir endlich zu dem eigentlichem Thema und zwar das Attribut.
Wir erweitern die Installationsmethode und holen uns über den Container den CRUD Service der Shopware Attribute. CRUD steht für Create, Read, Update und Delete. Das sind auch die Möglichkeiten die wir mit diesem Service haben. Mehr Infos dazu findest du hier: Shopware Attribute System
Was bedeuten die Parameter welche wir übergeben?
- 's_articles_attributes' steht für die Tabelle in welcher das Attribute erstellt werden soll
- 'emz_fsk' ist der Name des Attributes mit unserem Entwicklerkürzel ('emz')
- 'boolean' steht für eine Checkbox
- 'label' wäre der Titel des Attributes welcher z.B. im Backend angezeigt werden kann
- 'displayInBackend' hier kann man angeben ob das Attribut im Backend bei z.B. den Artikeln sichtbar sein soll oder nicht
- 'translateable' lässt uns die Inhalte des Attributes später bei den Artikeln übersetzen
- 'position' dient der Anzeige im Backend wenn dieses Attribut sichtbar ist. 1 steht für ganz oben
- 'custom' erlaubt eine Anpassung des Attributes im Freitextfeld-Manager über das Backend
Damit ist unser Freitextfeld fertig konfiguriert. Nun müssen wir die Attribute Models neu generieren damit diese auch im Template zur Verfügung stehen.
Mit der Funktion 'scheduleClearCache' lasse ich nach dem installieren noch den Cache leeren.
Wenn für das Plugin keine Verwendung mehr besteht wird es deinstalliert. Natürlich ist das Attribut damit nicht mehr Notwendig. Daher lassen wir dieses bei der Deinstallation aus dem Shop löschen um keine unnötigen Sachen zu hinterlassen welche auch zu Fehlern führen können.
Hierzu nutzen wir wieder den CRUD-Service und logischerweise die delete Funktion von diesem. Nun braucht man aber nur das nötigste anzugeben wie den Tabellennamen und den Attributnamen welcher gelöscht werden soll.
Zu guter letzt lassen wir nochmal die Models neu generieren damit auch wirklich nichts mehr im System liegen bleibt.
Unsere Standorte
Zentrale
Technologiepark 23
33100 Paderborn
Leipzig
Bernhardstraße 34
04315 Leipzig
Kontakt
E-Mail: support@8mylez.com
Telefon: +49 (0) 5251 284 710
Shopware Dienstleistungen
Über 8mylez
✓ 38 Mitarbeiter
✓ Shopware Gold Partner
✓ 40.000+ Plugin Downloads
✓ 160+ betreute Shops
✓ Full-Service Shopware Agentur
✓ 70 Shopware Videos auf Youtube
✓ Alle Shopware Zertifizierungen
Social
starker Eingriff
dein Artikel ist echt gut. Ich wünschte ich hätte ihn früher entdeckt. Das tolle an deinem Artikel ist, das man ihn wunderbar als Checkliste verwenden kann.
Vielen Dank,
Jan
Alexander Wolf
vielen Dank! Ich gebe das Feedback an Ewald weiter, der wird sich sicherlich freuen :)
Gruß
Alexander
Mario
Alexander Wolf
in der Dokumentation von Shopware https://developers.shopware.com/developers-guide/attribute-system/#plugin-definition-and-attribute-creation gibt es ein Beispiel zum Runterladen.
Gruß
Alexander
Was denkst du?