Ein praxisnaher Leitfaden für die Entwicklung produktionsreifer JTL Shop Plugins: Struktur, Manifeste, Hooks, Admin-Einstellungen, Templates, Migrationen und Deployment.
plugin.json für JTL Shop 5 verwenden. info.xml nur für Alt-Installationen (v4).
Manifest (JTL Shop 5: plugin.json)
Hook-IDs sind versionsabhängig. Vermeiden Sie „Magic Numbers“ und kapseln Sie IDs in Konstanten. Prüfen Sie die offizielle Hook-Liste Ihrer Zielversion.
CREATE TABLE IF NOTEXISTS my_plugin_flags (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64) NOT NULL,
enabled TINYINT(1) NOT NULLDEFAULT1,
created_at TIMESTAMPDEFAULTCURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
hljs sql
migrations/002_add_description.sql
ALTER TABLE my_plugin_flags
ADDCOLUMN description VARCHAR(255) NULL AFTER name;
hljs sql
Nummerierte Einzeldateien helfen, nur notwendige Migrationen beim Update auszuführen.
Versionierung & Kompatibilität
SemVer verwenden (MAJOR.MINOR.PATCH)
minShopVersion im Manifest aktuell halten
CHANGELOG.md pflegen
Bei mehreren Major-Versionen: Kompatibilitätsschichten kapseln
⚡️ Ein-Klick-Deployment mit iDeployed.
Mit iDeployed erstellen Sie isolierte Staging-Shops, testen Plugins mit produktionsnahen Daten und deployen sicher.
Jetzt kostenlos testen →
{"name":"my-jtl-plugin","displayName":"My JTL Plugin","version":"1.0.0","author":"Ihr Unternehmen","url":"https://ideployed.com","minShopVersion":"5.0.0","description":"Fügt Feature X zum JTL Shop hinzu.","hooks":[{"id":0,"file":"src/Hooks/OnPageLoaded.php"},{"id":99,"file":"src/Hooks/BeforeCheckout.php"}],"adminMenu":[{"name":"My Plugin","url":"plugin.php?plugin=my-jtl-plugin","rights":["VIEW"]}],"install":"src/Plugin.php","uninstall":"src/Plugin.php","update":"src/Plugin.php"}