# Plugins

Das **Shopware 6 Plugin System** ist ein flexibles und modular aufgebautes System, mit dem Entwickler Funktionalitäten zur Shopware-Plattform hinzufügen oder bestehende Features erweitern können. Es basiert auf dem Symfony-Framework und verwendet moderne PHP-Standards.

### Zielsysteme

Shopware Plugins können sowohl in selbst gehosteten Shopware Shops als auch für PaaS (Cloud) Shops verwendet werden. SaaS (Cloud) eignet sich hierfür nicht.

### **Kernmerkmale des Shopware 6 Plugin Systems**:

1. **Modularität**
   * Plugins können unabhängig entwickelt, installiert und aktualisiert werden.
   * Erweiterungen beeinflussen den Shop nicht direkt, sondern ergänzen oder verändern bestimmte Bereiche.
2. **Zwei Hauptarten von Erweiterungen**
   * **Apps**: Plattformunabhängige Erweiterungen, die per API mit Shopware interagieren und keine direkten Code-Änderungen vornehmen.
   * **Plugins**: PHP-basierte Erweiterungen, die tief in das System integriert sind und die Core-Funktionalität direkt verändern können.
3. **Symfony Event System & Hooks**
   * Plugins nutzen das **Event-Listener-System**, um bestehende Prozesse zu beeinflussen oder eigene Logik hinzuzufügen.
   * **Subscriber** können sich an Events binden, um beispielsweise Bestellprozesse oder das Frontend zu erweitern.
4. **Dependency Injection (DI)**
   * Das Plugin-System nutzt Symfony's DI-Container für die Verwaltung von Services, wodurch Erweiterungen effizient und flexibel eingebunden werden.
5. **Datenbankerweiterung mit Migrations**
   * Plugins können eigene Datenbanktabellen oder Felder über **Migrations-Skripte** hinzufügen.
6. **Theme-Erweiterung & Twig-Templates**
   * Plugins können das Frontend durch eigene Templates, Blöcke oder Erweiterungen in Twig anpassen.
7. **Verwaltung über das Shopware Admin Panel**
   * Plugins lassen sich bequem über den **Admin-Bereich** installieren, aktivieren und konfigurieren.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.premsoft.de/plugins.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
