Features
Inhalt dieser Seite:
Optimierungen des Themes
Bootstrap-Konfiguration
Der Shopware Standard nutzt Bootstrap 5 als Frontend-Framework. Mit Guppy wird die Konfiguration von Bootstrap-Variablen stark vereinfacht. Alle Anpassungen, wie Abstände und weitere Bootstrap-Konfigurationen, werden in der Datei bootstrap.scss
zentral verwaltet. Dadurch können Änderungen ohne tiefgreifende CSS-Kenntnisse vorgenommen werden.
Liste der Variablen
Variable | Beschreibung |
---|---|
$white | Definiert die Farbe Weiß. |
$black | Definiert die Farbe Schwarz. |
$gray-100 bis $gray-900 | Definiert verschiedene Grautöne von hell (100) bis dunkel (900). |
$body-bg | Hintergrundfarbe der Webseite oder des Bodys. |
$body-color | Textfarbe der Webseite oder des Bodys. |
$enable-rounded | Aktiviert oder deaktiviert abgerundete Ecken für Elemente. |
$enable-shadows | Aktiviert oder deaktiviert Schatten für Elemente. |
$spacer | Basiswert für Abstände, der für den Aufbau von Spacern verwendet wird. |
$spacers | Definiert Abstände als Multiplikatoren des Basiswerts $spacer . |
$grid-breakpoints | Definiert die Breiten für die verschiedenen Breakpoints im Grid-System. |
$container-max-widths | Legt die maximale Breite für Container bei verschiedenen Breakpoints fest. |
$grid-gutter-width | Abstand zwischen den Spalten im Grid-System. |
$container-padding-x | Horizontale Polsterung innerhalb von Containern. |
$border-width | Standard-Breite von Rahmen. |
$border-color | Standard-Farbe von Rahmen. |
$border-radius | Standard-Rundung für Ecken. |
$border-radius-sm | Kleinere Rundung für Ecken. |
$border-radius-lg | Größere Rundung für Ecken. |
$border-radius-xl | Extra große Rundung für Ecken. |
$border-radius-2xl | Sehr große Rundung für Ecken. |
$border-radius-pill | Maximale Rundung für Pillenformen. |
$box-shadow | Standard-Schatten für Boxen. |
$box-shadow-sm | Kleinere Schatten für Boxen. |
$box-shadow-lg | Größere Schatten für Boxen. |
$box-shadow-inset | Eingelassene Schatten. |
$component-active-color | Textfarbe für aktive Komponenten. |
$component-active-bg | Hintergrundfarbe für aktive Komponenten. |
$font-size-base | Basis-Schriftgröße für den Text. |
$font-size-sm | Kleinere Schriftgröße basierend auf der Basisgröße. |
$font-size-lg | Größere Schriftgröße basierend auf der Basisgröße. |
$font-weight-lighter | Gewichtung für leichten Text. |
$font-weight-light | Gewichtung für etwas leichteren Text. |
$font-weight-normal | Standard-Gewichtung für Text. |
$font-weight-semibold | Mittlere Gewichtung für Text. |
$font-weight-bold | Gewichtung für fetten Text. |
$font-weight-bolder | Gewichtung für extra fetten Text. |
$font-weight-base | Standard-Gewichtung für den Basistext. |
$line-height-base | Zeilenhöhe für Standardtext. |
$line-height-sm | Kleinere Zeilenhöhe für Text. |
$line-height-lg | Größere Zeilenhöhe für Text. |
$h1-font-size bis $h6-font-size | Schriftgrößen für Überschriften (H1 bis H6). |
$headings-margin-bottom | Abstand unterhalb von Überschriften. |
$headings-font-family | Schriftart für Überschriften. |
$headings-font-style | Schriftstil für Überschriften. |
$headings-font-weight | Schriftgewicht für Überschriften. |
$headings-line-height | Zeilenhöhe für Überschriften. |
$headings-color | Textfarbe für Überschriften. |
$paragraph-margin-bottom | Abstand unterhalb von Absätzen. |
$input-padding-y | Vertikale Polsterung für Eingabefelder. |
$input-padding-x | Horizontale Polsterung für Eingabefelder. |
$input-border-color | Farbe der Rahmen bei Eingabefeldern. |
$input-border-radius | Rundung der Rahmen bei Eingabefeldern. |
$btn-padding-y | Vertikale Polsterung für Buttons. |
$btn-padding-x | Horizontale Polsterung für Buttons. |
$btn-font-size | Schriftgröße für Buttons. |
$btn-border-radius | Rundung der Ecken für Buttons. |
$breadcrumb-font-size | Schriftgröße für Breadcrumb-Navigation. |
$spinner-width | Breite des Spinners. |
$spinner-height | Höhe des Spinners. |
$spinner-border-width | Breite des Spinner-Rahmens. |
$offcanvas-horizontal-width | Breite des horizontalen Offcanvas-Bereichs. |
Custom-Konfiguration
Zudem gibt es noch eine custom.scss
in der Bootstrap-Unabhängige Variablen gepflegt werden können.
Liste der Variablen
Variable | Beschreibung |
---|---|
$icon-base-size | Basisgröße für Icons, verwendet für Standardmaße. |
$icon-base-color | Standardfarbe für Icons, basierend auf der aktuellen Textfarbe. |
$icon-accessibility-touch-size | Größe für Touch-Interaktionen, um die Zugänglichkeit zu verbessern. |
$h1-line-height | Zeilenhöhe für Überschrift H1, basierend auf einer systemweiten Variable. |
$h2-line-height | Zeilenhöhe für Überschrift H2, ebenfalls systemweit definiert. |
$h3-line-height | Zeilenhöhe für Überschrift H3, für kleinere Überschriften. |
$h4-line-height | Zeilenhöhe für Überschrift H4, für mittlere Überschriften. |
$h5-line-height | Zeilenhöhe für Überschrift H5, kleinere Standardüberschrift. |
$h6-line-height | Zeilenhöhe für Überschrift H6, die kleinste Überschrift. |
$product-image-height | Standardhöhe für Produktbilder, nützlich für Layouts. |
$product-image-height-lg | Höhe für Produktbilder in größeren Layouts, passt sich dem Inhalt an. |
$product-image-aspect-ration | Seitenverhältnis von Produktbildern, berechnet als 10:9. |
$product-image-background | Hintergrundfarbe für Produktbilder, basierend auf einer systemweiten Farbe. |
Responsive line heights (RLH)
Neben dem RFS Mixing von Bootstrap haben wir Guppy so erweitert, dass wir auch den Zeilenabstand dynamisch über alle Viewports anpassen können mit dem responsive line heights (RLH) Mixin.
Verwendung
Basis-Mixin: @mixin rlh
Das rlh
-Mixin bietet die volle Funktionalität, um line-height
-Werte responsiv zu machen.
@mixin rlh($values, $property: line-height) {
@if $values != null {
$val: rfs-value($values);
$fluidVal: rfs-fluid-value($values);
// Do not print the media query if responsive & non-responsive values are the same
@if $val == $fluidVal {
#{$property}: $val;
}
@else {
@include _rfs-rule {
#{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);
// Include safari iframe resize fix if needed
min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
}
@include _rfs-media-query-rule {
#{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);
}
}
}
}
Shorthand-Helper-Mixin: @mixin line-height
Dieses Mixin dient als bequemer Helfer, um schnell responsive line-height
-Werte zu definieren.
@mixin line-height($value) {
@include rlh($value);
}
Beispiel: Line-Heights
Hier ist ein Beispiel, wie du RLH in deinem Projekt einsetzen kannst:
body {
@include line-height(1.5); // Responsive line-height
}
h1 {
@include rlh(1.2); // Alternativ kannst du das rlh-Mixin direkt verwenden
}
p {
@include line-height(1.75);
}
Theme ohne Shopware-Standard-Styling
Im Guppy Theme wurde das Standard-Styling von Shopware direkt integriert. Weitere Informationen findest du hier: Theme with Bootstrap Styling
{
...
"style": [
"app/storefront/src/scss/overrides.scss",
"@StorefrontBootstrap",
"@Plugins",
"app/storefront/src/scss/skin/shopware/base.scss",
"app/storefront/src/scss/base.scss"
],
}
INFO
Der vollständige Shopware-Skin wurde in Guppy integriert. Das Hauptziel besteht nun darin, diesen übertragenen Skin gezielt zu optimieren, um Design und Funktionalität weiter zu verbessern.
Dies ermöglicht es uns, die CSS-Datei schlank und performant zu gestalten, indem wir Anpassungen direkt im Skin vornehmen und doppeltes Überschreiben von Styles vermeiden. Zudem können wir das von Shopware vorgegebene Styling gezielt optimieren und anpassen.
Theme-Konfiguration
Die theme.json
Datei wurde erweitert, um neue Konfigurationsmöglichkeiten bereitzustellen. Wie die Theme-Konfiguration generell aufgebaut ist, kann in der Shopware Dokumentation nachgeschaut werden.
Allgemein
- Flexible Anpassung von Grautönen: Grautöne können individuell nach Designvorstellungen angepasst werden.
- Erweiterte Typographie: Die Basis-Schriftgröße sowie Schriftgrößen und Zeilenabstände der Headlines können flexibel konfiguriert werden, um eine optimale Lesbarkeit zu gewährleisten.
Input & Buttons
- Anpassbares Inputs und Button-Design: Möglichkeit zur Konfiguration von Eckenradien, Rahmenbreiten und Schriftgrößen für Buttons und Inputs, um diese perfekt an das Corporate Design anzupassen.
USP-Banner
- Vielfältige Konfigurationsoptionen: Anpassung von Aussehen und Darstellung des USP-Banners, um einzigartige Verkaufsargumente optimal hervorzuheben.
Layout
- Viewport-spezifische Containerbreiten: Festlegung der Containerbreiten für Desktop, Tablet und Mobile.
- Paddings und Margins: Konfiguration von Abständen für Sections, um ein harmonisches Layout zu schaffen.
- Kopfzeilen- und Navigationsvarianten: Auswahl verschiedener Designs für Kopfzeilen und Navigationselemente.
Kopfzeile
- Shopware Standard: Das klassische Shopware Header-Layout
- Kompakt
- Erweitert
- Simpel
Navigation
- Shopware Standard: Klassisches Navigationslayout.
- Kompakt: Schlanke Version.
INFO
Wir arbeiten aktuell an einer umfangreifen, komplett barrierefreien Navigation.
Footer
- Shopware Standard: Das klassische Shopware Footer-Layout.
- Guppy Standard: Erweiterter Footer mit individuell konfigurierbaren Sektionen.
Guppy Standard Footer
Die Guppy Footer Variante wurde speziell entwickelt, um den Footer-Bereich eines Shops individueller und vielseitiger zu gestalten. Dabei bietet der Guppy Footer eine Vielzahl an Konfigurationsmöglichkeiten, die es ermöglichen, Inhalte klar zu strukturieren und gezielt an die Bedürfnisse des Shops und der Zielgruppe anzupassen.
- Zahlungs- und Versandarten: Zahlungs- und Versandarten können aktiviert oder deaktiviert werden.
- Individuelle Sektion: Platz für bis zu vier Badges, Marken-Icons oder andere Bilder, die individuell hochgeladen werden können.
- Social-Media-Links: Konfigurierbare Links und Icons zu sozialen Netzwerken wie Instagram, Threads, LinkedIn, YouTube, X (Twitter), Facebook, TikTok und Xing.
Login & Registrierung
- Kompakte Varianten: Auswahl einer kompakten Darstellung für Login- und Registrierungsseiten.
Warenkorb & Checkout
- Optimierte Darstellung: Möglichkeit, kompakte Varianten für Warenkorb und Checkout auszuwählen, um die Benutzerfreundlichkeit zu erhöhen.
Kategorie
- Produktbox-Varianten: Auswahl und Konfiguration unterschiedlicher Produktbox-Layouts.
- Erweiterte Produktbild-Einstellungen: Zusätzliche Optionen zur Anpassung der Produktbilder, einschließlich Größe und Darstellung.
Guppy Standard Produktbox
Die Guppy-Standard-Produktbox ist auf Barrierefreiheit optimiert und bietet eine benutzerfreundliche Darstellung.
Produktdetailseite
- Anpassbare Buybox: Anzeige von Produktnamen und Herstellern innerhalb der Buybox.
Badges
- Outlines für Badges: Möglichkeit, Outlines für Badges zu aktivieren.
- Erweiterte Farbkonfiguration: Flexible Farbgestaltung der Badges, um sie an das Design und die Markenidentität anzupassen.
Icons
Icons können direkt in das Theme mit selben Namen unter src/Resources/app/storefront/dist/assets/icon
hochgeladen werden und das Guppy Theme überschreibt automatisch alle verwendeten Icons im Shop. Somit kann die Standard Shopware Funktion {% sw_icon %}
auch ohne Namespace verwendet werden:
{% sw_icon 'stack' %}
Möglichkeiten zur Konfiguration von Icons:
Konfiguration | Beschreibung | Anmerkungen |
---|---|---|
size | Legt die Größe des Icons fest | --- |
pack | Wählt das Pack aus verschiedenen Icons aus | --- |
color | Legt die Farbe des Icons fest | du können entweder vordefinierte Varianten ähnlich wie bei Bootstrap (z. B.: primary, danger etc.) nutzen oder die Farbe des Icons manuell mit CSS anpassen. |
class | Definiert eine Klasse für das Icon | --- |
Barrierefreiheit
Mit Guppy legen wir großen Wert auf Barrierefreiheit und arbeiten kontinuierlich daran, das Theme vollständig barrierefrei zu gestalten.
Darüber hinaus stellen wir umfassende Accessibility Guidelines bereit, die dir dabei helfen, Barrierefreiheit in deinem Shopware-Projekt umzusetzen. Unsere Richtlinien findest du unter dmf-accessibility-guidelines.vercel.app.
Bereits jetzt haben wir wichtige Bereiche optimiert, um eine bessere Zugänglichkeit für alle Nutzer:innen zu gewährleisten:
- Navigation (in Arbeit)
- Produktboxen
- Footer
- USP-Bar
Splide-Slider
Ersetzt den Tiny-Slider und bietet:
- Bessere Barrierefreiheit.
- Optimierte Ladezeiten.
Zum Splide-Slider