Shopware 5.2 Pluginstruktur

Ab Shopware 5.2 gibt es ein neues Plugin-System. Plugins liegen ab dieser Version im Verzeichnis /custom/plugins/. Die Pluginstruktur besteht bei einem Plugin mit technischem Namen "LenzTest" aus folgenden Dateien:

/custom/plugin/LenzTest (Ordner)
/custom/plugin/LenzTest/LenzTest.php
/custom/plugin/LenzTest/plugin.xml
/custom/plugin/LenzTest/schema/config.xml

Bootstrap-Datei (LenzTest.php)

Die Datei LenzTest.php ist das, was früher die Bootstrap.php war. Dort liegen alle wichtigen Programmcodes.

<?php
namespace LenzAttributeHeredity;

use Shopware\Bundle\AttributeBundle\Service\DataLoader;
use Shopware\Components\Plugin\Context\ActivateContext;
use Shopware\Components\Plugin\Context\DeactivateContext;
use Shopware\Components\Plugin\Context\InstallContext;
use Shopware\Components\Plugin\Context\UpdateContext;
use Shopware\Components\Plugin\Context\UninstallContext;

class LenzAttributeHeredity extends \Shopware\Components\Plugin {
        public static function getSubscribedEvents() {
                return [
                        'Enlight_Controller_Action_PostDispatch_Frontend_Detail' => 'onPostDispatchDetail'
                ];
        }

	public function install(InstallContext $context) {
		return true;
	}

	public function update(UpdateContext $context) {
		return true;
	}

	public function activate(ActivateContext $context) {
		return true;
	}

	public function deactivate(DeactivateContext $context) {
		return true;
	}

	public function uninstall(UninstallContext $context) {
		return true;
	}

        public function onPostDispatchDetail(Enlight_Event_EventArgs $args) {
                // Implementation...
        }
}

Diese minimale Datei ist der Ausgangspunkt für ein neues Plugin. Es erweitert das Event "Enlight_Controller_Action_PostDispatch_Frontend_Detail" in der Methode "onPostDispatchDetail".

plugin.xml

Die Datei "plugin.xml" enthält alle Metadaten des Plugins. Die wichtigsten sind hier am Beispiel des Plugins "Freitextfeldervererbung" beschrieben:

<?xml version="1.0" encoding="UTF-8" ?>
<plugin>
<label>Freitextfeldervererbung</label>
<version>1.1.0</version>
<copyright>Shopdoktor.com</copyright>
<license>proprietary</license>
<link>https://www.shopdoktor.com/</link>
<author>Sebastian Lenz</author>
<description>Mit diesem Plugin steht der Inhalt der Artikelfreitextfelder auch in den Varianten zur Verfügung.</description>
</plugin>