Im Dropper Short #13 haben wir euch gezeigt, wie ihr die Anforderungen der Produktsicherheitsverordnung (GPSR) im JTL-Shop mit einfachen Plain Drops und dem Darstellungsfilter "Artikeleigenschaft" umsetzen könnt - ganz ohne zusätzliches Plugin oder WaWi-Update.
Heute gehen wir einen Schritt weiter und stellen ein Custom Drop vor, das die Umsetzung noch weiter vereinfacht. Idee war es, alle GPSR Daten in einem eigens entwickelten Drop zu pflegen. Auch Ausnahmefälle wollten wir besser behandeln als bei der Lösung mit Plain Drops.
Dropper Silber benötigt
Um Custom Drops nutzen zu können, benötigt ihr zumindest Dropper Silber. Der Drop Builder hilft euch bei der Erstellung eines Grundgerüst, unser DEV Wiki bei den Details. Und uns könnt ihr sowieso gern um Hilfe bitten.
Ein Drop für alle Daten
Zentrales Element des GPSR Drops ist eine Liste mit Herstellerinfos. Pro Eintrag wählt man einen oder mehrere Hersteller aus und hinterlegt für diese die GPSR-Daten. Das Drop prüft auf Artikeldetailseiten, welcher Hersteller gesetzt ist und spielt die hinterlegten Daten aus.
Die Eingabe der auszugebenden Herstellerdaten wird über ein HTML-Feld realisiert. Hier könnte man sogar ohne Weiteres andere Drops verlinken und so komplexere Layouts erstellen. Uns reicht aber hier eine einfache Textausgabe.
Ob es sich um Daten eines "Herstellers" oder einer "Verantwortlichen Person" handelt, kann per Option festgelegt werden. Das Template des Drops regelt dann zusammen mit Sprachvariablen die Ausgabe.
Falls keine GPSR Daten für den Hersteller des aktuellen Produktes hinterlegt sind, kann optional ein Fallbacktext angezeigt werden. Hier wird um eine Rückmeldung des interessierter Besuchers gebeten. Ob das so rechtlich einwandfrei ist, muss noch geprüft werden - die Ausgabe kann aber ohne Weiteres wieder deaktiviert werden.
Warum eigentlich mehrere Hersteller für einen GPSR-Eintrag, sollten die Infos nicht eindeutig sein? Aktuell sind die Daten beim Kunden noch nicht sauber gepflegt: teils wurden Markennamen als Hersteller gesetzt und bei Bundle-Produkten Lieferanten als Hersteller gesetzt. Solche Fälle können wir mit einer Mehrfachauswahl abfangen, ansonsten wird der gesetzte Herstellername nicht auf der Detailseite angezeigt.
Einfache Ausgabe
Wo genau auf der Artikeldetailseite die Daten ausgegeben werden, kann über die Einfügeoptionen des Custom Drops bestimmt werden - also wie bei jedem anderen Drop.
Der Unterschied zu unserer Plain Drop Lösung ist, dass wir auf den Darstellungsfilter "Artikeleigenschaft" verzichten können. Die Zuordnung der GPSR-Daten aus der Liste erledigt unser Custom Drop mit einfachen PHP Funktionen.
Styling-Optionen fehlen im Drop. Im Live Einsatz werden via Drop Container Bootstrap Klassen auf die Ausgabe gesetzt, um die GPSR Daten zumindest etwas hervorzuheben. Mehr war hier nicht nötig. Es könnten aber leicht Optionen implementiert und eigene CSS Styles mit dem Drop ausgeliefert werden.
Einfache Umsetzung
Ziel war eine schnelle, überschaubare Umsetzung und Problemlösung. Insgesamt umfasst der geschriebene Code ~200 Zeilen, wobei gut die Hälfte auf die config.json entfällt, also die Definition der Eingabelemente des Drops. Zur Vereinfachung der Definition der Eingabeelemente könnt ihr natürlich auch unseren Drop Builder verwenden.
Die Templatedatei der eingangs gezeigten Ausgabe ist überschaubar, auch wenn sie einige Klassen zum Styling und Datenchecks enthält.
{assign var="gpsrData" value=$drop.actions->getGPSRData()}
{if !empty($gpsrData)}
<div class="seed-gpsr seed-gpsr-{$drop._internal.guid}">
{if !empty($drop.title)}
<div class="seed-gpsr-title h3">{$drop.title}</div>
{/if}
<div class="seed-gpsr-content">
<strong class="seed-gpsr-title">{$gpsrData["gpsrType"]|i18n}:</strong>
<span class="seed-gpsr-content">{$gpsrData["gpsrContent"]}</span>
</div>
</div>
{else}
{if $drop.showFallback && !empty($drop.fallbackContent)}
{$drop.fallbackContent}
{/if}
{/if}
Ideen zur Erweiterung
Natürlich gibt es Raum für Erweiterungen. Einige Ideen lassen wir einmal hier:
- Geführte Eingabe der Herstellerdaten: Name, Adresse, Web etc. als separate Eingabelemente (Text & Link Controls) definieren.
- Weitere Daten wie Produktdatenblätter mit Controls wie Upload hinterlegen und ausgeben.
- Optische Einstellungen hinzufügen und eigene CSS Styles mit ausliefern.
- Daten der Hersteller / Verantwortliche Personen aus neueren Versionen der JTL-WaWi darstellen.
Feedback
Was haltet ihr von so einem Custom Drop? Wie löst ihr die Anforderungen der Produktsicherheitsverordnung in eurem JTL-Shop? Hättet ihr vielleicht sogar Interesse an einem GPSR Standard Drop?
Schreibt uns, wir freuen uns auf eure Fragen und Anregungen!