Hyvä: Anleitungen und Praxiswissen | Seite 4 | mironsoft Blog
Hyvä
-
13.11.2025
Ein eigener Treuepunkte-Tab im Kundenkonto-Dashboard zeigt exemplarisch, wie sich Magento_Customer sauber erweitern lässt: eine Layout-XML-Ergänzung für die Sidebar-Navigation, ein Controller mit Kunden-Authentifizierung, ein ViewModel für die Daten und Alpine.js für Filterung und Detailansicht ohne Page-Reload, alles ohne ein einziges Core-Template zu kopieren.
-
10.11.2025
Generische SEO-Erweiterungen erzeugen Schema.org-Markup oft doppelt oder unvollständig, weil sie keinen Zugriff auf die tatsächlichen Hyvä-ViewModel-Daten haben. Wer Hyvä Schema.org-Markup direkt im phtml-Template über ein eigenes ViewModel ausgibt, erhält volle Kontrolle über Product-, Breadcrumb- und Organization-Daten, ohne zusätzlichen Modul-Overhead und ohne Konflikte mit dem CSP-Setup.
-
09.11.2025
Hyvä hat keine Knockout-Viewmodels und damit auch keine klassische JavaScript-Unit-Test-Ebene, die man aus Luma-Themes kennt. Wer eine Teststrategie für Hyvä-Themes aufbaut, muss die Testpyramide deshalb neu denken: PHPUnit prüft die PHP-Logik hinter den ViewModels, PHPStan fängt Typfehler ab, bevor überhaupt ein Test läuft, und Playwright deckt genau die Alpine.js-Interaktion im echten Browser ab, für die es in Hyvä sonst keine sinnvolle Unit-Test-Ebene gibt.
-
07.11.2025
Wer Preise je Kundengruppe unterschiedlich anzeigt, muss Full Page Cache, GraphQL-Kontext und private content gemeinsam denken. Sonst sieht ein Gast plötzlich den B2B-Nettopreis eines fremden Kunden, weil eine gecachte Seite den falschen Preis konserviert hat.
-
02.11.2025
Magento B2B liefert Company-Verwaltung, Freigabe-Workflows, Negotiable Quotes und Requisition Lists standardmäßig als Luma-Komponenten mit Knockout.js und UI-Components aus, die in einem Hyvä-Theme nicht funktionieren, weil Hyvä genau diese Schicht entfernt. Wer B2B-Funktionen im Frontend trotzdem sauber abbilden will, braucht ViewModels für den Company-Kontext, Alpine.js für interaktive Zustände und gezielte Layout-XML-Overrides der Luma-Templates.
-
20.10.2025
Wer Swatches für konfigurierbare Produkte nur als Farb-Kästchen ohne durchdachtes State-Management umsetzt, baut sich Preis-, Galerie- und Bestandsfehler auf der Produktdetailseite ein. Eine saubere Alpine.js-State-Machine, ein passendes ViewModel und ein GraphQL-taugliches Datenmodell machen Hyvä-Swatches robust, barrierefrei und cachefreundlich zugleich.
-
20.10.2025
Wer für jeden Modal-Dialog im Hyvä-Theme eine eigene Alpine-Komponente baut, vervielfacht Wartungsaufwand und Bugs bei Fokus-Handling, Escape-Taste und z-index. Dieser Artikel zeigt, wie eine einzige generische Alpine-Modal-Komponente per Alpine.store gleichzeitig ein Login-Popup und eine Produkt-Größentabelle auf der PDP steuert, inklusive x-teleport gegen Overflow-Clipping, Focus-Trap, Escape- und Klick-außerhalb-Handling sowie CSP-sicherer Umsetzung mit registerInlineScript.
-
18.10.2025
Wer in Hyvä-Themes ein eigenes Kontakt-, Anfrage- oder Newsletter-Formular baut, vergisst regelmäßig ein einziges, unscheinbares Hidden-Field und wundert sich anschließend über Fehlermeldungen, die wie ein Bug aussehen. Dieser Artikel zeigt, wie der Form-Key CSRF-Schutz in Magento technisch funktioniert und wie er sauber in phtml-Templates, AJAX-Requests mit Alpine.js, eigenen Controllern und im Zusammenspiel mit dem Full Page Cache eingebunden wird, mit echten Codebeispielen aus Magento 2.4.8-p4 und PHP 8.4.
-
18.10.2025
Ein Mengenrabatt, der auf den ersten Blick verständlich ist, und ein Sale-Countdown, der nicht durch eine falsch gestellte Client-Uhr ausgehebelt wird, klingen nach Kleinigkeiten. In der Praxis entscheiden genau diese Details darüber, ob Kunden einer Preisangabe vertrauen oder sie als Trick abtun.
-
17.10.2025
CMS Blöcke in Magento werden von Redakteuren im WYSIWYG bearbeitet, nicht von Entwicklern in phtml Dateien. Ohne feste Hyvä CMS Block Styling Konventionen entstehen inkonsistente Layouts, kaputte Utility-Klassen, die vom Tailwind JIT Compiler nie generiert wurden, und CSP-Verletzungen durch Inline-Styles. Ein kleines, dokumentiertes Klassen-Set löst dieses Problem dauerhaft.