Sie sind hier:  Online-Shop Anbindung > Shopware >

integriertes Plugin-System

Dieses Thema drucken Vorheriges ThemaZurück zur ThemenübersichtNächstes Thema

Beschreibung

Ein innerhalb der Schnittstelle verfügbares Plugin-System erlaubt die Ablage eigener Plugin-Klassen, die auf einen definierten Pool an Events der Shop-Anbindung zugreifen können.
Über diese Events können die von MERCATOR exportierten Daten direkt vor der eigentlichen Verarbeitung im Shop angepasst und manipuliert werden.
Im Export können Bestellungen vor der Erzeugung als XML gelesen und bearbeitet werden.

 

Vorbereitung

Um eigene Plugin-Klassen verwenden zu können, sind folgende Vorbereitungen zu treffen.

 

Ordnerstruktur

 

Eigene Plugin-Klassen zur Datenmanipulation der Schnittstelle werden innerhalb von Components/TdsMerware/Plugins erwartet und abgelegt.

 

Klassenname

 

Beachten Sie, dass der Dateiname dem Klassennamen entsprechen muss, um von der Schnittstelle erkannt und gefunden zu werden.
Das Beispiel-Plugin mit dem Klassennamen ExamplePlugin wird somit als ExamplePlugin.php erwartet.

 

Aufbau

Damit Ihre Plugin-Klassen erkannt und komform verwendet werden können, müssen diese bestimmte Voraussetzungen haben.
Geben Sie zunächst Ihrer Klasse folgenden namespace um im Pool der MerWare Kunden-Klassen erkannt zu werden

 

namespace Shopware\Components\TdsMerware\Plugins;

 

Benutzen Sie per use die beiden mitgelieferten Plugin- und Event Standardklassen

 

use Shopware\Components\TdsMerware\Core\Plugin\AbstractPlugin;
use Shopware\Components\TdsMerware\Core\Plugin\PushEvent;

 

Ihre Klasse muss von dem Standard MerWare-Plugin AbstractPlugin erben, um alle notwendigen Methoden zu implementieren.

Auf das Beispiel-Plugin bezogen würde die Angabe des Klassennamens wie folgt lauten

 

class ExamplePlugin extends AbstractPlugin

 

Events

Folgend alle verfügbaren Events mit kurzen Beispielen.
Als Aufschluss reicht die Implementierung der genannten Methoden innerhalb Ihrer eigenen Plugin-Klassen.

 

Import von Artikeln

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Artikeldaten (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportArticles(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Import\Service\ArticleInterface $article
    */
 
    foreach ($event->getData() as $article) {
 
        $artcode = $article->getArtcode();
 
    }
 
}

 

Import von Artikeln (Kompakt)

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Kompakt-Artikeldaten (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportCompactArticles(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Import\Service\CompactInterface $article
    */
 
    foreach ($event->getData() as $article) {
 
        $artcode = $article->getArtcode();
 
    }
 
}

 

Import von Löschbefehlen (Artikel)

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Löschbefehle (Artikel) (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportArticleDeletions(PushEvent $event)
{
 
    foreach ($event->getData() as $key => $value) {
 
        /**
        * Examples to detect the different cases
        *
        * Delete all articles
        * $key = 'deleteAll'
        * $value = 1
        *
        * Delete a specific article
        * $key = list position
        * $value = 'EXAMPLE-ARTCODE'
        */
 
    }
 
}

 

Import von Kategorien

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Kategoriedaten (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportCategories(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Import\Service\CategoryInterface $category
    */
 
    foreach ($event->getData() as $category) {
 
        $id = $category->getId();
 
    }
 
}

 

Bestellexport

 

Folgende Event-Methode bekommt die zu exportierende Shop-Bestellung (vor der XML-Generierung) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onExportOrder(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Export\Service\OrderInterface $order
    */
 
    $order = $event->getData();
 
}

 

Import von Versanddaten

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Versanddaten (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportOrders(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Import\Service\OrderInterface $order
    */
 
    foreach ($event->getData() as $order) {
 
        $trackingNumber = $order->getTrackingNumber()
 
    }
 
}

 

Import von Kunden

 

Folgende Event-Methode bekommt alle von MERCATOR exportierten Kunden (vor dem Shop-Import) übergeben.

 

/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
 
public function onImportCustomers(PushEvent $event)
{
 
    /**
    * @var \Shopware\Components\TdsMerware\Import\Service\CustomerInterface $customer
    */
 
    foreach ($event->getData() as $customer) {
 
        $mercatorCustomerId = $customer->getMercatorCustomerId();
 
    }
 
}

 

Beispiel-Plugin

Innerhalb des Plugins Im Verzeichnis Components/TdsMerware/Plugins existiert ein Beispiel-Plugin, welches alle unterstützten Events als Methoden implementiert.