JavaScript Plugins
Inhalt dieser Seite:
Das Guppy Theme erweitert das Shopware Frontend durch spezialisierte JavaScript-Plugins, die moderne Funktionalitäten und verbesserte Benutzerinteraktionen bieten.
Plugin-Architektur
Das Guppy Theme nutzt das Shopware Plugin-System und erweitert es um eigene Komponenten:
Registrierung
javascript
// Neue Plugins
PluginManager.register('SplideSliderPlugin', SplideSliderPlugin);
PluginManager.register('UspBannerPlugin', UspBannerPlugin);
PluginManager.register('ProductBoxClickPlugin', ProductBoxClickPlugin);
// Plugin-Overrides
PluginManager.override('QuantitySelector', () => import('./js/quantity-selector.plugin'));
Plugin-Initialisierung
javascript
// Automatische Initialisierung über data-Attribute
<div data-splide-slider-plugin="true" data-splide-slider-plugin-options='{...}'>
Splide Slider Plugin
Beschreibung
Moderner Slider basierend auf der Splide.js-Bibliothek, der den Standard Tiny-Slider ersetzt.
Features
- Bessere Performance: Optimiert für moderne Browser
- Barrierefreiheit: Vollständige Keyboard-Navigation und Screen-Reader-Support
- Responsive Design: Automatische Anpassung an verschiedene Bildschirmgrößen
- Touch-Unterstützung: Native Touch-Gesten für mobile Geräte
Implementierung
javascript
export default class SplideSliderPlugin extends Plugin {
static options = {
splideSnippets: ""
}
init() {
this._mountSlider(this.el, this.options.splideSnippets);
}
_mountSlider(element, options) {
var splideSlider = new Splide(element, {
i18n: options
}).mount();
// Autoplay-Behandlung
const splideOptions = Object.getPrototypeOf(splideSlider.options);
if (splideOptions.autoplay === "pause") {
splideSlider.Components.Autoplay.play();
}
}
}
Verwendung
html
<div class="splide" data-splide-slider-plugin="true">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">Slide 1</li>
<li class="splide__slide">Slide 2</li>
<li class="splide__slide">Slide 3</li>
</ul>
</div>
</div>
USP Banner Plugin
Beschreibung
Interaktives Banner-System für Unique Selling Points mit Tooltip-Funktionalität und responsivem Verhalten.
Features
- Tooltip-System: Automatische Tooltips für längere Inhalte
- Responsive Anzeige: Verschiedene Anzahl von USPs je nach Bildschirmgröße
- Slider-Integration: Automatisches Slider-Verhalten auf mobilen Geräten
- Konfigurierbare Layouts: Standard- und Benefit-Layout verfügbar
Konfiguration
javascript
// Theme-Konfiguration
{
"guppy-usp-active": true,
"guppy-usp-layout": "benefits",
"guppy-usp-layout-benefit1": "Kostenloser Versand",
"guppy-usp-layout-benefit2": "30 Tage Rückgabe",
"guppy-usp-layout-benefit3": "Schnelle Lieferung"
}
Responsive Verhalten
- Desktop: 1-4 USPs (statisch)
- Tablet: 1-2 USPs (Slider mit Endlosschleife)
- Mobile: 1 USP (Slider mit Endlosschleife)
Product Box Click Plugin
Beschreibung
Erweitert die Produktbox-Funktionalität um verbesserte Klick-Interaktionen und Zugänglichkeit.
Features
- Gesamte Box klickbar: Nicht nur der Produktname
- Keyboard-Navigation: Vollständige Tastaturunterstützung
- Focus-Management: Korrekte Focus-Behandlung
- Event-Delegation: Effiziente Event-Behandlung
Implementierung
javascript
// Verbesserte Produktbox-Interaktion
document.addEventListener('click', (event) => {
const productBox = event.target.closest('.product-box');
if (productBox && !event.target.closest('.btn, .product-action')) {
const link = productBox.querySelector('.product-name a');
if (link) {
link.click();
}
}
});
Custom Checkout Plugin
Beschreibung
Optimiert das Checkout-Erlebnis durch verbesserte Benutzerführung und Formular-Handling.
Features
- Formular-Validierung: Erweiterte Client-Side-Validierung
- Progress-Tracking: Visueller Fortschritt durch Checkout-Schritte
- Auto-Save: Automatisches Speichern von Formular-Daten
- Error-Handling: Verbesserte Fehlerbehandlung
Verwendung
javascript
// Automatische Aktivierung auf Checkout-Seiten
<div class="checkout-main" data-custom-checkout-plugin="true">
Quantity Selector Plugin (Override)
Beschreibung
Erweitert den Standard Quantity Selector um verbesserte Benutzerinteraktion und Validation.
Features
- Input-Validation: Verhindert ungültige Eingaben
- Keyboard-Support: Pfeiltasten-Navigation
- Accessibility: ARIA-Labels und Screen-Reader-Support
- Animation: Smooth Transitions bei Änderungen
Erweiterte Funktionalität
javascript
// Erweiterte Mengenauswahl
PluginManager.override('QuantitySelector', QuantitySelectorPlugin, '[data-quantity-selector]');
Weitere Plugins
Remove Extra H1 Plugin
- Zweck: SEO-Optimierung durch Entfernung redundanter H1-Tags
- Automatisch: Läuft nach DOM-Load
- SEO-Konform: Verhindert multiple H1-Tags pro Seite
Delivery Information Margin Plugin
- Zweck: Dynamische Margin-Anpassung für Lieferinformationen
- Responsive: Anpassung an verschiedene Bildschirmgrößen
- Layout-Optimierung: Verbesserte visuelle Hierarchie
Splide Slider Gallery Plugin
- Zweck: Erweiterte Galerie-Funktionalität
- Thumbnail-Navigation: Synchronisierte Thumbnail-Ansicht
- Zoom-Integration: Nahtlose Zoom-Funktionalität
- Touch-Gestures: Erweiterte Touch-Interaktionen
Collapse Footer Columns Plugin (Override)
- Zweck: Responsive Footer-Verhalten
- Mobile-First: Accordion-Verhalten auf mobilen Geräten
- Accessibility: Korrekte ARIA-Attribute
- Animation: Smooth Collapse-Animationen