MultiPurposeBlog 1.1.15 Help

Entwickler-Übersicht

Diese Seite richtet sich an Plugin-Entwickler. MultiPurposeBlog ist nicht nur ein eigenständiges Blog-Plugin, sondern das Fundament eines Baukastens: Die Social-Media-Sub-Plugins (Meta, LinkedIn, Brevo) erweitern das hier definierte Datenmodell und nutzen die gemeinsamen Basisklassen für Server-Proxy, Uploads und die Admin-Integration.

Architektur in Kürze

Das Plugin gliedert sich in vier Ebenen:

Ebene

Ort

Inhalt

Datenmodell

src/Content/BlogItem, src/Content/BlogItemCategory, src/Content/SocialMedia*

DAL-Definitionen, Entities, Collections, Aggregate

Storefront-Server

src/Controller/BlogController, src/Content/Blog

Detail-Route, BlogPageLoader, BlogPage, SEO-Route

Erweiterungs-Framework

src/Controller/ProxyController, src/Content/Message

Abstrakter Proxy + Upload-Messenger-Framework für Sub-Plugins

Administration

src/Resources/app/administration/src/module/leoparden-blog

Vue-Modul, CMS-Elemente, TS-Basisklassen PageProvider/oAuthProvider

Eine detaillierte Aufschlüsselung findest du in den beiden Unterseiten:

  • Backend — Server-Seite: Entities, Migrationen, BlogController, ProxyController und Upload-Framework

  • Frontend — Client-Seite: Admin-Modul leoparden-blog, die abstrakten TS-Klassen PageProvider/oAuthProvider, CMS-Elemente

Dependency-Stack

Paket

Typ

Rolle

shopware/core, shopware/storefront, shopware/administration

require (^6.6)

Plattform

leoparden/plugin-license-manager

require (^1)

Registriert automatisch die Lizenzprüfung für Plugins unter dem Leoparden\…-Namespace — kein Code im Plugin nötig

leoparden/plugin-tools

require-dev (^1)

PHP-Dev-Tooling und leoparden:create:tsconfig

@leoparden/plugin-tools-administration

npm

Shims, TestHelper, leoparden-plugin-settings-icon

Die Sub-Plugins (Meta, LinkedIn, Brevo) tragen ihrerseits leoparden/multi-purpose-blog als Dependency und aktivieren MultiPurposeBlog als Voraussetzung.

Fundament für die Sub-Plugins

Drei Bausteine dieses Plugins sind bewusst als Erweiterungspunkte angelegt:

  1. ProxyController (src/Controller/ProxyController.php) — eine abstrakte Basis-Controller-Klasse. Jedes Sub-Plugin registriert einen eigenen Controller, der davon erbt, seinen OAuth-Provider konfiguriert und die proxy() - und handleUpload()-Methoden implementiert. Die Basisklasse liefert bereits Auth-Bridge-Handshake (verify/challenge/refresh), OAuth-Redirect, Upload-Endpunkt und Upload-Fortschritt (SSE).

  2. Upload-Framework (src/Content/Message/UploadMessage + UploadMessageHandler) — eine UploadMessage wird über den Message-Bus dispatcht; der Handler routet sie anhand des handler-Klassennamens an den passenden UploaderInterface (jeder Sub-Plugin-Controller). Der Fortschritt wird als serialisierte Datei im Flysystem abgelegt und per Server-Sent-Events an den Admin gestreamt.

  3. Admin-Basisklassen PageProvider und oAuthProvider (…/module/leoparden-blog/service/) — abstrakte TypeScript-Klassen, von denen die Sub-Plugins ihren Provider ableiten (Login, Seitenverwaltung, Post-Erstellung).

Details zu jedem Baustein stehen in Backend bzw. Frontend.

Erweiterungspunkte

Erweiterung

Ansatzpunkt

Eigenes Social-Media-Backend

ProxyController beerben + UploaderInterface implementieren, Service mit Tag leoparden.blog.uploader registrieren

Blog-Seiten-Daten anpassen

Auf BlogPageCriteriaEvent/BlogPageLoadedEvent hören

Eigenes CMS-Element für Beiträge

AbstractCmsElementResolver mit Tag shopware.cms.data_resolver (siehe die beiden vorhandenen Resolver)

Neuer Admin-Provider

PageProvider/oAuthProvider ableiten

Last modified: 09 September 2026