Installatie
Vereisten
Magento 2.4.x. PHP 8.1–8.5. Werkt met Hyvä (elk childthema) en Luma (het standaard Magento-thema) — het actieve thema wordt automatisch gedetecteerd, geen configuratie nodig. Bij elk ander thema heeft de module geen effect (geen actie, alsof deze uitgeschakeld is).
Installatiestappen
- Voeg de inloggegevens die je per e-mail ontvangt toe aan
auth.jsonin de root van je Magento-project:{ "http-basic": { "repo.codingrow.com": { "username": "...", "password": "..." } } } composer config repositories.codingrow composer https://repo.codingrow.comcomposer require codingrow/module-pppsbin/magento module:enable Codingrow_Pppsbin/magento setup:upgrade && bin/magento setup:di:compile- Plak je licentiesleutel in Admin → Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key, sla op, daarna
bin/magento cache:flush. bin/magento setup:static-content:deploy -f(inproduction-modus).
Er is geen Tailwind-buildstap of themaconfiguratie vereist: elke layout-kritische regel (rasterverhoudingen, sticky positionering, breakpoints) is als pure CSS in de templates van de module zelf ingebed, niet als Tailwind-utilityklassen.
Configuratie
Vijf onafhankelijke schakelaars in Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → General:
- Enable column gallery on desktop — 2-koloms afbeeldingenraster in plaats van één afbeelding tegelijk.
- Enable sticky buy-box on desktop — op Hyvä worden zowel de afbeeldingen- als de prijskolom sticky (de van nature kortste blijft vastgezet in beeld terwijl de andere doorscrolt); de beschrijving verplaatst naar onder de galerij, en deze instelling ontgrendelt de twee onderstaande. Op Luma blijft alleen de prijs-/koopkolom vast tijdens het scrollen.
- Enable repeated image strip below description — vereist de instelling sticky buy-box hierboven. Toont alle productafbeeldingen opnieuw in een rij die afbreekt.
- Enable simplified section titles — verwijdert de herhaalde productnaam naast titels zoals "Description" (alleen Hyvä).
- Enable product SEO structured data — voegt een schema.org/Product JSON-LD-blok toe (naam, afbeelding, merk, GTIN, prijs, beschikbaarheid) voor Google rich results, en vult een meta description in voor producten die er geen hebben. Niet-visueel; zowel Hyvä als Luma, zowel desktop als mobiel; overschrijft nooit een bestaande meta description.
Alle vijf vereisen een geldige licentie; zonder licentie gedraagt de module zich alsof deze volledig uitgeschakeld is (ongewijzigde standaardlayout van het thema, geen fout zichtbaar voor winkelbezoekers).
| Optie | Wat het doet | Standaard | Notities |
|---|---|---|---|
| Licentiesleutel | De voor dit domein uitgegeven licentiesleutel. | — | Plak deze na aankoop en leeg de cache. |
| Kolomgalerij op desktop inschakelen | Toont alle productafbeeldingen tegelijk in een raster met 2 kolommen in plaats van één per keer. | Ja | Alleen desktop ≥ 1024px; mobiel houdt de native galerij. |
| Sticky koopblok op desktop inschakelen | Houdt de prijs- / in-winkelwagen-kolom in beeld tijdens het scrollen. | Ja | Vereiste voor de twee opties hieronder; verplaatst de beschrijving onder de afbeeldingen. |
| Herhaalde afbeeldingsstrip onder de beschrijving inschakelen | Toont alle afbeeldingen opnieuw, op vaste grootte, in een strip onder de beschrijving. | Ja | Vereist het sticky koopblok. |
| Vereenvoudigde sectietitels inschakelen | Verwijdert de herhaalde productnaam naast titels zoals “Beschrijving”. | Ja | Alleen Hyvä (geen effect op Luma). |
| Gestructureerde SEO-gegevens voor producten inschakelen | Voegt een schema.org/Product JSON-LD-blok toe (naam, afbeelding, merk, GTIN, prijs, beschikbaarheid) zodat Google rich results kan tonen, en vult een meta description in voor producten die er geen hebben. | Ja | Niet-visueel; zowel Hyvä als Luma, desktop en mobiel. Overschrijft nooit een bestaande meta description. |
Verwijderen
composer remove codingrow/module-ppps daarna
bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush.
Gebruikershandleiding
Kolomgalerij
Op desktop (vanaf 1024px) worden alle productafbeeldingen tegelijk getoond in een 2-koloms raster in plaats van de enkele afbeelding plus miniaturenstrook van Hyvä of de Fotorama-slider van Luma. Mobiel wordt hier nooit door beïnvloed — het behoudt altijd het native galerijgedrag van het thema (enkele afbeelding, veegbare miniaturenstrook eronder).
Op Hyvä is dit geïmplementeerd als een toegevoegd blok binnen het eigen Alpine.js-galerij- component van het thema, waarbij dezelfde afbeeldingsgegevens worden hergebruikt die al voor de standaardgalerij geladen zijn — geen dubbele JavaScript-status. Op Luma wordt het raster toegevoegd naast de native Fotorama-widget (nooit aangepast of opnieuw geïnitialiseerd); beide worden met pure CSS omgeschakeld op het desktop-breakpoint.
Sticky prijskolom
Op Hyvä: zowel de afbeeldingenkolom als de prijs-/koopkolom worden
position: sticky — de van nature kortste (meestal de prijskolom, omdat de
afbeeldingen+beschrijvingskolom normaal gesproken hoger is) blijft vastgezet in beeld terwijl
de andere doorscrolt. De beschrijving verplaatst van zijn standaardpositie (onder beide kolommen)
naar direct onder de afbeeldingen, binnen diezelfde linkerkolom.
Op Luma: alleen de prijs-/koopkolom blijft visueel vast tijdens het
scrollen, tussen de header en het einde van de productinformatiesectie — de afbeeldingen- en
beschrijvingskolom scrolt altijd normaal mee. Dit is geïmplementeerd in JavaScript
(transform: translateY(), herberekend bij elke scroll) in plaats van CSS
position: sticky, omdat sticky positionering niet betrouwbaar bleek te werken in
combinatie met de native, op floats gebaseerde tweekolomslayout van Luma. De beschrijving wordt
ook verplaatst naar direct onder de afbeeldingen (standaard plaatst Luma deze over de volle
breedte onder beide kolommen).
Herhaalde afbeeldingenstrook
Vereist de instelling sticky buy-box. Onder de beschrijving worden alle productafbeeldingen opnieuw getoond op vaste grootte (274×274px), die op natuurlijke wijze herschikken bij een smaller scherm — 3 per rij bij een typische desktopbreedte, steeds minder per rij naarmate het scherm smaller wordt, tot 1 per rij op mobiel. Afbeeldingen krimpen pas onder hun vaste grootte wanneer zelfs een enkele niet meer in de beschikbare breedte past.
Vereenvoudigde sectietitels
Het standaardthema van Hyvä toont "Description / Productnaam" als kop boven het beschrijvingstabblad — overbodig zodra de productnaam al elders prominent aanwezig is op een herschikte pagina. Deze instelling vervangt dit door een eenvoudige kop "Description". De eigen tabbladen van Luma hebben deze herhaling nooit gehad, dus heeft de instelling daar geen zichtbaar effect.
Gestructureerde SEO-gegevens voor producten
Onafhankelijk van alles hierboven, en geen visuele wijziging. Wanneer ingeschakeld krijgt
elke productpagina een schema.org/Product JSON-LD-blok dat het product beschrijft —
naam, afbeelding, merk, GTIN/EAN en een Offer met prijs, valuta, beschikbaarheid en
productconditie — zodat zoekmachines rich results kunnen weergeven (prijs en beschikbaarheid in
de SERP, geschiktheid voor Google's gratis productvermeldingen). Elk veld is best-effort: wat het
product niet heeft wordt simpelweg weggelaten, nooit een fout, en het blok wordt op dezelfde
manier uitgevoerd op Hyvä en Luma, desktop en mobiel.
Dezelfde instelling vult ook een meta description in voor producten die er zelf geen hebben — opgebouwd uit de korte/lange beschrijving van het product (of als laatste redmiddel de naam). Het raakt nooit een product aan dat al een meta description heeft, dus het vult alleen ooit een leemte op.
Verkopersvermeldingen: retour en verzending
Google leest retour- en verzendvoorwaarden van de productpagina om ze in zijn gratis verkopersvermeldingen te tonen, en Search Console meldt ze als ontbrekend wanneer ze er niet zijn. Ze zijn niet uit de catalogus af te leiden — het zijn commerciële voorwaarden — dus worden ze opgegeven in de configuratie, onder Merchant listings (returns and shipping). Beide blokken staan standaard uit en vereisen dat de gestructureerde productgegevens aan staan.
- Retourvoorwaarden →
hasMerchantReturnPolicy: landen (uit de lijst van Magento), retourtermijn, dagen, hoe de goederen terugkomen, wie betaalt en eventuele kosten. - Verzendvoorwaarden →
shippingDetails: landen waarnaar je verzendt, kosten (0voor gratis verzending), verwerkings- en levertijd in werkdagen.
Twee regels zijn bewust. Een blok met onvolledige verplichte velden wordt in zijn geheel weggelaten in plaats van half waar gepubliceerd: Google vergelijkt wat je opgeeft met wat de klant op je site aantreft, dus een verkeerde opgave is minder waard dan geen. En bij "retouren niet geaccepteerd" worden noch de methode noch de betaler gepubliceerd: er is geen retour te beschrijven.
Het aanbod bevat ook validFrom, de datum vanaf wanneer de gepubliceerde prijs geldt: de start van de speciale prijs als die er is, anders de aanmaakdatum van het product. Daarvoor is geen configuratie nodig.
Deze voorwaarden gelden zelden voor de hele catalogus: verwerkings- en levertijden verschillen tussen eigen magazijn en dropshipping, verzending hangt af van het volume, de retourtermijn van wat je verkoopt. En het getal staat meestal al op het product, in een attribuut dat je importeur of je team invult. Elk van die velden kan daarom naar een productattribuut wijzen — de lijst bevat ook je eigen attributen — met een vakje om een code te typen die de lijst niet aanbiedt. Waar het product een waarde heeft, wint het product; waar niet, blijft de vaste waarde staan; en een waarde die geen getal is valt terug op de vaste in plaats van onzin te publiceren.
Elk getal kan uit een productattribuut komen, gekozen uit de lijst van de catalogus: hier komen verwerkings- en levertijd uit de attributen die een importeur invult.
Hyvä- en Luma-ondersteuning
Het actieve thema wordt automatisch gedetecteerd (geen configuratie nodig) door de oudertthema-keten van het huidige thema te doorlopen op zoek naar "Hyva" of "Luma" in de themacode. Bij elk thema dat geen afstammeling is van Hyvä of Luma, heeft elke plugin van deze module gegarandeerd geen effect — de pagina wordt precies zo weergegeven als zonder de geïnstalleerde module, nooit een fout.
Licentie
Eén licentiesleutel per Magento-domein, ingevoerd bij Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key. De sleutel wordt door de module geverifieerd, en je winkel heeft onze servers niet nodig om te draaien: een storing bij ons legt hem niet stil. Overstappen naar een nieuw domein vereist een nieuwe sleutel — neem contact op met support met de gegevens van je oorspronkelijke aankoop. Je licentie dekt de huidige versie plus 1 jaar updates en ondersteuning: de versies die in dat jaar zijn uitgebracht blijven voor altijd van jou, en voor latere verleng je de ondersteuning (−35%). Van domein wisselen: je eerste wissel is gratis en direct vanuit je klantgedeelte, daarna één per jaar.