Installazione
Requisiti
Magento 2.4.x. PHP 8.1–8.5. Funziona con Hyvä (qualsiasi tema figlio) e Luma (il tema Magento di default) — il tema attivo viene rilevato automaticamente, nessuna configurazione necessaria. Su qualsiasi altro tema il modulo non ha alcun effetto (nessuna azione, come se fosse disattivato).
Passaggi di installazione
- Aggiungi le credenziali che riceverai via email a
auth.jsonnella root del tuo progetto Magento:{ "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- Incolla la tua chiave di licenza in Admin → Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key, salva, poi
bin/magento cache:flush. bin/magento setup:static-content:deploy -f(se in modalitàproduction).
Non è richiesto nessun passaggio di build Tailwind né configurazione del tema: ogni regola di layout critica (rapporti griglia, posizionamento sticky, breakpoint) è CSS puro incluso nei template del modulo stesso, non classi utility Tailwind.
Configurazione
Cinque interruttori indipendenti in Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → General:
- Enable column gallery on desktop — griglia immagini a 2 colonne invece di una immagine alla volta.
- Enable sticky buy-box on desktop — su Hyvä, sia le immagini che la colonna prezzo diventano sticky (quella naturalmente più corta resta fissa mentre l'altra scorre); la descrizione si sposta sotto la galleria, e questa impostazione sblocca le due sottostanti. Su Luma, solo la colonna prezzo/acquisto resta fissa durante lo scroll.
- Enable repeated image strip below description — richiede l'impostazione sticky buy-box sopra. Mostra di nuovo tutte le immagini prodotto in una riga che va a capo.
- Enable simplified section titles — elimina il nome prodotto ripetuto accanto a titoli come "Description" (solo Hyvä).
- Enable product SEO structured data — aggiunge un blocco JSON-LD schema.org/Product (nome, immagine, brand, GTIN, prezzo, disponibilità) per i rich results di Google, e compila una meta description per i prodotti che ne sono sprovvisti. Non visivo; sia su Hyvä che su Luma, sia desktop che mobile; non sovrascrive mai una meta description esistente.
Tutte e cinque richiedono una licenza valida; senza, il modulo si comporta come se fosse completamente disattivato (layout predefinito del tema invariato, nessun errore mostrato ai visitatori del negozio).
| Opzione | Cosa fa | Default | Note |
|---|---|---|---|
| Chiave di licenza | La chiave di licenza emessa per questo dominio. | — | Incollala dopo l’acquisto, poi svuota la cache. |
| Abilita galleria a colonna su desktop | Mostra tutte le immagini prodotto insieme in una griglia a 2 colonne invece di una alla volta. | Sì | Solo desktop ≥ 1024px; il mobile resta con la galleria nativa. |
| Abilita colonna prezzo sticky su desktop | Mantiene la colonna prezzo / aggiungi al carrello in vista mentre si scorre. | Sì | Prerequisito delle due opzioni sotto; sposta anche la descrizione sotto le immagini. |
| Abilita striscia di immagini ripetuta sotto la descrizione | Mostra di nuovo tutte le immagini, a dimensione fissa, in una striscia sotto la descrizione. | Sì | Richiede la colonna prezzo sticky. |
| Abilita titoli sezione semplificati | Rimuove il nome prodotto ripetuto accanto a titoli come “Descrizione”. | Sì | Solo Hyvä (nessun effetto su Luma). |
| Abilita dati strutturati SEO prodotto | Aggiunge un blocco JSON-LD schema.org/Product (nome, immagine, brand, GTIN, prezzo, disponibilità) così che Google possa mostrare rich results, e compila una meta description per i prodotti che ne sono sprovvisti. | Sì | Non visivo; sia su Hyvä che su Luma, desktop e mobile. Non sovrascrive mai una meta description esistente. |
Disinstallazione
composer remove codingrow/module-ppps poi
bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush.
Guida utente
Galleria a colonna
Su desktop (1024px e oltre), tutte le immagini prodotto vengono mostrate insieme in una griglia a 2 colonne invece della singola immagine più striscia di miniature di Hyvä o dello slider Fotorama di Luma. Il mobile non viene mai toccato — mantiene sempre il comportamento nativo della galleria del tema (immagine singola, striscia di miniature scorrevole sotto).
Su Hyvä, questo è implementato come un blocco aggiuntivo dentro il componente galleria Alpine.js del tema stesso, riutilizzando gli stessi dati immagine già caricati per la galleria predefinita — nessuno stato JavaScript duplicato. Su Luma, la griglia viene aggiunta accanto al widget Fotorama nativo (mai modificato o reinizializzato); i due vengono alternati con CSS puro al breakpoint desktop.
Colonna prezzo sticky
Su Hyvä: sia la colonna immagini che la colonna prezzo/acquisto diventano
position: sticky — quella naturalmente più corta (di solito la colonna prezzo,
dato che la colonna immagini+descrizione è normalmente più alta) resta fissa in vista mentre
l'altra scorre oltre. La descrizione si sposta dalla sua posizione predefinita (sotto entrambe
le colonne) direttamente sotto le immagini, dentro quella stessa colonna sinistra.
Su Luma: solo la colonna prezzo/acquisto resta visivamente fissa mentre
scorri, tra l'header e la fine della sezione informazioni prodotto — la colonna immagini e
descrizione scorre sempre normalmente. Questo è implementato in JavaScript
(transform: translateY(), ricalcolato ad ogni scroll) invece che con CSS
position: sticky, poiché il posizionamento sticky non si è rivelato affidabile
combinato con il layout nativo a due colonne basato su float di Luma. Anche la descrizione viene
riposizionata direttamente sotto le immagini (di default Luma la mette a piena larghezza sotto
entrambe le colonne).
Striscia immagini ripetuta
Richiede l'impostazione sticky buy-box. Sotto la descrizione, tutte le immagini prodotto vengono mostrate di nuovo a dimensione fissa (274×274px), che vanno a capo naturalmente restringendo lo schermo — 3 per riga su una tipica larghezza desktop, sempre meno per riga restringendo, fino a 1 per riga su mobile. Le immagini si rimpiccioliscono sotto la loro dimensione fissa solo quando anche una singola immagine non entra più nella larghezza disponibile.
Titoli sezione semplificati
Il tema predefinito Hyvä mostra "Description / Nome Prodotto" come intestazione sopra la scheda descrizione — ridondante ora che il nome prodotto è già in evidenza altrove nella pagina riorganizzata. Questa impostazione la sostituisce con una semplice intestazione "Description". Le schede native di Luma non hanno mai avuto questa ripetizione, quindi l'impostazione non ha effetto visibile lì.
Dati strutturati SEO prodotto
Indipendente da tutto quanto sopra, e non è un cambiamento visivo. Quando è abilitato, ogni
pagina prodotto riceve un blocco JSON-LD schema.org/Product che descrive il prodotto
— nome, immagine, brand, GTIN/EAN, e un Offer con prezzo, valuta, disponibilità e
condizione dell'articolo — così i motori di ricerca possono mostrare rich results (prezzo e
disponibilità nella SERP, idoneità alle schede prodotto gratuite di Google). Ogni campo è
best-effort: tutto ciò che il prodotto non ha (nessun attributo brand, nessun EAN, nessun prezzo)
viene semplicemente omesso, mai un errore, e il blocco viene emesso allo stesso modo su Hyvä e
Luma, desktop e mobile.
La stessa impostazione compila anche una meta description per i prodotti che non ne hanno una propria — costruita a partire dalla descrizione breve/lunga del prodotto (o dal suo nome come ultima risorsa). Non tocca mai un prodotto che ha già una meta description (ad esempio impostata manualmente o popolata da un import di feed), quindi si limita sempre a colmare una lacuna.
Schede commerciante: resi e spedizione
Google legge dalla scheda prodotto le condizioni di reso e di spedizione per mostrarle nelle sue schede commerciante gratuite, e Search Console le segnala come mancanti quando non ci sono. Non si possono dedurre dal catalogo — sono condizioni commerciali — quindi si dichiarano in configurazione, sotto Merchant listings (returns and shipping). Entrambi i blocchi sono spenti di default e richiedono i dati strutturati del prodotto attivi.
- Condizioni di reso →
hasMerchantReturnPolicy: paesi (scelti dall'elenco di Magento), finestra di reso, giorni, come torna la merce, chi paga e l'eventuale costo. - Condizioni di spedizione →
shippingDetails: paesi serviti, costo (0per la spedizione gratuita), tempi di preparazione e di consegna in giorni lavorativi.
Due regole sono volute. Un blocco con i campi obbligatori incompleti viene scartato intero invece che pubblicato a metà: Google confronta quanto dichiari con quello che il cliente trova sul tuo sito, quindi una dichiarazione sbagliata vale meno di una assente. E con "reso non accettato" non si pubblicano né il metodo né chi paga: non c'è reso da descrivere.
L'offerta porta anche validFrom, la data da cui vale il prezzo pubblicato: l'inizio del prezzo speciale quando c'è, altrimenti la data di creazione del prodotto. Quella non richiede alcuna configurazione.
Quasi mai queste condizioni sono uguali per tutto il catalogo: i tempi di preparazione e consegna cambiano fra magazzino proprio e dropshipping, la spedizione dipende dall'ingombro, la finestra di reso da cosa si vende. E il numero di solito esiste già sul prodotto, in un attributo che compila il tuo importatore o il tuo team. Ognuno di quei campi può quindi puntare a un attributo del prodotto — l'elenco comprende quelli personalizzati — con una casella per scrivere un codice che l'elenco non offre. Dove il prodotto ha un valore vince lui; dove non ce l'ha resta il valore fisso; e un valore che non è un numero ricade sul fisso invece di pubblicare un'assurdità.
Ogni numero può venire da un attributo del prodotto, scelto dall'elenco del catalogo: qui i tempi di preparazione e consegna arrivano dagli attributi che compila un importatore.
Supporto Hyvä e Luma
Il tema attivo viene rilevato automaticamente (nessuna configurazione necessaria) risalendo la catena dei temi padre del tema corrente cercando "Hyva" o "Luma" nel codice del tema. Su qualsiasi tema che non sia un discendente di Hyvä o Luma, ogni plugin di questo modulo è garantito non fare nulla — la pagina viene renderizzata esattamente come senza il modulo installato, mai un errore.
Licenza
Una chiave di licenza per dominio Magento, inserita in Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key. La chiave è verificata dal modulo, e il negozio non dipende dai nostri server per funzionare: un disservizio da parte nostra non lo ferma. La licenza copre la versione attuale più 1 anno di update e supporto: le versioni uscite entro quell'anno restano tue per sempre, e per installare le successive rinnovi il supporto (−35%). Per cambiare dominio: il primo cambio è gratuito e immediato dalla tua area cliente, poi uno all'anno.