Markdown Editor Plugin
Das DmfMarkdownEditor Plugin ersetzt den Standard-WYSIWYG-Editor durch einen leistungsstarken Markdown-Editor für ausgewählte Inhaltsbereiche in der Shopware Administration. Mit Live-Vorschau, konfigurierbarer Toolbar und automatischer HTML-zu-Markdown-Konvertierung.
Inhalt dieser Seite:
Voraussetzungen
- Shopware 6.7.0 oder höher
- PHP 8.2 oder höher
Installation
composer require dmf/sw6-plugin-markdown-editor
bin/console plugin:install --activate DmfMarkdownEditor
bin/build-js.sh
bin/console cache:clearFeatures
- Selektive Ersetzung: Nur bestimmte Inhaltsbereiche nutzen Markdown
- Automatische Konvertierung: Bestehender HTML-Inhalt wird automatisch zu Markdown konvertiert
- Live-Vorschau: Echtzeit-Rendering des Markdown-Inhalts
- Konfigurierbare Toolbar: Wähle die benötigten Werkzeuge aus
- GitHub Flavored Markdown: Tabellen, Task-Listen, Code-Blöcke
- Button-Tool: Bootstrap-Buttons direkt im Editor erstellen
- Twig-Filter:
|markdownfür die Storefront-Ausgabe - Dark/Light Mode: Passt sich dem Admin-Theme an
Unterstützte Inhaltsbereiche
Der Markdown-Editor wird automatisch für folgende Bereiche aktiviert:
| Inhaltsbereich | Automatisch aktiviert |
|---|---|
| Produktbeschreibung | Ja |
| Kategoriebeschreibung | Ja |
| Herstellerbeschreibung | Ja |
| CMS-Text-Element | Ja |
| Custom Fields (HTML/Text-Editor) | Ja |
| Eigene Komponenten | Via use-markdown="true" Prop |
Alle anderen Text-Editoren (z.B. Kundengruppen-Registrierungstext) verwenden weiterhin den Standard-WYSIWYG-Editor.
Konfiguration
Pfad: Einstellungen → Erweiterungen → DmfMarkdownEditor
Toolbar-Elemente
Wähle die anzuzeigenden Toolbar-Elemente:
| Element | Beschreibung |
|---|---|
bold | Fett (text) |
italic | Kursiv (text) |
underline | Unterstrichen |
strikeThrough | Durchgestrichen ( |
title | Überschriften (H1-H6) |
sub | Tiefgestellt |
sup | Hochgestellt |
quote | Blockzitat |
unorderedList | Aufzählung |
orderedList | Nummerierte Liste |
task | Aufgabenliste |
link | Link einfügen |
image | Bild einfügen |
table | Tabelle einfügen |
code | Code-Block |
codeRow | Inline-Code |
revoke | Rückgängig |
next | Wiederholen |
preview | Vorschau umschalten |
fullscreen | Vollbildmodus |
catalog | Inhaltsverzeichnis |
mermaid | Mermaid-Diagramme |
katex | Mathematische Formeln |
Editor-Einstellungen
| Einstellung | Beschreibung | Standard |
|---|---|---|
| Editor-Sprache | Oberflächensprache | de-DE |
| Vorschau beim Start | Vorschau-Panel beim Öffnen anzeigen | false |
| Zeilennummern | Zeilennummern im Code anzeigen | true |
| Mindesthöhe | Minimale Editor-Höhe in Pixel | 300 |
Vorschau-Themes
| Theme | Beschreibung |
|---|---|
github | GitHub-Stil (empfohlen) |
vuepress | VuePress-Dokumentationsstil |
default | Standard md-editor-v3 Stil |
mk-cute | Verspielter Stil |
smart-blue | Professionelles Blau |
cyanosis | Cyan-Akzente |
Code-Themes
| Theme | Beschreibung |
|---|---|
github | GitHub-Stil |
atom | Atom One Dark |
a11y | Barrierefreies Theme |
gradient | Farbverlauf |
stackoverflow | Stack Overflow Stil |
Button-Tool
Der Editor enthält ein spezielles Button-Tool zum Erstellen von Bootstrap-Buttons.
Syntax
[Button-Text](url){.btn .btn-primary}Verfügbare Button-Varianten
| Variante | Klassen | Beschreibung |
|---|---|---|
| Primary | .btn .btn-primary | Primäre Aktion |
| Secondary | .btn .btn-secondary | Sekundäre Aktion |
| Link | .btn .btn-link | Link-Stil |
| Outline Primary | .btn .btn-outline-primary | Umrandeter Primary |
| Outline Secondary | .btn .btn-outline-secondary | Umrandeter Secondary |
| Ghost | .btn .btn-ghost | Transparenter Button |
Verwendung
- Klicke auf das BTN-Icon in der Toolbar
- Wähle eine Button-Variante aus dem Dropdown
- Ersetze "Button Text" durch deinen Text
- Ersetze "url" durch deinen Ziel-Link
Storefront-Verwendung
Twig-Filter
Verwende den |markdown Filter, um Markdown als HTML zu rendern:
{# In Produkt-Templates #}
{{ product.description|markdown }}
{# In Custom Fields #}
{{ product.translated.customFields.my_markdown_field|markdown }}
{# Als Funktion #}
{{ render_markdown(someVariable) }}PHP-Service
use Dmf\MarkdownEditor\Service\MarkdownRendererService;
class MyService
{
public function __construct(
private readonly MarkdownRendererService $markdownRenderer
) {}
public function convertMarkdown(string $markdown): string
{
return $this->markdownRenderer->render($markdown);
}
}Markdown für eigene Komponenten
Via use-markdown Prop
Aktiviere Markdown für einen bestehenden sw-text-editor:
<sw-text-editor
:value="myContent"
:use-markdown="true"
@update:value="onContentChange"
/>Direkte Komponenten-Verwendung
<dmf-markdown-editor
v-model="myContent"
label="Beschreibung"
placeholder="Markdown eingeben..."
preview-theme="github"
/>Komponenten-Props
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
modelValue | String | '' | v-model Binding |
label | String | '' | Feld-Label |
placeholder | String | '' | Platzhaltertext |
disabled | Boolean | false | Editor deaktivieren |
previewTheme | String | null | Vorschau-Theme überschreiben |
codeTheme | String | null | Code-Theme überschreiben |
toolbarItems | Array | null | Toolbar-Elemente überschreiben |
Markdown-Syntax-Referenz
Grundformatierung
**fett** oder __fett__
*kursiv* oder _kursiv_
~~durchgestrichen~~
`inline code`Überschriften
# H1
## H2
### H3
#### H4
##### H5
###### H6Listen
- Aufzählungspunkt
- Weiterer Punkt
1. Nummerierter Punkt
2. Weiterer Punkt
- [x] Aufgabe erledigt
- [ ] Aufgabe offenLinks & Bilder
[Link-Text](https://example.com)
Buttons
[Primary Button](https://example.com){.btn .btn-primary}
[Secondary Button](/seite){.btn .btn-secondary}
[Link Button](#anker){.btn .btn-link}Code-Blöcke
```javascript
const hello = 'world';
```Tabellen
| Spalte 1 | Spalte 2 |
|----------|----------|
| Zelle 1 | Zelle 2 |Blockzitate
> Dies ist ein Zitat
> Mehrere ZeilenGestylter Text
Füge CSS-Klassen zu Block-Elementen hinzu:
## Headline {.font-lining}
Dieser Text ist gestylt {.text-sm}Automatische HTML-zu-Markdown-Konvertierung
Beim Öffnen von Inhalten, die zuvor als HTML gespeichert wurden, konvertiert das Plugin diese automatisch zu Markdown.
Features:
- Erkennt strukturelle HTML-Tags (p, div, h1-h6, ul, ol, table, etc.)
- Erhält Shopware Data-Mapping-Syntax
{<!-- -->{ product.name }<!-- -->} - Konvertiert Button-Links mit CSS-Klassen
- Bereinigt leere Absätze und überschüssige Leerzeichen
Toolbar anpassen
Via Plugin-Konfiguration (empfohlen)
- Gehe zu Einstellungen → Erweiterungen → DmfMarkdownEditor
- Wähle/abwähle Toolbar-Elemente
- Speichere die Konfiguration
Via Komponenten-Props
<dmf-markdown-editor
v-model="content"
:toolbar-items="['bold', 'italic', 'link', 'preview']"
/>Toolbar-Trennzeichen
-fügt einen visuellen Trenner ein=richtet alle folgenden Elemente rechts aus
['bold', 'italic', '-', 'link', '=', 'fullscreen']
// links | sep | links | rechts ausrichten | rechtsTroubleshooting
Editor lädt nicht
- NPM-Abhängigkeiten installieren:
bin/build-js.sh - Admin neu bauen:
bin/build-administration.sh - Cache leeren:
bin/console cache:clear
Toolbar-Elemente werden nicht angezeigt
- Prüfe die Plugin-Konfiguration im Admin
- Stelle sicher, dass die Elemente ausgewählt sind
- Browser-Cache leeren
Markdown wird in der Storefront nicht gerendert
- Verwende den
|markdownFilter:{<!-- -->{ content|markdown }<!-- -->} - Stelle sicher, dass der Inhalt tatsächlich Markdown ist, nicht HTML
WYSIWYG-Editor erscheint statt Markdown
Der Markdown-Editor erscheint nur für unterstützte Inhaltsbereiche. Für eigene Text-Editoren füge das use-markdown="true" Prop hinzu.
HTML-Inhalt wird nicht konvertiert
Die automatische HTML-zu-Markdown-Konvertierung erfolgt nur beim initialen Laden. Bei gemischtem Inhalt muss dieser eventuell manuell bereinigt oder neu gespeichert werden.