Barrierefreiheit-Widget: Fehlerbehebung und FAQ
Barrierefreiheit-Widget für Sylius - typische Probleme mit Symptom/Prüfung/Lösung, bekannte Einschränkungen, häufige Fragen
Barrierefreiheit-Widget: Fehlerbehebung und FAQ
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Fehlerbehebung
Das Widget erscheint auf keiner Seite
- Prüfen: Hat der Channel im Admin eine aktivierte Zeile? Ist mindestens ein Werkzeug eingeschaltet?
- Lösung: Zeile unter MMKreativ Plugins → Barrierefreiheit-Widget anlegen und „Barrierefreiheit-Widget in diesem Channel anzeigen“ aktivieren. Sind alle fünf Werkzeuge aus, erscheint absichtlich kein schwebender Button - nur der Skip-Link, falls er an ist.
Der Skip-Link ist nicht zu sehen
- Prüfen: Ist die Einstellung „Link Zum Inhalt springen“ im Channel eingeschaltet? Drückst du Tab direkt nach dem Laden der Seite?
- Lösung: Der Link ist absichtlich nur bei Tastaturfokus sichtbar und ist das erste fokussierbare Element der Seite. Ist er an, aber fehlt trotzdem, ersetzt das Theme den Hook-Slot
sylius_shop.base.header(siehe unten).
Die Admin-Seite „Barrierefreiheit-Widget“ zeigt einen Serverfehler
- Prüfen: Wurde
bin/console mmd:accessibility:setup(oderdoctrine:migrations:migrate) bereits ausgeführt? - Lösung: Setup-Befehl ausführen. Auf der Storefront passiert in diesem Fall nichts Schlimmes: Die Einstellungen werden dort mit try/catch gelesen, ein Datenbankfehler wird nur als Warnung geloggt (Monolog-Channel
mmd_accessibility), das Widget bleibt unsichtbar.
Nach einem Theme-Wechsel ist das Widget weg, obwohl der Channel aktiviert ist
- Prüfen: Rendert das neue Theme die Hook-Slots
sylius_shop.base#javascripts,#stylesheets,.headerund.offcanvasnoch? - Lösung: Ein Theme, das diese Slots ersetzt, muss die Plugin-Templates selbst aufrufen (siehe Storefront-Integration).
Farbfilter verschieben einen Sticky-Header oder ein Banner
- Prüfen: Hat ein eigenes CSS den Filter versehentlich auf ein Wrapper-Element statt auf
<html>angewendet? - Lösung: Die Filter des Plugins sitzen bewusst auf
<html>; ein eigener Filter auf einem Wrapper erzeugt einen neuen Containing Block fürposition: fixed.
Bekannte Einschränkungen
- Nur MySQL/MariaDB. Die Migration ist in MySQL-Syntax geschrieben und bricht auf anderen Datenbanken bewusst ab.
- Strikte Content-Security-Policy. Die Farbfilter werden als Inline-
<style>gedruckt, weilurl('#id')aus einer externen Stylesheet die SVG-Filter nicht erreicht; eine strikte CSP braucht dafür einen Nonce oder Hash. - Farbfilter sind eine Näherung. Es sind feste Farbmatrizen, keine individuell berechneten Korrekturen.
- Ein Filter pro Element. Kontrast und Farbfilter teilen sich die CSS-Eigenschaft
filterauf<html>; das Plugin kombiniert beide, ein eigenerfilterauf<html>aus dem Theme würde sie überschreiben.
FAQ
Allgemein
Setzt das Widget Cookies? Nein, alle Einstellungen leben im localStorage des Browsers (siehe Datenschutz).
Macht das Plugin den Shop automatisch barrierefrei oder gesetzeskonform? Nein. Es bietet Besuchern Hilfsmittel (Skip-Link, Kontrast, Schriftgröße, Farbfilter, Blaulichtfilter, reduzierte Animationen), ersetzt aber weder Anpassungen am Theme noch ein vollständiges Audit.
Konfiguration
Kann ich das Widget nur auf einem von mehreren Channels zeigen? Ja, die Einstellung ist pro Channel; ein Channel ohne Zeile zeigt nichts.
Was passiert mit der gespeicherten Wahl eines Besuchers, wenn ich ein Werkzeug später deaktiviere? Solange der Besucher kein Bedienelement des Widgets benutzt, bleibt der gespeicherte Wert im localStorage unangetastet, wird aber nicht angewendet. Sobald er ein Bedienelement benutzt oder „Alle Einstellungen zurücksetzen“ wählt, schreibt das Widget den Speicher neu, und die Werte für nicht mehr angebotene Werkzeuge gehen dabei verloren. Schaltest du das Werkzeug später wieder ein, gilt die alte Wahl daher nur, wenn der Besucher das Widget in der Zwischenzeit nicht bedient hat.
Kompatibilität
Funktioniert das Widget mit jedem Theme? Nur, wenn das Theme die vier Twig-Hook-Slots aus Storefront-Integration weiterhin rendert.
Funktioniert das Widget headless? Ja, über die Shop API; das Rendering selbst muss die Headless-Storefront übernehmen.