Skip to content

DmfGuppyTheme ​

DmfGuppyTheme ist das Fundament des Guppy-Frameworks. Es ersetzt das Standard-Storefront-Theme von Shopware durch eine schlanke, dokumentierte Bootstrap-5-Variante mit umfangreicher Theme-Konfiguration und gezielten Twig- und SCSS-Overrides.

Schnellinfo ​

Composer-Paketdmf/sw6-guppy-theme
Plugin-KlasseDmf\GuppyTheme\DmfGuppyTheme
NamespaceDmf\GuppyTheme
Shopware~6.7.0
Pflicht-Dependencydmf/sw6-plugin-splide-slider
Repositoryguppy / theme-guppy
ChangelogAlle Releases

Installation ​

bash
composer require dmf/sw6-guppy-theme
bin/console plugin:refresh
bin/console plugin:install --activate DmfGuppyTheme
bin/console theme:change       # Sales-Channel auswählen
bin/console theme:compile

DmfSplideSlider wird automatisch von Composer mitgezogen, muss aber separat aktiviert werden, falls noch nicht vorhanden:

bash
bin/console plugin:install --activate DmfSplideSlider

Splide als Single Source of Truth

DmfSplideSlider bündelt die Splide-Bibliothek einmal und stellt den Konstruktor global unter window.DmfSplide bereit. Theme und abhängige Plugins (etwa DmfCmsCustomElements) konsumieren diese geteilte Instanz, statt jeweils eine eigene Kopie auszuliefern. Deshalb muss DmfSplideSlider aktiv sein, bevor Slider im Storefront rendern. Details unter DmfSplideSlider.

Konfiguration ​

Im Gegensatz zu vielen Plugins bringt DmfGuppyTheme kein klassisches config.xml für die Plugin-Einstellungen mit. Stattdessen liegen alle Konfigurationen in theme.json und werden über die Theme-Konfiguration in der Administration ausgespielt.

Tabs der Theme-Konfiguration ​

TabInhalt
LayoutContainer-Breiten, Section-Padding, Sidebar-Verhalten
HeaderHeader-Variante, Top-Bar-Hintergrund, Logo-Position
FooterSpaltenanzahl, Newsletter-Block, Payment-/Shipping-Logos
LoginLogin-/Register-Box-Verhalten
CheckoutCheckout-Layout, 3-Step-Progress, Trust-Elemente
Guppy CardsCard-Komponenten der Detailseite
ProductcardListing-/Slider-Produktkarten
DetailpageBuybox-Styling, Produktbilder, Slider
ButtonButton-Farben, Sizes, Outline-Toggles
BadgesNeu-/Top-Seller-/Discount-Badges (optional Outline)
AlertsHintergrund- und Textfarbe pro Alert-Typ

Detailreferenz

Die vollständige Feldreferenz mit Default-Werten liegt unter Konfigurationsschema.

Console-Commands ​

DmfGuppyTheme registriert eigene Konsolen-Befehle:

BefehlZweck
guppy:theme:createErstellt ein neues Theme-Verzeichnis mit Grundstruktur.
guppy:install:pluginsInstalliert optional empfohlene Begleit-Plugins via Composer.
guppy:upgrade:scanScannt das Projekt nach Änderungen, die nach Theme-Updates Aufmerksamkeit benötigen.

Die ausführliche Dokumentation der Befehle findest du unter Twig-Blöcke und Konsolen-Workflow.

SCSS-Architektur (Kurzüberblick) ​

Die zentralen Variablen-Dateien:

text
src/Resources/app/storefront/src/scss/
├── overrides.scss                   # Theme-Hook (lädt vor @DmfGuppyTheme)
├── base.scss                        # Theme-Hook (lädt nach @DmfGuppyTheme)
├── abstract/variables/
│   ├── bootstrap.scss               # Bootstrap-Overrides
│   └── custom.scss                  # Guppy-eigene Tokens
└── skin/shopware/abstract/variables/
    ├── bootstrap.scss               # Shopware-Integration (Overrides)
    └── theme.scss                   # Theme-Integration

Mehr Details

Die vollständige Architekturbeschreibung folgt unter Variablen & Tokens und Architektur.

Branching-Strategie ​

DmfGuppyTheme nutzt einen Staging-Workflow mit drei Hauptbranches:

BranchZweck
mainProduktionsbereit, Single Source of Truth, Tags entstehen hier.
stageQA- und Test-Branch. Features werden hier validiert, bevor sie in main gemergt werden.
nextVorbereitung kommender Shopware-Major-Versionen, Breaking Changes.

Feature-Branches folgen dem Schema TICKET-123_feature-name.

Hinweise ​

Theme aktivieren

Nach theme:change muss zwingend theme:compile laufen. Andernfalls werden weder SCSS-Overrides noch theme.json-Werte in das kompilierte CSS eingebaut.

Child-Theme-Workflow

Eigene Anpassungen gehören in ein Child-Theme. Statt DmfGuppyTheme direkt zu modifizieren, generiere ein Child-Theme mit dem Theme Builder oder lege es manuell an (siehe Child Theme manuell entwickeln).