FAQ per modulo PrestaShop
1015 risposteDomande
Il modulo viene renderizzato solo quando il negozio non è in modalità catalogo e quando PrestaShop restituisce più di una valuta attiva. Se c'è una sola valuta attiva, l'hook non restituisce nulla e non viene mostrato alcun selettore. Il posizionamento dipende anche dal tema che renderizza l'hook displayNav2 nell'area header o navigazione.
Ogni messaggio personale nasce da un esemplare: una vera email esportata dal tuo client di posta. Il modulo ne conserva struttura, firma e parte plain-text e sostituisce solo il corpo per ogni destinatario. Non ci sono pixel di tracciamento, link riscritti o markup da campagna, quindi il messaggio consegnato ha la stessa struttura della posta che il tuo team invia a mano.
Dalla consegna, non dalla data dell'ordine. L'articolo 9, paragrafo 2, lettera b) della direttiva 2011/83/UE fa decorrere il termine dal giorno in cui il consumatore acquisisce il possesso fisico dei beni, che nella maggior parte dei negozi cade diversi giorni dopo l'ordine.
Il modulo ricava quel momento dalla fonte più affidabile disponibile, in quest'ordine: una data di consegna inserita a mano, una data per singola spedizione da MPR Warehouse Revolution, il primo passaggio dell'ordine in uno stato contrassegnato come consegna, la data di consegna registrata sull'ordine e infine il record del vettore.
Se nessuna di queste è nota, non viene fissata alcuna scadenza e il termine non è ancora iniziato. È voluto: una data di partenza indovinata potrebbe chiudere un diritto che il cliente ha ancora.
Sì. Il modulo è pensato per PrestaShop 1.7.7 e versioni successive e funziona su 1.7.x, 8.x e 9.x con PHP 7.1 o superiore. Si registra sugli hook della home page (displayHome / displayHomeIntro) e può anche essere inserito come widget, quindi funziona nei temi supportati senza modifiche al core.
Una licenza a vita per un dominio con 3 mesi di supporto e aggiornamenti inclusi. Le nuove versioni si installano tramite il canale di aggiornamento standard dal tuo portale clienti, e le estensioni del supporto sono disponibili dalla pagina del prodotto.
No. Storico delle campagne, liste di soppressione, prove di consenso e traccia di audit vengono deliberatamente conservati nel database alla disinstallazione, perché soppressione e registri dei consensi sono impegni verso i tuoi clienti. Rimuoverli è un'operazione sul database separata e deliberata.
Mail Revolution supporta PrestaShop da 1.6 a 9.x su PHP 7.1 o superiore, in linea con il resto del catalogo mypresta.rocks. È compatibile con il multistore: campagne, code e liste di soppressione sono separate per negozio.
No. Le lettere personali partono dalla normale via di posta del negozio e nulla nel modulo richiede un account esterno. Per le newsletter broadcast puoi collegare opzionalmente un provider SMTP come identità dedicata della newsletter, ma non è necessario per usare il modulo.
Le campagne personali in modalità manuale trattengono ogni messaggio renderizzato. La coda elenca i destinatari a partire dal punteggio migliore e mostra l'email esatta che ogni cliente riceverebbe, con il paragrafo personalizzato evidenziato. Un collega designato approva o rifiuta ogni messaggio; le decisioni vengono salvate con l'account del dipendente e il timestamp, e la modifica di un messaggio invalida le approvazioni precedenti.
Per uscire dalle campagne personali basta una risposta del cliente, e le newsletter portano sempre header di disiscrizione in un clic. Disiscrizioni, bounce e reclami alimentano una lista di soppressione controllata immediatamente prima di ogni invio, e un blocco di un messaggio per campagna evita contatti ripetuti.
L'ordine ha una sola scadenza e decorre dall'ultimo pacco. L'articolo 9, paragrafo 2, lettera b), punto i) è esplicito: quando più beni ordinati insieme vengono consegnati separatamente, il termine parte dalla ricezione dell'ultimo.
È proprio qui che le procedure di reso gestite a mano si rompono. Se metà arriva lunedì e il resto venerdì, far scadere prima la metà di lunedì significa rifiutare un reso che il negozio è ancora tenuto ad accettare.
Il modulo registra la consegna riga per riga, così vedi quando è arrivato ogni articolo, e applica comunque una sola scadenza all'ordine. Le date per riga servono al tuo archivio e non possono mai scadere prima della scadenza dell'ordine.
No. Le fatture e le note di credito già emesse non vengono mai riscritte, e nemmeno pagamenti, totali, righe d'ordine, corrieri, cronologia, movimenti di magazzino o spedizioni. Una fusione cambia a chi appartiene un ordine, non l'ordine in sé. Un indirizzo a cui un ordine fa riferimento mantiene il proprio ID e ogni campo che compare sui tuoi documenti, quindi una vecchia fattura descrive ancora la consegna realmente avvenuta.
Aggiunge il Messenger ufficiale di Intercom al tuo negozio PrestaShop. Il modulo inserisce il loader di Intercom appena prima del tag body di chiusura su ogni pagina, così incolli il tuo App ID Intercom una sola volta invece di modificare i template del tema. Il widget si carica esattamente come lo snippet di installazione di Intercom, mantenendo pienamente funzionanti casella di posta, tour dei prodotti e messaggi automatici.
No, ed è una scelta precisa. Questo modulo non contiene telefonia: nessuna chiamata automatica, nessun SIP, nessun Twilio, nessuna registrazione. Raccoglie la richiesta, ti avvisa e continua a sollecitarti finché non la chiudi. La telefonata la fai tu, dal link nella coda.
Se ti servono composizione automatica, registrazioni o statistiche sugli operatori, ti serve una piattaforma telefonica in abbonamento. Questa è l'alternativa di proprietà per i negozi a cui basta che il contatto arrivi e non venga dimenticato.
Il modulo crea eventi GA4 a partire da azioni reali di PrestaShop anziché da un semplice tag di visualizzazione pagina. Tiene traccia di visualizzazioni prodotto, aggiunta al carrello e variazioni di quantità, avvio del checkout, acquisti completati, ricerche nel sito, accessi cliente e creazione di nuovi account, ciascuno inviato con i parametri e-commerce GA4 corrispondenti. Un generatore di eventi integrato consente inoltre di definire eventi personalizzati.
Sì. Il modulo registra il proprio selettore nell'hook displayNav2 e carica uno stylesheet che nasconde il selettore valuta desktop nativo di PrestaShop con #_desktop_ps_currencyselector { display: none !important; }. Il cliente vede il dropdown simbolo compatto del modulo invece del blocco valuta predefinito.
Non disinstalla né modifica il modulo valuta nativo di PrestaShop. Renderizza semplicemente un dropdown sostitutivo nell'hook header/navigation e nasconde il blocco desktop standard con CSS. Questo rende il cambio reversibile: disabilita o disinstalla il modulo e il selettore nativo può riapparire, assumendo che il tema lo renderizzi ancora.
Il sostituto usa il simbolo della valuta corrente nel toggle, opzionalmente mostra la label ISO accanto e lista le valute attive nel dropdown. I default sono SHOW_LABEL=0 e SHOW_NAMES=1, quindi il toggle resta compatto mentre il dropdown mostra comunque i nomi valuta completi. Ogni opzione è un link nofollow costruito con i normali parametri di switch valuta di PrestaShop.
Il posizionamento dipende comunque dal tema. Se il tema non chiama displayNav2 nell'area header o navigation, il modulo non ha un punto in cui renderizzare il selettore anche se gli asset sono caricati.
Il modulo renderizza solo quando lo shop non è in catalog mode e quando PrestaShop restituisce più di una valuta attiva. Se c'è una sola valuta attiva, l'hook restituisce nulla, quindi non viene mostrato alcun selettore. Anche il posizionamento dipende dal tema che renderizza l'hook displayNav2 nell'area header o navigation.
Controlla prima questi punti:
- Catalog mode: se catalog mode è abilitato, il selettore restituisce intenzionalmente una stringa vuota.
- Currency count: il modulo chiama la lista valute attive di PrestaShop e si nasconde quando quella lista contiene una valuta o nessuna.
- Theme hook: il selettore è renderizzato solo tramite
displayNav2. Alcuni temi custom rimuovono o spostano quell'hook. - Native block CSS: il modulo nasconde
#_desktop_ps_currencyselector. Se stai cercando solo il vecchio blocco, è intenzionalmente nascosto mentre questo modulo è attivo.
Se il selettore non appare ancora dopo aver abilitato più valute, ispeziona il sorgente pagina per mprcurrency-dropdown. Se quel markup manca, l'hook non viene renderizzato o il modulo è uscito prima. Se il markup esiste ma non lo vedi, il problema è CSS del tema o layout header, non disponibilità valuta.
Il modulo carica il proprio CSS e JavaScript sul front office. JavaScript apre e chiude soltanto il dropdown; non crea il markup del selettore. Quindi un selettore mancante è quasi sempre catalog mode, configurazione mono-valuta, hook displayNav2 mancante o styling tema che nasconde il blocco renderizzato.
Sì, se lo abiliti. Configurando un API Secret di GA4, il modulo può inviare gli acquisti lato server tramite il Measurement Protocol come ripiego, così un ordine viene comunque registrato in GA4 anche quando il tag gtag.js del browser è bloccato da un ad blocker o perso su una pagina non riuscita. Il ripiego funziona solo se lo abiliti e fornisci l'API Secret.
In un recesso legale sull'intero ordine, sì. L'articolo 13, paragrafo 1 impone il rimborso di tutti i pagamenti ricevuti dal consumatore e nomina espressamente le spese di consegna.
L'articolo 13, paragrafo 2 pone un limite. Se il cliente ha scelto una consegna più costosa della tua opzione standard più economica, devi solo quest'ultima: il passaggio all'espresso non è rimborsabile. Indica la tua consegna standard più economica nelle impostazioni e il limite viene applicato automaticamente.
Due casi fanno eccezione. Quando torna solo una parte dell'ordine, il servizio di consegna è stato usato per ciò che il cliente tiene, quindi la spedizione non viene rimborsata per impostazione predefinita. Quando la merce era difettosa, errata o mancante, la spedizione viene rimborsata per intero: è un rimedio, non un recesso.
Ogni importo è mostrato con la ragione per cui è incluso o escluso, prima che tu confermi.
Perché un conto alla rovescia è una promessa che deve mantenere una persona, e alle 22:40 di sabato non la mantiene nessuno. Una promessa non mantenuta costa più fiducia di una promessa mai fatta.
Il modulo legge i tuoi orari e propone solo ciò che puoi davvero fare: il prima possibile finché sei realmente aperto, stamattina, più tardi oggi o il prossimo giorno di apertura. Fuori orario annuncia un richiamo durante l'apertura. La frase "di solito entro N minuti" compare solo a negozio aperto.
Sì. Ogni fusione scrive uno snapshot cifrato di ogni riga modificata, e History & Undo ti offre un pulsante finché quello snapshot esiste, 30 giorni per impostazione predefinita. L'annullamento si rifiuta se sovrascriverebbe qualcosa cambiato dopo la fusione, se l'ID di un cliente assorbito è stato riassegnato, o se una richiesta di cancellazione GDPR ha rimosso lo snapshot. Le sessioni cliente sono l'eccezione voluta: la fusione le revoca e non vengono mai ripristinate, perché restituire un accesso attivo aprirebbe la strada al furto dell'account.
Accedi al tuo account Intercom su app.intercom.com, apri Impostazioni > Installazione > Web e copia l'App ID dal codice di installazione. Incollalo nel campo App ID del modulo e salva. Finché non inserisci un App ID il widget resta inattivo, così il modulo non genera mai uno script rotto o vuoto sul tuo negozio.
Il modulo analizza il database alla ricerca di ogni tabella che porti un riferimento al cliente, comprese quelle che non ha mai visto, e le elenca nella schermata Data Sources con il numero di righe e il rischio di ricollegarle. Scegli una strategia per ogni tabella. In una tabella senza strategia non viene scritto nulla. Una tabella non annullabile, una con trigger, una vista o una tabella senza chiave primaria blocca la fusione invece di essere trattata alla meglio.
Il modulo supporta un caricamento rispettoso del consenso, così il tracciamento tiene conto dello stato di consenso del visitatore, e offre uno User ID con hash attento alla privacy invece di memorizzare identificatori grezzi. Il comportamento del consenso dipende dalle opzioni abilitate e dalla soluzione di consenso esterna (ad esempio una CMP) che colleghi. Resti responsabile della tua configurazione di privacy e consenso.
PrestaShop dalla 1.6.x alla 9.x, su PHP 7.1 e successivi. La versione 1.0.0 è stata installata e testata su PrestaShop 1.6.1.24 con PHP 7.1, 1.7.8.11, 8.2.1 e 9.2.0.
Il modulo sceglie gli hook adatti alla versione che trova: i nomi 1.6 su 1.6 e quelli moderni dalla 1.7, e non registra mai due hook che mostrerebbero il pulsante due volte nella stessa pagina.
Sì. Quando "Passa i dati utente" è attivo, il modulo invia email e nome del cliente connesso a intercomSettings, così le conversazioni arrivano già identificate nella tua casella Intercom. Gli ospiti vedono comunque il Messenger, ma in modo anonimo: nessun dato personale viene inviato per i visitatori non connessi.
Sì. Il modulo tiene i propri record di reso e non legge né scrive mai le tabelle dei resi di PrestaShop, quindi funziona sia che quella funzione nativa sia attiva sia che non lo sia.
Se lasci i resi nativi attivi, nulla va in conflitto: i due convivono e il modulo non interferisce con il flusso nativo. La maggior parte dei negozi disattiva i resi nativi, perché il pannello cliente del modulo sostituisce il modulo nativo essenziale e aggiunge la scadenza di cui quel form non ha alcuna nozione.
No. Usa le valute già configurate in PrestaShop e costruisce link switch con SubmitCurrency=1&id_currency=.... Non crea valute, non modifica tassi di cambio e non calcola conversioni. Disponibilità valuta, tassi e comportamento prezzi restano gestiti dalla configurazione valuta di PrestaShop.
Il modulo legge le valute attive di PrestaShop, trova la valuta corrente dal contesto cliente e renderizza un link per ogni valuta disponibile. Facendo clic su un link, chiedi a PrestaShop di cambiare la valuta selezionata del visitatore; dopo questo, PrestaShop gestisce conversione prezzo, arrotondamento, display tasse e formattazione esattamente come farebbe normalmente.
Usa le impostazioni valuta proprie di PrestaShop per cambi operativi: aggiungere o disabilitare valute, aggiornare tassi di cambio, configurare localizzazione e decidere come mostrare i prezzi. Usa questo modulo per la presentazione front-office del selettore: toggle solo simbolo, codice ISO opzionale nel toggle, nomi opzionali nel dropdown, styling theme-aware e ingombro header compatto.
Un modo utile per pensarci è: PrestaShop possiede la logica del denaro; il modulo possiede la UI dropdown. Se una valuta manca dal selettore, sistema prima il suo stato active/available in PrestaShop. Se i valori conversione sono sbagliati, aggiorna i tassi cambio in PrestaShop invece che in questo modulo.
Il testo esatto del consenso mostrato al visitatore viene salvato con ogni richiesta, insieme a un digest con chiave e a una data, così puoi dimostrare cosa è stato accettato e non cosa dice la pagina oggi.
Il modulo GDPR ufficiale esporta e cancella le richieste di un cliente registrato. Un ospite lascia solo un numero, che quel modulo non può collegare: per questo la pagina impostazioni offre una ricerca che esporta o cancella per numero, con la stessa validazione del modulo. Le richieste vengono inoltre eliminate dopo 30 o 90 giorni e gli indirizzi IP non sono mai salvati, solo un hash con chiave usato per i limiti.
Sì. Puoi scegliere se il Messenger appare su tutte le pagine o solo su alcune, attivare o meno la visualizzazione su dispositivi mobili e impostare un ritardo in secondi affinché il widget si carichi poco dopo la pagina. Così il negozio resta veloce e la chat compare solo dove aiuta davvero i clienti.
Assegna a ogni coppia un punteggio su indizi indipendenti: stessa email, alias in cui i punti di Gmail o un suffisso con il più nascondono la stessa casella, stesso numero di telefono normalizzato in formato internazionale, corrispondenza approssimata di nome e indirizzo postale nello stesso CAP, stessa azienda o partita IVA, e un checkout ospite che combacia con un account registrato. Gli indizi dello stesso tipo non si sommano, e le prove contrarie come partite IVA o paesi diversi sottraggono. Ogni peso lo puoi modificare.
No, e darlo per scontato è un errore comune e costoso. L'articolo 16, lettera m) esclude i contenuti digitali senza supporto materiale solo se sussistono tre condizioni insieme: l'esecuzione è iniziata, il consumatore ha dato il proprio consenso espresso preventivo e ha riconosciuto di perdere così il diritto di recesso.
PrestaShop non registra nessuna delle tre. Il modulo considera quindi un prodotto virtuale ancora coperto dal diritto di recesso, finché non confermi nelle impostazioni che il tuo checkout raccoglie davvero quel consenso e quel riconoscimento.
Sbaglia deliberatamente nella direzione sicura. Concedere un reso a torto costa un rimborso; rifiutarlo a torto viola la direttiva.
I beni confezionati su specifiche del cliente sono un caso diverso. L'articolo 16, lettera c) dipende dal bene stesso e non da un consenso, quindi un prodotto personalizzabile è escluso di per sé.
Sì. Il modulo include l'esclusione del traffico per dipendente e per indirizzo IP, così le visite dallo staff connesso o dagli indirizzi IP che elenchi non vengono inviate a GA4. In questo modo i test interni e l'attività di back-office restano fuori dai tuoi report analitici.
Sì. Il testo della slide, titolo, sottotitolo ed etichetta del pulsante, è memorizzato per lingua, così ogni lingua attiva del negozio può mostrare la propria formulazione pur condividendo lo stesso layout e le stesse immagini. Le traduzioni si gestiscono direttamente nel back office del modulo.
Quattro meccanismi, tutti lato server. Un honeypot che una persona non vede mai. Un controllo dei tempi che rifiuta un invio impossibilmente rapido dopo il caricamento. Un limite per visitatore. E l'unione dei duplicati: cliccare cinque volte produce un contatto con un contatore, non cinque righe.
I numeri sono validati secondo le regole internazionali prima del salvataggio, quindi le sciocchezze evidenti non arrivano in coda. Il modulo non sostiene di verificare che un numero sia raggiungibile: nulla può farlo senza chiamare.
No. Banner Revolution mostra soltanto i banner, i testi e i link di call-to-action che configuri. Non raccoglie dati personali dei visitatori e non imposta cookie di tracciamento, quindi non ha un impatto GDPR proprio oltre alle pagine a cui rimandi.
Un pannello di diagnostica nel back-office convalida il Measurement ID di GA4 prima dell'avvio del tracciamento e verifica la consegna degli eventi, con gestione dei tentativi per il Measurement Protocol. Un registro eventi annota gli eventi creati e inviati dal modulo, così puoi confermare l'arrivo dei dati in GA4 prima di affidarti ai report.
Solo se lo attivi tu, e viene consegnato disattivato. Una volta attivo agisce soltanto sui gruppi sopra la tua soglia di certezza con almeno il numero configurato di indizi indipendenti, e rifiuta qualsiasi gruppo che tocchi una tabella sconosciuta, un trigger, una tabella non transazionale, o che presenti un conflitto irrisolto. Il preset più prudente lo limita a far confluire un checkout ospite nell'account registrato che possiede già quell'identità.
Puoi attivarlo, ma in un negozio dell'Unione europea non dovresti. L'articolo 9, paragrafo 1 dà al consumatore il diritto di recedere senza dover fornire alcuna motivazione, quindi un campo obbligatorio non è conforme.
L'impostazione è perciò disattivata per impostazione predefinita, l'elenco dei motivi è proposto come facoltativo e il modulo dice al cliente in parole chiare che non serve alcun motivo. I motivi che i clienti indicano spontaneamente vengono comunque registrati e mostrati nel back office, ed è lì che di solito sta l'informazione utile.
Il modulo supporta PrestaShop dalla 1.6 alla 9.x, inclusa la 8.x, e funziona con PHP 7.2 e versioni successive. Tutta la configurazione avviene nel back-office, quindi non richiede modifiche ai template del tema.
Sì. Gli interruttori di posizionamento coprono il pulsante flottante, la scheda prodotto, l'intestazione e un hook personalizzato del tema. Inoltre puoi mostrare il widget solo su prodotti, categorie e pagine scelti, oppure ovunque tranne lì, con lo stesso selettore usato dagli altri nostri moduli.
Se il tema è particolare, attiva l'hook personalizzato e inserisci {hook h='displayMprCallback'} esattamente dove vuoi. Il modulo non si inserisce mai cercando selettori CSS.
Sì. Gli account vengono uniti solo all'interno di un unico dominio di isolamento cliente: lo stesso negozio, o lo stesso gruppo di negozi quando la condivisione dei clienti è attiva. Due negozi che non condividono i clienti detengono due persone distinte dal punto di vista del consenso e della legge, quindi quelle corrispondenze sono mostrate a titolo informativo e non possono essere unite.
L'e-mail per una nuova richiesta parte subito e non dipende dal cron. Il promemoria di ritardo e la pulizia dei dati sono attività pianificate.
Se l'hosting non ha un cron, girano in occasione delle normali richieste: funziona, ma in modo approssimativo, e un negozio senza traffico non le eseguirà. Per tempi affidabili punta il cron dell'hosting all'URL indicato nella schermata delle attività pianificate. Il modulo segnala nel back office quando non gira da un po'.
Ogni fusione, annullamento ed errore viene aggiunto a un registro di audit concatenato con hash: ogni voce porta l'hash di quella precedente, quindi una voce rimossa o modificata spezza la catena in modo visibile. Il registro annota cosa è successo, quando e quale dipendente lo ha fatto, insieme al conteggio delle righe per tabella. Non contiene dati dei clienti e si esporta in CSV.
No. Il pulsante LINE fluttuante viene aggiunto tramite gli hook di PrestaShop displayBeforeBodyClosingTag e displayHeader, quindi i file del tema e dei template non vengono mai modificati o sovrascritti. La disinstallazione rimuove il pulsante in modo pulito, senza lasciare tracce nel tema.
No. Non modifica i template né sovrascrive i file del tema. Agisce tramite gli hook presenter di PrestaShop, actionPresentProduct e actionPresentProductListing aggiungono i dati loading e decoding agli array di immagini che il tuo tema già genera, e tramite l'hook filterHtmlContent per i testi WYSIWYG. Il tema mantiene il pieno controllo del markup; il modulo fornisce solo gli attributi. Alla disinstallazione gli attributi smettono semplicemente di essere aggiunti e nel tema non resta nulla di modificato.
Il widget apre il tuo link di contatto LINE (https://line.me/ti/p/il-tuo-LINE-ID) in una nuova scheda, così il visitatore può avviare una conversazione nell'app LINE. Non allega alcun messaggio precompilato o salvato al link: passa semplicemente il cliente a LINE.
Sì. Il modulo non analizza né riscrive l'HTML finale generato di una pagina. Arricchisce i dati delle immagini a livello di presenter prima che il template venga eseguito e processa solo determinati campi di contenuto WYSIWYG. Poiché non tocca mai l'output della pagina, può funzionare in sicurezza insieme a cache a pagina intera, CCC e CDN, non c'è alcun buffer di output da invalidare, quindi le pagine in cache restano valide.
Sì. Per le immagini nel contenuto WYSIWYG, aggiungi al tag img la classe CSS di esclusione (predefinita no-autolazy) e il modulo la salta. È il modo consigliato per far caricare subito l'immagine principale above-the-fold, perché applicare il lazy loading all'immagine visibile più grande può peggiorare il Largest Contentful Paint. Anche le immagini data-URI inline e quelle che hanno già un attributo loading vengono saltate automaticamente.
Sì. Il targeting delle pagine consente di mostrare il pulsante su ogni pagina o di limitarlo ad alcune, e un interruttore mobile separato permette di nasconderlo sui telefoni. Un'opzione di ritardo di caricamento può inoltre trattenere il pulsante per un istante, così non compete con la pagina mentre si carica.
È un suggerimento per il browser che consente di decodificare un'immagine fuori dal thread principale, così la decodifica di un'immagine grande ha meno probabilità di bloccare lo scorrimento o l'interazione. Completa loading="lazy". Il modulo lo aggiunge per impostazione predefinita ma offre un singolo interruttore per disattivarlo, se preferisci, lasciando solo loading="lazy". Gli attributi decoding esistenti non vengono mai sovrascritti.
Le immagini di prodotto sulla pagina prodotto, le immagini di prodotto negli elenchi di categoria e ricerca e le immagini incorporate nel contenuto WYSIWYG come le descrizioni di prodotto, categoria, pagine CMS e produttore. Le prime due sono gestite dagli hook presenter di prodotto; l'ultima dall'hook del filtro dei contenuti. È un aiuto mirato alla velocità, non comprime, ridimensiona o converte le immagini, aggiunge solo gli attributi loading e decoding.
Il toggle header chiuso mostra sempre il simbolo o segno della valuta corrente, come $, €, £ oppure il codice ISO come fallback. Se Show ISO label in toggle è abilitato, il toggle mostra anche il codice ISO corrente accanto al simbolo. Il dropdown aperto elenca sempre ogni valuta con il suo simbolo/segno, e se Show currency names in dropdown è abilitato mostra anche il nome completo della valuta accanto a ogni simbolo.
Il toggle non renderizza un tooltip hover. I nomi valuta sono usati nelle righe del dropdown, incluso l'attributo title del link per ogni opzione valuta.
Sì. Il modulo registra il proprio selettore nell'hook displayNav2 e carica uno stylesheet che nasconde il selettore valuta desktop nativo di PrestaShop con #_desktop_ps_currencyselector { display: none !important; }. Il cliente vede il dropdown compatto a simbolo del modulo invece del blocco valuta predefinito.
Abilita il modulo, incolla il tuo ActiveCampaign Account ID, poi salva la configurazione. L'Account ID è il valore numerico che ActiveCampaign mostra in Settings > Tracking > Site Tracking; viene salvato come ACCOUNT_ID, e il modulo non renderizza lo script storefront finché non sono presenti sia ENABLED sia ACCOUNT_ID.
- In PrestaShop, apri la configurazione del modulo ActiveCampaign.
- Attiva Enable ActiveCampaign.
- Incolla l'Account ID numerico, per esempio
123456789. - Visita una pagina storefront e conferma che il sorgente pagina contenga lo script diffuser ActiveCampaign.
Quando è attivo, l'hook displayBeforeBodyClosingTag carica lo script diffuser di ActiveCampaign, esegue vgo('setAccount', ...), abilita default tracking e chiama vgo('process'). Per clienti loggati può anche passare l'email del cliente con vgo('setEmail', ...).
Lo script viene inserito appena prima del tag body di chiusura, non nell'head della pagina. Questo è utile quando controlli l'installazione: cerca nel sorgente renderizzato vicino al fondo diffuser-cdn.app-us1.com/diffuser/diffuser.js, vgo('setAccount' e il tuo account ID. Se mancano, il modulo è disabilitato, l'Account ID è vuoto o il tema non esegue l'hook displayBeforeBodyClosingTag.
La configurazione ha anche un campo opzionale EVENT_KEY, ma l'hook storefront attuale è solo site tracking. Non invia chiamate event-tracking custom ActiveCampaign da questo percorso codice modulo. Usalo per aggiungere lo snippet ufficiale site-tracking e identificare clienti loggati via email; costruisci automazioni eventi custom separatamente se ti serve event tracking ActiveCampaign più profondo.
Per privacy, ricorda che questo è uno script di tracking. Abbinalo alla configurazione consenso se lo store richiede consenso marketing o analytics prima di caricare tracking terzo, perché questo modulo non implementa da solo un cookie-consent gate.
Sì, i clienti PrestaShop loggati vengono identificati via email nello script tracking ActiveCampaign. Il modulo legge il cliente corrente dal contesto PrestaShop e invia l'email solo quando il cliente è loggato; i visitatori anonimi sono tracciati senza valore email.
Il controllo avviene nell'hook storefront di chiusura body. Il tracking viene renderizzato solo quando il modulo è abilitato ed è presente un ActiveCampaign Account ID. L'hook assegna poi tre valori template: account ID, email cliente e un booleano che indica se un'email è stata trovata.
Nel template, vgo('setEmail', ...) è avvolto in un controllo logged-in, quindi i guest non ricevono una chiamata email vuota. Ogni pagina tracciata imposta comunque account, abilita default page tracking e chiama vgo('process'). Questo significa che ActiveCampaign può collegare visite note delle pagine all'email del cliente loggato, mentre le visite guest restano anonime finché ActiveCampaign non può identificarle in altro modo.
Logged in customer -> setAccount + setTrackByDefault + setEmail + process
Guest visitor -> setAccount + setTrackByDefault + processL'impostazione richiesta è l'ActiveCampaign Account ID, più il modulo deve essere abilitato. Il codice controlla entrambi prima di renderizzare lo script storefront PrestaShop; il campo Event Key viene salvato in configurazione, ma l'attuale template tracking non lo usa.
All'installazione, ENABLED è 0 di default, ACCOUNT_ID è una stringa vuota e anche EVENT_KEY è una stringa vuota. L'avviso di configurazione richiesta dichiara solo ACCOUNT_ID come richiesto, e il controllo di attivazione è semplicemente enabled più account ID non vuoto.
L'opzione admin descrive l'Account ID come ID numerico da site tracking ActiveCampaign, ma questo sorgente non applica un validator numerico prima di renderizzare. Per un setup pulito, copia l'account ID esattamente dalle impostazioni site tracking di ActiveCampaign, abilita il modulo, poi controlla il sorgente pagina per lo script diffuser.js e vgo('setAccount', ...).
ENABLED = 1
ACCOUNT_ID = 123456789
EVENT_KEY = optional, stored but not rendered by tracking.tplI moduli PrestaShop hanno ciascuno bisogno di job pianificati (feed, pulizie, sync), ma collegare una riga cron server separata per ognuno e fragile. Un cron manager ti offre un unico endpoint protetto da token che li esegue tutti. Con Cron Manager, PrestaShop espone un URL come /module/mprcron/cron?token=… (piu un entry point cron.php per chiamate CLI o HTTP con opzioni max-task e context) che esegue a turno ogni task registrato. Punta un solo cron server - o un servizio esterno come cron-job.org - a quell'URL sull'intervallo scelto, e gestisci pianificazioni individuali, stato abilita/disabilita e storico esecuzioni dal back office invece di modificare crontab. Mantieni segreto il token cosi utenti esterni non possono attivarlo, e inizia con un intervallo di 5-15 minuti in base a quanto sono time-sensitive i tuoi task. Il logging centralizzato rende anche facile individuare un job fallito.
Il comando CLI generato e un comando crontab su una riga usando il token condiviso, per esempio * * * * * php /path/to/modules/mprcron/cron.php --token=TOKEN --max-seconds=300. L'entry point richiede un token, limita max_tasks tra 1 e 100, limita max_seconds tra 10 e 300 e usa come default 20 task e 300 secondi. Il token condiviso e generato come valore esadecimale di 64 caratteri e validato con hash_equals.
Internamente il package condiviso possiede due tabelle: mpr_cron_task per i task registrati e mpr_cron_log per lo storico esecuzioni. Ogni task salva modulo, task key, label, callable o payload, tipo executor, schedule, stato enabled, next run, context, priorita e timeout. Il runner rivendica un task prima di eseguirlo, registra stati completed, failed, skipped, timeout o crashed e scrive una riga log. In modalita CLI, quando il cron.php locale supporta task isolati e proc_open e disponibile, ogni task puo girare in un subprocess cosi un task fatale non ferma il resto del batch.
No, questo modulo non invia eventi ecommerce ActiveCampaign di prodotto, carrello, ordine o custom. Il suo codice PrestaShop carica solo site tracking, imposta account, identifica opzionalmente l'email di un cliente loggato e chiama la funzione di processing pagina ActiveCampaign.
L'impostazione salvata EVENT_KEY è descritta come opzionale per eventi custom, ma il template storefront non la riferisce mai. Non ci sono chiamate evento purchase, cart, product o checkout nel template tracking; le uniche chiamate ActiveCampaign sono setAccount, setTrackByDefault, setEmail opzionale e process.
Per i merchant, il risultato pratico è page-visit tracking invece di ecommerce tracking. Puoi usarlo per permettere ad ActiveCampaign di vedere page view tracciate e identificare clienti loggati via email, ma valore ordine, product ID, contenuto carrello e line item non vengono inviati da questo modulo. Se servono, richiedono un'altra integrazione o nuovo codice che si agganci davvero agli eventi prodotto, carrello e ordine.
Una buona sezione FAQ risponde alle domande degli acquirenti prima che scrivano email e cattura traffico long-tail dai motori di ricerca. Per aggiungerne una a PrestaShop, usa FAQ Manager: crea un hub FAQ pubblico con route categoria, tag, ricerca e domanda, mostra una scheda FAQ prodotto tramite displayProductExtraContent e può mostrare contenuto FAQ in contesto categoria come blocco left-column/sidebar tramite displayLeftColumn. Salvi domande, categorie, tag e assegnazioni prodotto o categoria, così la stessa risposta può apparire nell'hub e su ogni prodotto correlato. I clienti possono inviare le loro domande per moderazione, e risposte community approvate con voti helpful aggiungono contenuto fresco. Per SEO, dai a ogni domanda indicizzabile un title e una meta description unici, mantieni le risposte davvero utili invece di una riga sola, e usa FAQ schema solo dove è accurato e ancora utile per il tuo obiettivo di ricerca/visualizzazione.
Nella configurazione pratica, inizia dal menu admin FAQ: crea categorie FAQ, poi aggiungi domande con testo domanda multilingua, HTML risposta, friendly URL, meta title e meta description. Se il friendly URL resta vuoto, le categorie generano uno slug dal nome categoria e le domande generano uno slug dal testo domanda. Una domanda pubblica è visibile solo quando è attiva, la sua publish date è vuota o già passata, e il gruppo cliente corrente è autorizzato. Puoi anche impostare una Answer Reveal Date, che permette alla domanda di esistere prima che la risposta venga mostrata.
- Usa Categories per hub FAQ pubblici e per mappare categorie FAQ a categorie PrestaShop dove i blocchi contestuali di pagina categoria sono utili.
- Usa Questions per le vere voci FAQ; assegna prodotti direttamente quando una domanda deve apparire in una scheda FAQ prodotto.
- Usa Tags per migliorare ricerca FAQ, pagine tag e scoperta interna.
- Usa Pending Questions e Additional Replies per moderare gli invii dei visitatori prima che diventino pubblici.
Per le pagine prodotto, non fare affidamento su ampie mappature categoria quando ti serve una FAQ prodotto esatta. La scheda prodotto carica domande dalla tabella di assegnazione diretta product-question e non restituisce nulla se nessuna domanda è assegnata a quel prodotto. Le domande assegnate esattamente a un solo prodotto possono renderizzare una risposta nell'HTML iniziale della pagina prodotto; le domande condivise tra più prodotti sono trattate come correlate/condivise e le loro risposte vengono caricate lazy quando aperte. Questo evita di iniettare grandi articoli di troubleshooting in ogni pagina prodotto e aiuta a evitare contenuto duplicato rumoroso.
Le pagine categoria non vengono renderizzate come scheda da questo modulo. L'integrazione categoria è un blocco left-column/sidebar che carica un set limitato di domande per la categoria corrente e le collega all'esperienza FAQ.
I controlli SEO sono volutamente granulari. L'indicizzazione dell'hub FAQ è on di default, ma pagine categoria, pagine tag e pagine domanda individuali non sono indicizzate salvo abilitazione dello switch globale relativo e, per categorie o domande, marcatura indexable dell'entità stessa. Le pagine ricerca sono sempre noindex. I campi meta title e meta description ripiegano sul titolo visibile, descrizione categoria o excerpt risposta quando lasciati vuoti, e gli URL canonical sono costruiti dallo slug FAQ localizzato, slug categoria e slug domanda.
Schema è uno switch, non magia automatica. L'impostazione è SCHEMA_ENABLED e ha default 0; l'hint admin dice che Google ha deprecato i rich result FAQ a maggio 2026, quindi trattalo come dati strutturati opzionali invece che come trigger garantito di rich result. La gestione delle risposte pianificate non è coerente in ogni percorso schema nel codice attuale: i builder JSON-LD front question e category controllano answer_visible, ma l'output QAPage header a livello modulo legge direttamente questionData['answer'], e il percorso query/build schema dell'hub FAQ non controlla date_response o answer_visible. Se usi risposte ritardate, mantieni schema disabilitato o correggi quei percorsi prima di fare affidamento sullo schema per nascondere contenuti risposta futuri.
Il flusso invio visitatore è moderato. Ask a Question è abilitato di default, valida nome, email e testo domanda, limita il testo domanda a 5000 caratteri, usa un campo honeypot e salva l'elemento in mprfaq_pending con stato pending. Il rate limit predefinito è ASK_MAX_PENDING=2 domande pending per email per categoria prodotto top-level; impostalo a 0 solo se vuoi deliberatamente nessun limite alle domande pending. Se il visitatore domanda da una pagina prodotto e non viene fornita alcuna categoria FAQ, il controller risolve una categoria dal contesto prodotto.
Le risposte pubbliche sono separate dalla risposta ufficiale. CA_ENABLED ha default 0; quando abilitato, il modulo può richiedere login, valida i dettagli autore, limita il testo risposta a 5000 caratteri e salva la risposta come pending. Le risposte aggiuntive approvate possono apparire come community answers e possono essere votate. I voti helpful sono limitati a un voto per IP per domanda o risposta, con un cookie PrestaShop usato solo per ricordare lo stato UI del visitatore.
FAQ_SLUG=faq
FAQ_HUB_INDEXABLE=1
FAQ_CATEGORY_INDEXABLE=0
FAQ_TAG_INDEXABLE=0
QUESTION_INDEXABLE=0
SCHEMA_ENABLED=0
ASK_ENABLED=1
ASK_MAX_PENDING=2
CA_ENABLED=0Per una FAQ SEO, la regola pratica è mantenere ampio l'hub, rendere indicizzabili solo pagine categoria o domanda solide e autonome, assegnare le domande prodotto direttamente e lasciare le piccole risposte specifiche per prodotto nella scheda prodotto. Questo offre risposte ai clienti dove servono, mantenendo l'indice focalizzato su pagine che possono stare in piedi da sole.
Il modulo gestisce record catalogo digitali per moduli, temi e addon. In PrestaShop ogni prodotto digitale può salvare nome tecnico, branch, versione corrente, campi compatibilità, URL documentazione, demo e repository, changelog, mesi di supporto e limiti dominio.
Sì, MPR FAQ può raccogliere domande dei clienti per revisione. In PrestaShop i record pending salvano nome, email, domanda, prodotto o categoria FAQ, stato, eventuale risposta admin e timestamp prima della pubblicazione.
Usa l'area di pulizia per rimuovere i vecchi record supportati da PrestaShop. Il modulo conta ed elimina carrelli abbandonati oltre 30 giorni senza ordini, statistiche ricerca, prezzi specifici scaduti, log, connessioni, ospiti orfani e record mail.
Se ti serve solo un avviso cookie chiaro accetta-o-rifiuta, un banner leggero è l'implementazione più semplice. Lightweight Cookie Banner renderizza il banner dagli hook a livello footer, salva la scelta del visitatore in un cookie consenso e ti permette di configurare testo banner, pulsanti, colori, posizione, link privacy policy e durata del consenso prima di chiederlo di nuovo (365 giorni di default). È intenzionalmente minimale - niente script pesanti - quindi non rallenta il negozio. Usalo quando il tuo footprint di tracciamento è piccolo e hai principalmente bisogno di informare i visitatori e registrare la loro scelta. Se devi anche bloccare script fino al consenso, registrare log consenso o offrire preferenze granulari per categoria, una piattaforma consenso completa è più adatta. Abbina sempre il banner a una cookie policy e privacy policy accurate e aggiornate.
Il modulo ha come default abilitato, posizione bottom-left, pulsanti affiancati, tema scuro, COOKIE_EXPIRY di 365 giorni, Google Consent Mode abilitato e DEFAULT_CONSENT impostato a denied. Può renderizzare come barra full-width in alto o basso, banner angolare, banner flottante in basso o modale centrale con overlay. La scelta del visitatore viene salvata nel cookie first-party mprcookie_consent con valore granted o denied; JavaScript lo scrive con path=/, SameSite=Lax e Secure quando il negozio è su HTTPS.
Quando Google Consent Mode è abilitato, l'hook header inietta il segnale di consenso predefinito e carica asset/config sicuri per l'head; non renderizza il markup visibile del banner. Il markup banner viene renderizzato da displayFooterAfter o displayFooter, con guard per emetterlo una sola volta, e lo script front invia un aggiornamento consenso dopo che il visitatore accetta o rifiuta. Il modulo non categorizza cookie, non riscrive script di terze parti e non mantiene una tabella log consenso. Inoltre avvisa quando Cookies Revolution è disponibile perché solo un modulo consenso cookie dovrebbe controllare lo storefront alla volta.
Il Meta (Facebook) Pixel traccia le azioni degli acquirenti così puoi misurare le performance ads e costruire audience di retargeting. PrestaShop non ha un Pixel nativo, quindi lo aggiungi con un modulo di tracciamento. Con Facebook Pixel, inserisci il tuo Pixel ID e abilita il tracciamento browser; il modulo emette poi gli eventi ecommerce standard - PageView, ViewContent, AddToCart, InitiateCheckout, Search, AddToWishlist, CompleteRegistration e Purchase - con switch individuali così puoi attivare o disattivare eventi specifici. Per conversioni accurate nonostante perdite da browser e ad-blocker, abilita anche la Conversions API lato server, che invia eventi Purchase a Meta con un event ID corrispondente così hit browser e server vengono deduplicate. Verifica tutto nello strumento test Events Manager di Meta prima di lanciare campagne, e assicurati che l'attivazione del Pixel rispetti il tuo banner consenso cookie, così il tracciamento gira solo dopo il consenso marketing.
Il modulo si installa con ENABLED off e PIXEL_ID vuoto, quindi nessun tracciamento browser parte finché non lo configuri. I Pixel ID sono validati come solo cifre. La maggior parte degli switch evento standard ha default on una volta abilitato il modulo stesso, mentre CAPI_ENABLED ha default off e richiede Pixel ID più CAPI_ACCESS_TOKEN. La versione Graph API predefinita nel modulo è v25.0, e durante la validazione in Meta Events Manager può essere inviato un test event code opzionale.
Il consenso viene controllato prima di renderizzare il template di tracciamento. Se Cookies Revolution è attivo, il modulo legge il valore marketing da mprcr_consent; se Lightweight Cookie Banner è attivo, legge mprcookie_consent; se nessuno è attivo e il rispetto del consenso è abilitato, il modulo tratta il consenso marketing come disponibile. Anche la navigazione dipendenti può essere esclusa. AddToCart viene tracciato tramite l'evento PrestaShop updateCart quando disponibile, con fallback click per temi più vecchi. Purchase viene emesso su conferma ordine con un order event id deterministico, e quando CAPI è configurata lo stesso acquisto viene accodato ed elaborato tramite la coda conversioni condivisa, incluso un task cron pianificato ogni 300 secondi per retry/processing.
Gli acquirenti convertono meglio quando possono vedere quando arriverà un ordine. Per mostrare una data di consegna stimata in PrestaShop, usa Estimated Delivery Date: aggiunge i giorni di preparazione configurati alla data corrente e mostra il risultato nella pagina prodotto tramite il blocco displayProductAdditionalInfo. Puoi impostare un orario limite giornaliero (gli ordini inseriti dopo contano dal giorno successivo), escludere i weekend così sabato e domenica non vengono conteggiati e un risultato finale nel weekend slitta a lunedì, e scegliere il formato data visto dagli acquirenti. Il messaggio appare automaticamente sulle pagine prodotto idonee, dando un'aspettativa concreta di arrivo entro una data invece di un vago "spedito presto". Mantieni onesti i tempi di preparazione e allinea il cutoff al tuo reale programma di spedizione, così la data promessa corrisponde a ciò che i clienti ricevono: stime accurate riducono i ticket "dov'è il mio ordine".
I default di installazione sono ENABLED=1, PROCESSING_DAYS=1, CUTOFF_HOUR=14, EXCLUDE_WEEKENDS=1 e DATE_FORMAT=l, F j. Il calcolo usa il DateTime corrente del server, legge l'ora corrente come valore intero a 24 ore e aggiunge un giorno di preparazione extra quando l'ora corrente è maggiore o uguale al cutoff. Poi avanza un giorno alla volta finché il numero configurato di giorni di preparazione non è stato conteggiato, saltando sabato e domenica quando l'esclusione weekend è abilitata.
Il messaggio storefront riceve anche hours_left, che è semplicemente la differenza in ore intere fino al cutoff quando l'ordine è ancora prima del cutoff. Questo modulo non ispeziona range di consegna del corriere, stato stock, calendari magazzino, festività, CAP destinazione o lead time specifici per prodotto. È una promessa semplice sulla pagina prodotto basata su regole di preparazione a livello negozio, quindi funziona meglio quando il tuo catalogo condivide lo stesso pattern di spedizione.
Nel tempo un database PrestaShop si riempie di dati che non ti servono piu: carrelli abbandonati, righe carrello orfane, prezzi specifici e regole carrello scaduti, vecchi record connection e guest, statistiche ricerca, log mail e 404, visualizzazioni pagina e thread cliente chiusi. Se non controllate, queste tabelle rallentano le query e gonfiano i backup. Per pulirle in sicurezza, usa Cleanup Revolution: raggruppa ogni pulizia in task nominati, conta le righe interessate prima dell'eliminazione, supporta anteprime dry-run di default e registra le esecuzioni reali nello storico cleanup. Inizia con carrelli abbandonati piu vecchi di 30 giorni e statistiche ricerca/connection obsolete, controlla i conteggi in anteprima, poi elimina in batch. Fai sempre prima un backup del database. Per manutenzione continua, pianifica i task invece di eseguirli a mano; vedi la nostra guida performance PrestaShop.

Before any real cleanup, make a fresh database backup and run the module preview first. Do not delete rows manually with SQL; use Cleanup Revolution's dry-run counts, review the affected tasks, then run the cleanup from the module in controlled batches.
mysqldump -u db_user -p db_name > prestashop-before-cleanup.sqlLa configurazione predefinita e volutamente conservativa: dry run e abilitato di default, trash mode e abilitato, i carrelli abbandonati hanno default 30 giorni, molti log/statistiche 90 giorni, thread cliente chiusi 180 giorni, account vuoti 365 giorni, e il motore usa dimensioni batch per task piu un limite totale di 50000. Un task senza righe da rimuovere viene saltato dal runner bulk, e l'eliminazione reale avviene in batch invece che come una singola istruzione enorme.
Un dettaglio dell'audit-log conta: le esecuzioni dry-run restituiscono il conteggio interessato prima che venga chiamato MPRCleanupLog::record(), quindi le anteprime dry-run non vengono scritte nello storico cleanup. Le pulizie database reali vengono loggate con dry_run = 0. Le azioni manuali nel Back Office chiamano DatabaseCleanupEngine::executeTask(..., $employeeID) oppure DatabaseCleanupEngine::executeAll($dryRun, $employeeID), quindi usano il valore predefinito trigger_type = manual e registrano l’ID del dipendente quando disponibile. La pulizia programmata del database chiama MPRCleanupRevolution::cronDBCleanup(), che passa DatabaseCleanupEngine::executeAll(false, null, 'cron'); di conseguenza, quelle righe di log registrano trigger_type = cron senza ID dipendente.
Il motore cleanup database include task nominati per carrelli abbandonati, prodotti carrello orfani, statistiche ricerca, prezzi specifici scaduti, regole carrello scadute con quantita zero, vecchi log, vecchie connessioni, righe connection orfane, vecchi guest, log mail, log 404, visualizzazioni pagina, thread cliente chiusi e cache referrer. Ha anche pulizie commerciali a rischio piu alto come account ospite senza ordini, indirizzi orfani e vecchi account registrati senza ordini o carrelli recenti. I default cron dividono il lavoro in finestre di database cleanup, file cleanup e ottimizzazione tabelle, cosi puoi automatizzare la manutenzione senza eseguire ogni operazione pesante insieme.
Il rendering nello storefront è gestito dall'hook displayMprSubtitle. Il resolver può rilevare la pagina prodotto, categoria, CMS, produttore o fornitore corrente, e i template possono anche passare un ID prodotto esplicito quando serve.
Per piena conformità GDPR ed ePrivacy serve più di un banner: gli acquirenti devono poter accettare o rifiutare i cookie per finalità. Cookies Revolution aggiunge consenso granulare a PrestaShop con le categorie standard - necessary, functional, analytics e marketing - e un pannello preferenze dove i visitatori possono accettare tutto, rifiutare le categorie opzionali o salvare una selezione personalizzata; la loro scelta viene salvata in un cookie consenso. Può anche bloccare script di tracciamento corrispondenti finché non viene dato il consenso, riscrivendo i tag affinché girino solo per categorie consentite, e registrare log consenso con identificatori hashati per il tuo audit trail. Il consenso preventivo (niente caselle opzionali preselezionate) e il ritiro del consenso con la stessa facilità con cui è stato dato sono requisiti legali: questo copre entrambi. Combinalo con Google Consent Mode v2 così i tuoi tag Google si adattano automaticamente alla scelta di ogni acquirente.
All'installazione il modulo crea tabelle per categorie, cookie, script-rule, consent-log, scan-result e design. Le categorie seed sono necessary, functional, analytics e marketing; necessary è richiesta e abilitata di default, mentre le categorie opzionali sono off di default salvo modifica della modalità consenso predefinito. Lo stato browser salvato è compatto, per esempio necessary:1|functional:0|analytics:0|marketing:0 in mprcr_consent, con un cookie separato mprcr_version usato quando RECONSENT_ON_CHANGE è abilitato.
Il blocco script funziona su due livelli. Sull'output server il modulo riscrive script esterni corrispondenti a type="text/plain" con data-cookiecategory e salva la source originale in data-original-src; può anche riscrivere script inline corrispondenti in base a regole sul contenuto script. Lato browser, un MutationObserver controlla gli script iniettati dinamicamente contro la stessa lista regole e li blocca se la categoria corrispondente non è concessa. Quando il consenso viene salvato, il modulo aggiorna Google Consent Mode, attiva gli script consentiti, elimina cookie per categorie revocate dove configurato, emette mprcr:consent e registra la decisione tramite AJAX quando il logging è abilitato, con un breve throttle per evitare log duplicati.
Sì, puoi bloccare per IP, intervallo CIDR, codice paese o pattern user-agent, incluso scope solo checkout. Il ban manager PrestaShop controlla prima le whitelist, poi le regole ban attive, e applica scope full, checkout o authentication in base al contesto della richiesta corrente.
Il form ban supporta IP singolo, wildcard IP come 192.168.1.*, range IP come 1.1.1.1-1.1.1.255, CIDR come 192.168.1.0/24, codice ISO paese e pattern user-agent. Le regole user-agent possono essere testo semplice abbinato case-insensitively, oppure una regex racchiusa tra slash.
Lo scope è basato sul controller corrente. Checkout scope si applica a order, orderopc, cart, supercheckout, onepagecheckout e checkout. Login/auth scope si applica a authentication, my-account, identity, registration e password. I full ban sono controllati prima dei ban scope-specific, quindi un full ban blocca il visitatore ovunque.
- Enablement:
BAN_ENABLEDviene installato come abilitato di default. - Temporary bans: un ban può avere
date_expiry; i ban attivi scaduti vengono disattivati durante il caricamento active-ban. - Message: ogni ban può avere il proprio messaggio, altrimenti il modulo ripiega sul messaggio predefinito multilingua configurato.
- Multishop: record ban con
id_shop=0si applicano globalmente, mentre ban shop-specific si applicano solo nel contesto shop corrente.
Checkout-only CIDR example:
ip_cidr = 203.0.113.0/24
ban_type = checkout
reason = Repeated fraudulent checkout attemptsSì, può creare o sincronizzare un job cron-job.org quando configurato. La configurazione admin PrestaShop può testare la chiave API cron-job.org, verificare la raggiungibilità esterna e puntare il job remoto all'URL cron tokenizzato di stato o esecuzione del modulo.
Flash sale, promozioni stagionali e offerte a tempo limitato funzionano meglio quando iniziano e finiscono automaticamente. Per pianificare sconti basati sul tempo in PrestaShop, usa Smart Dynamic & Scheduled Discounts: crea campagne con date di inizio e fine, e l'hook prezzo controlla finestra attiva, ambito prodotto, accesso per gruppo cliente e limiti d'uso, poi applica il miglior sconto idoneo al prezzo prodotto senza lavoro manuale. Poiché lo sconto è calcolato al momento della visualizzazione e del checkout, i prezzi tornano automaticamente quando la finestra si chiude: non devi ricordarti di annullare una promozione. Usa lo scope per gruppo cliente per offerte riservate ai membri, e affidati alla logica best-price per mantenere prevedibili le campagne sovrapposte. Mostra sempre il prezzo originale accanto all'offerta così il risparmio è visibile, e controlla che i prezzi pianificati rispettino eventuali regole di margine minimo che hai.
Il model campagna supporta tipi campagna come scheduled, recurring, flash sale, countdown, early bird e last chance, con tipi sconto percent, amount e fixed_price. Lo scope prodotto può essere assegnazione diretta prodotto/combinazione, categorie con sottocategorie opzionali, produttori, gruppi cliente o nessuno scope, nel qual caso una campagna attiva può applicarsi a tutti i prodotti. Gli sconti custom per prodotto possono sovrascrivere lo sconto campagna quando la riga prodotto non eredita il default.
Le campagne ricorrenti aggiungono righe schedule con finestre daily, weekly, monthly o custom, ore di inizio/fine e timezone. L'uso e tracciato per ordine/prodotto/cliente in mprdsd_campaign_usage, e il modulo controlla limiti d'uso totali, limiti per cliente e limiti quantità per prodotto prima di applicare uno sconto. L'hook prezzo usa deliberatamente il prezzo corrente passato da PrestaShop invece di chiamare Product::getPrice(), perché questo ricadrebbe ricorsivamente nell'hook prezzo. Poi sottrae il maggiore importo sconto idoneo dal prezzo calcolato corrente e non scrive mai righe native specific-price, motivo per cui lo sconto scompare automaticamente quando nessuna campagna è attiva.
Dipende da quale download intende:
- Un modulo con licenza, sì. I download con licenza sono legati al suo negozio, quindi il controller di download verifica la proprietà della licenza, la sua validità, il limite di download residui e che il negozio selezionato sia assegnato alla licenza, prima di emettere un URL di download tokenizzato. È quel vincolo a mantenere una licenza a pagamento legata al suo negozio.
- La demo gratuita di 30 giorni, no. Fornire email e dominio di installazione al momento del download è facoltativo. L'unica cosa che le garantisce è la comodità in seguito: se acquista con quella stessa email, il suo negozio può offrirle l'attivazione con un clic. Se lo salta, incollerà semplicemente una chiave di licenza.
Per l'intero percorso, dalla prova all'attivazione fino all'assistenza, veda Come funzionano licenze, attivazione e assistenza.
Sì, il modulo fornisce un workspace back office per i task pianificati. Può elencare task dei moduli che usano CronTrait condiviso, eseguire test, abilitare o disabilitare task, modificare schedule, eliminare task custom, consultare log e applicare cambi frequenza massivi.
Sì, può bloccare gli script corrispondenti finché il consenso non viene dato. Con il blocco script attivo, l'hook di output riscrive i tag come type text/plain con metadati categoria, e il JavaScript front ripristina solo gli script della categoria autorizzata.
Sì, la modalità dry-run mostra i risultati prima dell'eliminazione. Il modulo la abilita per impostazione predefinita, usa batch specifici per attività e limiti di sicurezza configurabili, e registra cronologia, trigger, righe interessate, stato dry-run e dipendente.
PrestaShop non ha un blog integrato, quindi per pubblicare articoli, guide e contenuti SEO aggiungi un modulo blog. Blog Revolution crea un blog completo dentro il tuo negozio: registra route dedicate per indice blog, singoli post, categorie, tag, autori, archivi mensili, ricerca e feed RSS, e aggiunge blocchi per homepage, colonne laterali, footer, pagine prodotto e listing in stile categoria, così i post più recenti emergono in tutto il negozio. Poiché il blog condivide tema, design e configurazione lingue, gli articoli ereditano automaticamente branding e URL multilingua. Un blog è uno degli investimenti SEO più efficaci per PrestaShop: intercetta query informative che pagine prodotto e categoria non possono coprire, costruisce link interni verso quelle pagine e guadagna backlink. Pianifica prima una struttura categorie, poi pubblica con costanza e collega ogni post ai prodotti pertinenti.
Nel codice, non è solo un wrapper di pagine CMS. Il modulo crea tabelle proprie per post, traduzioni post, categorie, tag, autori, commenti, link post-prodotto, tracking visualizzazioni/like, immagini, restrizioni gruppo e redirect slug. I post hanno campi SEO come meta title, meta description, meta keywords e canonical URL per lingua, e il modulo può emettere dati Open Graph, autodiscovery RSS, link hreflang e link paginazione previous/next dall'hook header.
Il prefisso URL predefinito è blog, quindi il set di route generato include percorsi come /blog, /blog/tag/{rewrite}, /blog/author/{slug}, /blog/archive/{year}/{month}, /blog/search e /blog/rss. I default assumono anche 12 post per pagina, griglia a tre colonne, commenti, rating, excerpt, metadati autore/data/visualizzazioni/commenti, social sharing, schema, hreflang, Open Graph e RSS abilitati. Questo ti offre una superficie di pubblicazione completa, ma dovresti comunque definire regole editoriali: quali post linkano ai prodotti, quali categorie mappano termini commerciali e quali vecchi URL dovrebbero reindirizzare invece di generare 404.
I tag canonical dicono a Google quale versione di una pagina è l'originale, prevenendo problemi di contenuto duplicato da filtri, paginazione e prodotti quasi identici. PrestaShop imposta automaticamente i canonical ma non ti offre un modo per sovrascriverli per pagina. Per impostare un canonical personalizzato per un prodotto, categoria, pagina CMS, produttore o fornitore specifico, usa Product Canonical Manager: crea una regola per l'entità target, inserisci l'URL a cui vuoi attribuire credito ai motori di ricerca e salva un valore diverso per lingua negozio quando necessario. Usalo quando più prodotti sono varianti di un master, quando una pagina CMS riprende un articolo blog o quando un URL campagna dovrebbe consolidarsi nella pagina prodotto pulita. Per capire come canonical, URL, schema e sitemap si integrano, vedi la nostra guida SEO PrestaShop.
Il modulo salva le regole in una tabella dedicata mprcanonical_rule e supporta i tipi entità product, category, cms, manufacturer e supplier. Ogni regola ha un'azione: override sostituisce un canonical esistente con l'URL entità, add_missing ne inserisce uno solo quando la pagina non ha già un canonical, e custom usa l'URL custom multilingua salvato sulla regola. Le regole possono anche impostare noindex e nofollow.
Per le regole prodotto, il resolver può corrispondere a un prodotto specifico, tutti i prodotti, prodotti per categoria, produttore o fornitore, e supporta esclusioni selector. Quando più regole corrispondono, la query ordina per priority DESC, quindi la regola con priorità più alta vince per il canonical URL, mentre i flag noindex/nofollow possono accumularsi. L'hook output modifica l'head HTML finito, quindi può sostituire tag canonical esistenti, aggiungere direttive robots, aggiungere link hreflang quando abilitato e normalizzare URL generati con rimozione parametri configurata, conversione in minuscolo e gestione slash finale opzionale.
Sì, può saltare sabati e domeniche quando l’esclusione dei weekend è attiva. Il calcolo PrestaShop non conta i giorni del fine settimana durante l’aggiunta del tempo di preparazione e sposta al lunedì un risultato finale che cade nel weekend.
Sì, l'area admin mostra i conteggi prima di eseguire la pulizia. In PrestaShop ogni task include una query di conteggio e il template mostra totale e singoli conteggi, così puoi eseguire una sola attività o tutte.
Sì. Le regole dei sottotitoli prodotto possono includere tutti i prodotti, prodotti specifici, prodotti in categorie, prodotti per produttore e prodotti per fornitore. Le regole di esclusione possono anche rimuovere prodotti specifici o corrispondenze di categoria da una regola più ampia.
Sì, gli IP in whitelist vengono controllati prima dei ban e non vengono mai bloccati dal matcher ban. Il modulo PrestaShop supporta entry whitelist per IP esatto o intervallo CIDR, con filtering shop-aware così i record whitelist shop-specific si applicano solo nel contesto shop pertinente.
La whitelist è basata su IP, non su paese o user-agent. Nel form admin, inserisci o un campo indirizzo IP o un intervallo CIDR, non entrambi. Il campo indirizzo IP è documentato per un singolo IP o wildcard come 192.168.1.*; il campo CIDR si aspetta notazione come 192.168.1.0/24.
Quando una richiesta viene controllata, isBanned() chiama prima isWhitelisted(). Se l'IP visitatore corrisponde a una riga whitelist, la funzione restituisce subito false e non viene applicato alcun ban paese, user-agent, IP esatto o CIDR. È utile per IP di ufficio, sviluppatori, provider pagamento o monitoraggio che non devono essere bloccati da regole ampie per paese o range.
- Storage: le righe whitelist salvano indirizzo IP, CIDR, label, employee ID, shop ID e creation date.
- Shop handling: quando multishop è attivo, la query whitelist carica righe per lo shop corrente e righe globali
id_shop=0. - Gotcha: una whitelist aiuta solo quando il modulo rileva lo stesso IP reale visitatore che hai salvato. Se un proxy o CDN cambia l'IP visto da PrestaShop, metti in whitelist l'indirizzo che PrestaShop riceve davvero.
Sì, supporta eventi Purchase lato server tramite Meta Conversions API. In PrestaShop il modulo mette in coda le conversioni d’acquisto, le invia alla versione Graph API configurata e usa event ID coerenti tra browser e server.
Sì, supporta risposte aggiuntive approvate e voti di utilità. In PrestaShop i record risposta salvano tipo autore, riferimenti cliente o dipendente, stato, conteggi voto e contenuto, mentre i voti su domande e risposte sono tracciati separatamente per entità e IP.
Sì, supporta Google Consent Mode v2 quando è attivato. Il modulo scrive un comando di consenso predefinito prima dei tag e aggiorna ad_storage, ad_user_data, ad_personalization e analytics_storage dopo che il cliente accetta o rifiuta i cookie in PrestaShop.
Il modulo rimane installato, ma hookDisplayHeader() non restituisce nulla perché isActive() richiede il Brand ID. L'avviso di configurazione obbligatoria informa inoltre lo staff che il tracciamento resta inattivo finché il Brand ID non viene aggiunto.
Sì, i task cron personalizzati possono essere aggiunti dal controller task. Il form admin PrestaShop valida modulo proprietario, schedule, contesto e tipo executor, e supporta task URL, callable e command, con i command limitati al contesto cron o a test admin espliciti.
Il generatore controlla il registro dei riferimenti del modulo, la tabella nativa orders e i riferimenti in order_payment. Prova fino a 10 candidati prima di registrare un errore e rinunciare.
Il resolver ordina le corrispondenze attive per priorità. In modalità singola restituisce il sottotitolo con priorità più alta; in modalità tutti restituisce l'elenco ordinato, così il template può mostrare più di un sottotitolo.
Sì, le scelte di consenso possono essere registrate quando il logging è attivo. Il controller AJAX PrestaShop salva mappa del consenso, sorgente e versione, mentre il modello log esegue hash di visitatore, IP e user agent invece di salvarli in chiaro.
Puoi aggiungere Criteo OneTag a PrestaShop configurando un Criteo Partner ID numerico e attivando il tracking browser. Il modulo costruisce poi eventi OneTag nell'header per le pagine e-commerce supportate e resta inattivo se il Partner ID manca o non è valido.
Puoi raccogliere IP visitatore e informazioni dispositivo con questo modulo PrestaShop quando la raccolta è attiva. Salva ID cliente o ospite, ID negozio, indirizzo IP, dati paese, dettagli dispositivo analizzati e campi opzionali user agent, sistema operativo, browser e risoluzione schermo.
Sì, il modulo contiene un percorso ban authentication automatico per login PrestaShop falliti, ma gira solo quando il recorder failed-login del modulo viene invocato dall'integrazione authentication. Ogni failure registrato salva IP visitatore, email tentata, user agent, shop ID e timestamp in mprceiipban_failed_logins.
Le due impostazioni che controllano il ban sono MPRCEIIPBAN_AUTOBAN_THRESHOLD e MPRCEIIPBAN_AUTOBAN_WINDOW. I default install sono threshold 0 e window 60 minuti, quindi auto-ban è disattivato finché non viene configurata una soglia positiva. Quando il numero di failure dallo stesso IP dentro la finestra configurata raggiunge la soglia, il modulo aggiunge un ban auth con reason Auto-banned: X failed login attempts in Y min e scadenza un'ora nel futuro.
Un ban auth è più stretto di un ban full site: punta alle pagine legate all'autenticazione, mentre i full ban esistenti hanno comunque precedenza. Poiché questo sorgente contiene recorder e logica ban ma non un file override authentication concreto, verifica che la build installata includa l'integrazione authentication prima di affidarti a essa come unica protezione login.
Il contatore soglia è basato su IP. L'email fallita viene salvata per review, ma countRecentFailedLogins() conta solo righe con lo stesso ip_address più recenti della finestra configurata; non conta separatamente per indirizzo email tentato. Il controllo auto-ban salta anche la creazione di un nuovo ban auth temporaneo se l'IP è già sotto un full ban.
- Per abilitarlo: imposta
AUTOBAN_THRESHOLDa un numero positivo come5e lascia o modificaAUTOBAN_WINDOWin minuti. - Cosa viene creato: una riga attiva in
mprceiipban_bannedconban_type=auth, IP visitatore edate_expirydi un'ora. - Cleanup: le righe failed login sono coperte dal percorso purge del modulo, che usa i giorni di retention log configurati.
AUTOBAN_THRESHOLD = 5
AUTOBAN_WINDOW = 60
Result after 5 failures from one IP in 60 minutes: temporary auth ban for 1 hourPrestaShop include una sola pagina contatto fissa, che non basta quando ti servono richieste preventivo, richieste B2B, intake supporto o iscrizioni eventi. Per costruire i tuoi form, usa Better Contact Form: salva form e campi in tabelle dedicate e li renderizza tramite un controller modulo o hook, con gestione funzionante dei valori inviati per campi text, email, phone, textarea, select, checkbox, URL e number. Puoi creare più form per scopi diversi, posizionarli su qualsiasi pagina e raccogliere invii strutturati invece di email a testo libero. Mantieni ogni form breve, marca chiaramente i campi obbligatori e aggiungi protezione anti-spam. Per GDPR, includi una checkbox di consenso e un link alla privacy policy così i dati della richiesta vengono raccolti legittimamente.
Il template ha anche un ramo input file, ma l'attuale processor submission legge i valori campo tramite Tools::getValue() e non gestisce $_FILES. Questo significa che i campi file possono essere renderizzati, ma i file caricati non vengono persistiti come valori campo inviati nell'implementazione attuale. Non fare affidamento sulla raccolta upload file salvo aggiunta della gestione file.
Form, campi, invii e singoli valori submission sono salvati in tabelle separate, quindi una richiesta mantiene sia una riga riepilogo sia dati campo strutturati. Il renderer può scegliere un form specifico o il form predefinito attivo, non restituisce nulla quando un form è inattivo o non ha campi e precompila nome/email del cliente loggato quando disponibili.
L'elaborazione submission controlla che il pulsante submit sia stato postato, esegue controlli su campi obbligatori, validazione tipo, validazione opzioni select, metodi di validazione PrestaShop opzionali, enforcement checkbox GDPR, rilevamento spam e persistenza database. Il valore nascosto _mpr_ft non è un token CSRF; è un timestamp base64 usato dal controllo anti-spam timing. Honeypot e time-check anti-spam sono abilitati di default, con tempo minimo di invio predefinito di 3 secondi. Gli invii spam sono comunque salvati con is_spam e spam_reason, ma le email admin/cliente vengono inviate solo per invii non spam. Questo offre una traccia audit senza lasciare che traffico bot evidente attivi notifiche.
Le recensioni fotografiche permettono agli acquirenti di allegare immagini reali dei prodotti alle loro valutazioni, aumentando la fiducia e aggiungendo contenuto unico e ricco di keyword alle pagine prodotto. PrestaShop non ha una funzione integrata di recensioni con immagini, quindi la aggiungi con un modulo recensioni. Con Product and Store Reviews, abilita gli upload immagini nelle impostazioni recensioni: il form accetta poi file JPEG, PNG e WebP, applica dimensione file massima e numero massimo immagini, ridimensiona automaticamente gli upload grandi, genera miniature e collega le immagini al record recensione salvato. Le recensioni fotografiche approvate vengono mostrate accanto al prodotto e alimentano i rich result star-rating. Imposta un limite sensato - per esempio 3-5 immagini per recensione - e mantieni la moderazione attiva così solo foto autentiche e pertinenti vanno online. Le foto dei clienti riducono anche i resi impostando aspettative accurate prima dell'acquisto.

Nella fonte locale questa funzione vive nel modulo mprcomments. Gli upload immagini sono abilitati da ALLOW_IMAGES, con default di 3 immagini per recensione e 2 MB per immagine. Il template recensione prodotto usa un input file multiplo chiamato review_images[] e accetta image/jpeg, image/png e image/webp. L'uploader valida MIME type, dimensione file e dimensioni immagine, poi ridimensiona le immagini grandi a un massimo di 1200 per 1200 pixel e crea miniature 150 per 150.
La recensione viene salvata prima con stato pending o approved in base alle impostazioni di moderazione, poi gli upload immagini vengono processati subito contro quell'ID recensione salvato. L'approvazione controlla la visibilità pubblica, non l'allegato immagine. La normale validazione recensione si applica comunque prima: il contenuto recensione deve rispettare la lunghezza minima, il rating deve essere tra 1 e 5, gli ospiti sono bloccati salvo autorizzazione, le recensioni cliente duplicate vengono controllate e la moderazione può lasciare la recensione pending invece che immediatamente pubblica. I dati strutturati sono intenzionalmente basati su recensioni prodotto native; le recensioni aziendali importate sono escluse dallo schema prodotto, e il renderer schema limita le review item incorporate pur emettendo aggregate rating quando esistono recensioni native.
I clienti possono inviare gallerie di progetto dal flusso front-office del modulo. In PrestaShop lo showcase salva progetti, titoli e descrizioni multilingua, immagini, categoria e stato di moderazione, con limiti predefiniti di 20 immagini e 5 MB per immagine.
No. Il modulo verifica se mprcheckoutrevolution è installato e abilitato. Quando è attivo, questo modulo gli lascia l'interfaccia di modifica degli ordini invece di gestire direttamente gli hook di modifica ordine.
In PrestaShop l'H1 della pagina categoria è il nome categoria, quindi cambiare l'heading per SEO di solito cambia anche etichette menu e breadcrumb, cosa che normalmente non vuoi. La soluzione è sovrascrivere l'H1 in modo indipendente. Con Custom Category H1, salvi un valore H1 separato per categoria e il modulo lo sostituisce nella pagina categoria tramite hook PrestaShop, lasciando intatto il nome dell'oggetto Category (e quindi navigazione e breadcrumb). Questo ti permette di puntare a un heading ricco di keyword come "Piatti doccia impermeabili per wet room" mentre il menu continua a leggere un breve "Piatti doccia". Nota che le categorie root sono intenzionalmente escluse, perché non renderizzano una normale pagina categoria storefront con H1 visibile all'acquirente. Usa un H1 chiaro e unico per categoria e mantienilo allineato al title tag della pagina: vedi la nostra guida SEO PrestaShop.
Il modulo salva gli override in tabelle dedicate per righe override, valori lingua e assegnazioni categoria. I default sono abilitato, mostra campo modifica categoria, sostituisce il nome pagina categoria nel contenuto categoria filtrato, applica lo stesso valore alle etichette product-listing, ripiega sulla lingua predefinita, ripiega da un valore specifico negozio a un valore all-shops, rimuove tag HTML e normalizza gli spazi. Esiste fallback categoria padre, ma è disabilitato di default per evitare heading duplicati tra categorie figlie.
Per lavoro SEO bulk, un override può essere assegnato a più categorie. Se un merchant modifica poi direttamente una categoria e quella categoria appartiene a un override condiviso, il codice stacca quella singola categoria e crea un override locale alla categoria, lasciando l'override condiviso alle altre. Il valore H1 può usare placeholder come {category_name}, {nb_products}, {page}, {page_label}, {shop_name} e {lang}. La paginazione può anche aggiungere automaticamente un'etichetta pagina quando abilitata. Il modulo cambia i dati categoria renderizzati; non rinomina il record categoria PrestaShop salvato.
Registra displayHeader, displayOrderConfirmation, actionValidateOrder e actionCustomerAccountAdd. Questi hook renderizzano il tracking browser e mettono in coda dati di conversione legati a ordini o registrazioni.
Il form offre virgola, punto e virgola, tabulazione e pipe. Il controller converte l'opzione tab in un vero carattere di tabulazione prima di inviare il CSV in streaming.
Lo schema include tabelle per team, dipendenti dei team, mapping team-stato, stati workflow e traduzioni, storico ordine, commenti ordine, promemoria, notifiche e preferenze di notifica dei dipendenti.
No. Il codice di rilevamento controlla se il riferimento prodotto inizia con mpr-pack-. I contenuti del pack vengono poi letti dalla tabella propria del modulo mpr_pack_content.
L'hook controlla actionDispatcherBefore e gestisce solo Dispatcher::FC_FRONT e Dispatcher::FC_MODULE. I dispatch Back Office vengono ignorati.
hookPaymentOptions() richiede modulo attivo, configurazione abilitata, cliente loggato, almeno un termine di pagamento attivo assegnato ai gruppi del cliente e credito sufficiente per il totale del carrello corrente.
Rileva il paese visitatore in un ordine fallback fisso. Il modulo legge prima l'header Cloudflare HTTP_CF_IPCOUNTRY quando esiste e non è XX. Se non è disponibile, prova PrestaShop GeoIP tramite GeoIp::getCountryByAddr($ip) e converte il nome paese restituito di nuovo in codice ISO. Se GeoIP non è disponibile, controlla infine il cookie di contesto PrestaShop iso_code_country.
1. Cloudflare reverse proxy sends HTTP_CF_IPCOUNTRY=US -> module stores country code US and resolves the country name.
2. No Cloudflare header -> PrestaShop GeoIP returns United States -> module looks up ISO code US.
3. GeoIP unavailable -> PrestaShop cookie iso_code_country=US is used.
4. No signal -> empty country code and empty country name.Questo significa che i ban paese dipendono dal segnale disponibile per quella richiesta. Se ti affidi alla country detection di Cloudflare, assicurati che il traffico shop raggiunga davvero PrestaShop attraverso Cloudflare così l'header è presente.
L'IP visitatore usato per GeoIP viene da Tools::getRemoteAddr() quando PrestaShop lo fornisce. Il modulo ha una fallback chain per HTTP_CF_CONNECTING_IP, HTTP_X_REAL_IP, il primo valore da HTTP_X_FORWARDED_FOR, poi REMOTE_ADDR. Questo conta perché la qualità GeoIP dipende dal vero IP client, non dall'IP di un proxy intermedio.
Un ban paese corrisponde solo quando la richiesta corrente ha un codice paese non vuoto. Se Cloudflare invia XX, GeoIP manca, il lookup nome-paese non può mappare il risultato GeoIP a un codice ISO e il cookie è assente, allora regole solo paese non scatteranno per quella richiesta. VPN, proxy e configurazione CDN possono anche far differire il paese rilevato dalla posizione fisica dell'acquirente.
Il controller checkout personalizzato reindirizza i clienti alla pagina ordine nativa di PrestaShop quando il one page checkout è disattivato. Il modulo quindi non forza il proprio flusso se l'impostazione one_page_checkout_enabled è spenta. Così la configurazione resta collegata alle impostazioni del modulo e al comportamento reale di PrestaShop.
Sì, il modulo include strumenti di import ed export per contenuti blog. Il controller admin PrestaShop può importare XML WordPress WXR, inclusi commenti opzionali, ed esportare i dati blog in XML o JSON tramite il servizio BlogExporter.
Il banner ricompare quando il cookie di consenso manca o è scaduto. Nel front office PrestaShop il JavaScript legge mprcookie_consent e nasconde il banner ai clienti di ritorno; la scadenza configurata controlla la durata della scelta, con 365 giorni di default.
Sì, il modulo ha un interruttore per la visualizzazione mobile. Prima di renderizzare il widget Crisp, il guard PrestaShop controlla l'impostazione SHOW_MOBILE e il contesto dispositivo; se il mobile è disattivato e il contesto è mobile, non viene emesso script Crisp.
No. S2S_ENABLED è false di default. Il pannello readiness considera esplicitamente S2S come opzionale, e il tracking Pixel browser può funzionare con un Marketer ID valido e tracking browser abilitato.
Sì, i merchant possono definire regole trigger personalizzate per eventi Criteo supportati. La configurazione PrestaShop accetta regole JSON validate con trigger click, URL, controller o evento DOM, poi normalizza i nomi evento al vocabolario OneTag supportato da Criteo.
Il Front Controller accetta un nome evento e parametri JSON, rifiuta payload oltre 8192 caratteri, mantiene al massimo 50 chiavi normalizzate per livello, limita la profondità di annidamento e tronca i valori stringa a 512 caratteri.
No, la disinstallazione non rimuove le tabelle cron condivise. Il percorso uninstall PrestaShop rimuove il menu admin del modulo e deregistra i suoi task, ma mantiene volutamente le tabelle cron perché altri moduli MPR possono dipendere dalla stessa infrastruttura.
No, le categorie root vengono rifiutate dalla logica di salvataggio override. Il controller admin PrestaShop verifica che le categorie selezionate siano categorie storefront, perché le root non renderizzano normali pagine categoria dove un H1 visibile al cliente sarebbe applicato.
Sì, il modulo include uno scanner cookie del front office. Può eseguire crawl di un URL PrestaShop, ispezionare header Set-Cookie e assegnazioni inline document.cookie, salvare nuovi cookie non categorizzati e suggerire categorie per pattern noti analytics, marketing e funzionali.
Sì, può abbinare pattern user agent come target di ban. Nell'admin PrestaShop, una regola può usare testo semplice per un contains case-insensitive oppure una regex racchiusa tra slash, e può essere combinata con filtri IP, CIDR o paese.
No, gli upload di file non vengono elaborati dal codice attuale di invio. L'elenco campi admin include un input file, ma il processore legge i valori con Tools::getValue e non gestisce array PHP files, percorsi di salvataggio o allegati email.
Sì. Il validatore accetta cifre separate da virgole o spazi, entro le regole di lunghezza configurate, quindi è possibile salvare più ID numerici nel campo Marketer ID.
Il pannello diagnostico include un'azione Retry failed events. Chiama il reset della queue condivisa per questo modulo e il provider outbrain, riportando gli eventi falliti allo stato pending.
Il modulo salva gli ID prodotto nel cookie browser del visitatore mprrecent_ids. Il cookie viene scritto con path /, durata di 30 giorni e SameSite=Lax.
No. Il controller AJAX crea un oggetto Product per ogni ID richiesto e salta le voci non caricate o non attive prima di restituire i dati delle card prodotto.
La risposta AJAX include nome di ogni prodotto, URL prodotto, URL immagine cover usando home_default e prezzo formattato. Lo script front renderizza questi valori come card prodotto compatte.
No, non serve un account, e la descrizione sorgente dice che funziona per guest, clienti loggati e visitatori di ritorno. Ricorda le pagine prodotto recenti in un cookie del browser invece di riempire una tabella PrestaShop di storico utente. Dovresti comunque descrivere l'uso del cookie nella privacy o cookie information dove i requisiti legali del tuo store lo richiedono.
Lo script storefront usa un cookie chiamato mprrecent_ids. Sulle pagine prodotto, mette l'ID prodotto corrente all'inizio della lista, rimuove duplicati, limita la lista al massimo configurato e scrive il cookie per 30 giorni con SameSite=Lax. Il default install è MAX_PRODUCTS=8, e l'hook display predefinito è displayFooterProduct.
Quando il widget viene renderizzato, il browser legge il cookie e posta la lista ID prodotto al controller AJAX del modulo. Il controller sanifica gli ID con intval, rimuove valori vuoti, limita la richiesta a 20 ID e restituisce solo prodotti attivi. La risposta contiene ID prodotto, nome, URL, immagine cover e prezzo formattato così il widget può disegnare la lista recent-products.
Quindi il modulo non costruisce un profilo di navigazione server-side legato a un account cliente. Il server riceve comunque gli ID prodotto recenti durante la lookup AJAX, e gli ID sono salvati nel cookie browser del visitatore, quindi la funzione resta tracking basato su cookie dal punto di vista di una privacy notice.
Inserisci l'AdRoll Advertiser ID da adroll_adv_id, inserisci il Pixel ID da adroll_pix_id, abilita browser tracking e scegli gli eventi da inviare. Entrambi gli ID devono contenere solo lettere, numeri, underscore o trattini, e il tracking resta inattivo finché gli ID non sono validi e il modulo è abilitato.
- Setup richiesto: Advertiser ID, Pixel ID e browser tracking abilitato.
- Eventi page journey: page view, product view, checkout start e search.
- Eventi interazione: add to cart, add to wishlist, signup ed eventi browser custom configurati.
- Evento purchase: inviato su conferma ordine quando purchase tracking è abilitato.
Il modulo è un'integrazione browser Pixel. I suoi demo metadata indicano AdRoll server-side purchase come non disponibile perché l'accesso pubblico AdRoll S2S non è esposto in questo modulo come flusso stabile token/endpoint.
All'installazione, il browser tracking stesso è disabilitato di default, mentre i toggle evento standard sono abilitati di default. Questo permette al merchant di configurare prima gli ID e poi attivare tracking quando pronto. Employee exclusion e rispetto consenso marketing sono entrambi abilitati di default, così dipendenti back-office che navigano lo storefront e visitatori senza consenso marketing supportato possono essere soppressi prima che gli eventi vengano inviati.
L'hook header prepara la coda AdRoll, imposta window.adroll_adv_id, window.adroll_pix_id e window.adroll_version='2.0', poi carica https://s.adroll.com/j/roundtrip.js. Gli eventi header sono costruiti server-side per page view, product view, checkout start, search e signup, mentre add-to-cart e wishlist sono collegati in JavaScript a eventi PrestaShop o selector pulsante comuni.
Gli eventi browser custom sono opzionali e disabilitati di default. Se abilitati, il JSON deve essere un array o un oggetto con array events. I nomi evento sono limitati a lettere, numeri, underscore e trattini, con limite 64 caratteri, e questo modulo limita gli eventi custom a 15 nomi evento distinti. I trigger supportati sono click, url, controller e event.
[{"event":"GalleryBrowse","trigger":"click","selector":".product-images img","params":{"segment_name":"gallery_browse"}}]Sì, purchase tracking invia valore ordine e valuta dalla pagina conferma ordine PrestaShop. Il modulo costruisce anche item count, riferimento ordine, product ID, nomi, categorie, prezzi e quantità, poi invia l'evento purchase tramite browser pixel quando purchase tracking è abilitato.
L'hook order-confirmation controlla prima il normale tracking gate: il modulo deve essere attivo, gli ID devono essere validi, employee exclusion non deve bloccare la richiesta, il consenso marketing deve passare quando abilitato e TRACK_PURCHASE deve essere on. Poi accetta order o objOrder dai parametri hook PrestaShop e costruisce il payload purchase da quell'ordine caricato.
La mappatura value è esplicita. I dati conversion comuni sono convertiti in parametri stile AdRoll: value diventa conversion_value, currency diventa adroll_currency, num_items resta item count, order_id è impostato al riferimento ordine PrestaShop, e i dati prodotto diventano product_id, content_ids e un array products con item ID, name, price e quantity dove disponibili.
L'evento è comunque browser-side. Il template chiama window.mpradrollTrack('purchase', params, 'Order confirmation') quando lo script header è presente, oppure ripiega su window.__adroll.track/window.adroll.track. Se la funzione legacy record_user di AdRoll esiste, il template chiama anche quella, ma il modulo non invia una richiesta purchase server-to-server.
Sì. Quando MPRADROLLPIXEL_RESPECT_CONSENT è abilitato, il modulo controlla i moduli cookie-consent supportati prima di renderizzare o sparare tracking AdRoll. Con mprcookiesrevolution, il consenso marketing è concesso solo quando il cookie mprcr_consent contiene marketing:1. Con mprcookiebanner, il consenso è concesso quando mprcookie_consent=granted. Se il cookie pertinente manca, il modulo ripiega sul valore DEFAULT_CONSENT di quel modulo consenso.
mprcookiesrevolution allowed: mprcr_consent=essential:1|marketing:1|statistics:1
mprcookiesrevolution blocked: mprcr_consent=essential:1|marketing:0|statistics:1
mprcookiebanner allowed: mprcookie_consent=grantedSe nessuno dei moduli consenso supportati è attivo, il controllo consenso non blocca il tracking. Employee exclusion può comunque sopprimere il tracking separatamente quando MPRADROLLPIXEL_EXCLUDE_EMPLOYEES è abilitato.
I default install sono orientati alla privacy: RESPECT_CONSENT=1 ed EXCLUDE_EMPLOYEES=1. Il metodo server-side canTrack() restituisce false se il modulo è inattivo, un contesto dipendente valido sta navigando il front office o il consenso marketing non è concesso secondo i controlli dei moduli consenso supportati.
Anche il template browser esegue un controllo consenso prima di caricare AdRoll. Quando un modulo consenso supportato è attivo, controlla window.MPRCR.isGranted('marketing') se disponibile, poi gli stessi due cookie. Se quel controllo client-side fallisce, lo script ritorna prima di caricare roundtrip.js o sparare eventi accodati. Una gotcha pratica è che il controllo client-side non conosce il valore server-side DEFAULT_CONSENT, quindi un setup che dipende dal consenso default granted senza cookie consenso va testato nel browser.
No, questo modulo invia eventi AdRoll tramite browser pixel, non tramite una API server-side pubblica. Il codice PrestaShop include una nota demo secondo cui AdRoll S2S è una beta gestita dal supporto; in produzione carica roundtrip.js e invia solo eventi browser.
Usa questo modulo per impostare display name separati per le pagine CMS PrestaShop. Salva un display name per id_cms, lingua e shop nella propria tabella mprcmsnames, quindi il record CMS nativo e il suo meta_title SEO non vengono riscritti nella tabella CMS.
- Esempio: mantieni il meta title della pagina CMS come
Terms and Conditions | My Shopper SEO. - Apri la schermata CMS Display Names del modulo e trova quella riga pagina CMS per ID e meta title esistente.
- Inserisci un display name più corto come
Termsnel campo Display Name e salva. - Sul front office, l'heading della pagina CMS riceve il display name tramite
filterCmsContent, e i link CMS che corrispondono al patterncms-page-linkdi PrestaShop vengono sostituiti nell'HTML finale. - Se svuoti il campo display name, il modulo elimina la propria riga custom per quella pagina CMS e lo shop ripiega sul
meta_titleCMS originale.
Quindi la divisione pratica è: usa il titolo CMS nativo per snippet di ricerca e comportamento browser title, e usa questo modulo per heading pagina, link footer e label menu più brevi che gli acquirenti leggono davvero.
Il modulo ha due percorsi front-office. Primo, filterCmsContent cambia l'oggetto CMS passato al template pagina sostituendo meta_title con il display name salvato per lingua e shop correnti. Secondo, actionOutputHTMLBefore modifica l'HTML finale per link CMS corrispondenti prima che la risposta venga inviata.
Il commento sorgente è esplicito: il vero tag HTML <title> non è influenzato perché PrestaShop lo costruisce tramite Meta::getMetaTags() usando il proprio percorso SQL. Per questo il modulo può accorciare nomi visibili senza sovrascrivere il titolo SEO CMS salvato da PrestaShop.
Il markup tema conta comunque. La relabel dei link gira solo su anchor che corrispondono al pattern link CMS atteso dal modulo, con l'ID pagina CMS in link-cms-page-{id}-... e l'esatto attributo classe cms-page-link nell'ordine atteso dalla regex. Se un tema costruisce menu CMS con markup diverso o HTML annidato dentro il testo anchor, l'heading può comunque essere cambiato ma il testo link potrebbe non essere sostituito.
No, non riscrive il tag HTML title. Il modulo è intenzionalmente limitato al contenuto CMS visibile e al testo dei link CMS renderizzati, così PrestaShop può continuare a usare il meta title CMS originale per l'head pagina e gli snippet di ricerca.
Il commento sorgente dice che il tag <title> è costruito dal percorso Meta::getMetaTags() di PrestaShop ed è non influenzato. Il modulo non aggiorna la tabella CMS nativa, non si aggancia alla generazione meta tag e non scrive un nuovo titolo SEO in PrestaShop.
Ciò che può cambiare è l'oggetto CMS passato tramite filterCmsContent. Se il template pagina usa il meta_title di quell'oggetto CMS filtrato come heading visibile, gli acquirenti vedono il display name più corto sulla pagina. Separatamente, actionOutputHTMLBefore può sostituire il testo dei link CMS corrispondenti nell'HTML finale. Sono cambi di contenuto visibile, non cambi di head tag.
Per lavoro SEO, continua a modificare il vero meta title CMS nella pagina CMS nativa PrestaShop. Usa questo modulo quando il titolo SEO è troppo lungo per menu, footer, breadcrumb o heading on-page.
Rinomina i link CMS che corrispondono al markup link CMS atteso da PrestaShop. L'hook output cerca un anchor il cui id inizi con link-cms-page-{id}- e la cui classe sia cms-page-link, poi sostituisce il testo link semplice con il display name salvato per lingua e shop correnti.
<a id="link-cms-page-3-1" class="cms-page-link" href="/content/3-terms-and-conditions">Terms and conditions</a>Quel pattern conta per temi personalizzati: se il link CMS ha una classe diversa, nessun id link-cms-page-..., la classe appare prima dell'id nel markup target del modulo, oppure la label è costruita da HTML annidato invece che testo semplice, la sostituzione output potrebbe non trovarlo.
La regex è volutamente stretta. Si aspetta l'attributo id prima di class="cms-page-link", e cattura testo semplice tra tag anchor di apertura e chiusura. Un link con classi multiple come class="footer-link cms-page-link", uno span dentro l'anchor o un componente menu completamente custom può restare fuori dal pattern.
La sostituzione inoltre non fa nulla nel back office e ritorna presto se non ci sono display name per lingua e shop correnti. Se il footer o menu CMS del tuo tema non viene rinominato, ispeziona prima il markup anchor generato; spesso la correzione è fare in modo che il template produca il pattern ID e classe CMS nativo di PrestaShop.
Sì, i display name sono salvati per pagina CMS, lingua e shop. La tabella del modulo usa id_cms, id_lang e id_shop come chiave, e salvare un valore vuoto rimuove quella label salvata così PrestaShop ripiega sul titolo CMS nativo.
Anche il lookup front-office è specifico per lingua e shop. Carica righe da mprcmsnames dove id_lang uguale alla lingua corrente del contesto e id_shop uguale allo shop corrente del contesto. In questo lookup non esiste un fallback ampio id_shop=0, quindi un display name salvato per uno shop non viene automaticamente riusato da un altro.
Al salvataggio, il modulo itera pagine CMS e lingue, sostituendo righe quando viene postato un valore e cancellando righe quando il valore inviato è vuoto. Per questo svuotare un campo è un vero reset, non solo una label custom vuota.
Un dettaglio implementativo da controllare in questa versione sorgente: la tabella configurazione renderizzata mostra l'input della lingua predefinita per ogni pagina CMS. Database e logica salvataggio supportano id_lang, ma il form visibile in questo checkout non renderizza colonne input separate per ogni lingua. Se ti servono display name in lingue non predefinite, conferma che la build installata esponga quegli input o aggiungili prima di affidarti all'editing multilingua dal form standard.
Sì, il modulo genera automaticamente una password per i form registrazione e checkout supportati. In PrestaShop punta ai campi password comuni di customer, authentication e checkout, poi riempie input password, passwd, confirmation e password_confirmation quando lo scope pagina configurato corrisponde.
I default install abilitano il modulo, lo applicano sia a registrazione sia a checkout, nascondono i campi password, generano una password di 12 caratteri e includono lettere maiuscole, numeri e caratteri speciali. I controller applicabili sono authentication, registration e identity per registrazione, più order, orderopc e order-opc per checkout.
Su PrestaShop 1.7+, il modulo registra CSS e JavaScript front tramite actionFrontControllerSetMedia. Su PrestaShop 1.6, carica gli asset da displayHeader. Lo stesso hook header inietta le impostazioni password in window.mprcustomerpassword_config perché JavaScript le usi.
Lo script front trova campi nominati come password, passwd, confirmation e password_confirmation, e scansiona anche form registration/authentication comuni per qualsiasi input type=password. Genera una password per pagina, riempie tutti i campi corrispondenti con lo stesso valore, imposta autocomplete=new-password e aggiunge al form un marker nascosto mprcustpass_auto=1.
- Hidden mode: il wrapper del campo password viene nascosto e marcato
aria-hidden. - Optional mode in code: il campo viene mostrato con il valore generato e un messaggio informativo, ma lo script imposta il campo a
readonly. - Dynamic checkout forms: un
MutationObserverrielabora campi password appena inseriti, e lo script protegge i valori generati al submit e con un controllo periodico.
Sì, può inviare via email la password generata quando la modalità email è impostata a send password. L'hook account-add PrestaShop invia quella email solo quando il form inviato include il marker di autogenerazione del modulo, così gli account cliente normali non vengono processati accidentalmente.
Il default EMAIL_MODE è send_password. Quando actionCustomerAccountAdd gira, il modulo controlla prima che sia abilitato, poi controlla mprcustpass_auto nel form inviato. Quel marker è aggiunto da JavaScript solo dopo aver riempito i campi password, quindi il percorso email è legato alle password generate dal modulo.
Per l'email password, il modulo legge la password inviata da password prima e ripiega su passwd per form PrestaShop più vecchi. Se nessun valore è presente al momento dell'hook, ritorna senza inviare. Quando invia, usa il template email mprcustomerpassword_account e passa nome, cognome, email, password generata, nome shop e URL shop del cliente.
Ci sono due alternative importanti. Con EMAIL_MODE=silent, l'hook esce senza inviare alcuna email password. Con EMAIL_MODE=setup_link, invia un link reset/setup invece della password generata. I merchant che non vogliono password inviate via email dovrebbero usare setup-link o silent mode invece del default send-password.
Sì, il modulo può inviare un link di setup invece della password generata. In PrestaShop setup-link mode crea un token reset, salva una validità di 24 ore sul record cliente o sui campi legacy e invia al cliente un link alla pagina password.
Questo percorso viene selezionato con EMAIL_MODE=setup_link. Si applicano comunque lo stesso hook account-add e il marker mprcustpass_auto, quindi l'email setup viene inviata solo per account dove lo script front del modulo ha generato e inviato i campi password.
Sugli oggetti cliente PrestaShop più nuovi che espongono reset_password_token, il modulo crea un token da random_bytes(32), lo rende URL-friendly sostituendo caratteri base64 non sicuri, lo salva in reset_password_token, imposta reset_password_validity a 24 ore nel futuro, aggiorna il cliente e costruisce un URL pagina password con token, id_customer e reset_token.
Per il percorso legacy, il modulo crea un token MD5, aggiorna direttamente i campi tabella customer reset_password_token e reset_password_validity con finestra di validità 24 ore, e costruisce l'URL pagina password con token e id_customer. L'email usa il template mprcustomerpassword_setup con {setup_link}, valori identità cliente, nome shop e URL shop.
La password generata viene comunque usata per permettere a PrestaShop di creare l'account durante checkout o registrazione. La differenza è ciò che il cliente riceve dopo: setup-link mode invia un link per scegliere una password, mentre send-password mode invia la password generata stessa.
No, la modalità opzionale mostra la password generata ma lo script attuale rende il campo in sola lettura. In PrestaShop la modalità nascosta elimina il blocco password, mentre quella opzionale lascia visibile il valore con una nota informativa.
Aggiungi un Facebook Page Access Token e Page ID, poi abilita il feed. In PrestaShop il modulo recupera post dalla Facebook Graph API e può renderizzarli negli hook home, footer, left column o right column.
Il form connessione richiede Page Access Token e Page ID. L'aiuto admin indirizza i merchant verso una Facebook Developer app con accesso Pages API e permessi pages_read_engagement e pages_read_user_content. Page Name è opzionale e viene usato per l'header feed quando fornito.
- L'hook display predefinito è
displayHome, ma il modulo supporta anchedisplayFooterBefore,displayFooter,displayLeftColumnedisplayRightColumn. - Il conteggio post predefinito è
6, il layout predefinito è una griglia a 3 colonne, e la cache feed condivisa è di default3600secondi. - Se access token o Page ID mancano, il fetch Facebook API non restituisce post, quindi il blocco front-office non ha nulla da renderizzare.
MPRFB_ACCESS_TOKEN=your-page-token
MPRFB_PAGE_ID=your-page-id
MPRFB_DISPLAY_HOOK=displayHome
MPRFB_POST_COUNT=6Quando configurato, il modulo chiama Facebook Graph API v21.0 per i post della pagina, salva il feed normalizzato in cache e renderizza solo nell'hook selezionato nelle impostazioni modulo.
Sì, può mostrare testo post, media, data, reactions, shares, comments e informazioni autore. In PrestaShop queste opzioni display sono configurate separatamente, e i post condivisi possono essere esclusi quando l'impostazione EXCLUDE_SHARED è abilitata.
Gli switch pertinenti sono impostazioni separate come SHOW_TEXT, SHOW_MEDIA, SHOW_DATE, SHOW_REACTIONS, SHOW_SHARES, SHOW_COMMENTS e SHOW_AUTHOR. Il testo è abilitato di default e viene troncato con ellissi quando supera TEXT_LENGTH, che di default è 200 caratteri.
- I media vengono presi prima da attachment e subattachment Facebook, con
full_pictureusato come fallback. - I conteggi reaction, comment e share vengono dai campi summary restituiti da Facebook, quindi i conteggi mostrati dipendono da ciò che la risposta API include.
- Quando
EXCLUDE_SHAREDè abilitato, i post constatus_typeuguale ashared_storyvengono saltati. - I post senza testo messaggio né immagine vengono saltati prima del rendering.
Questo conta perché un merchant può costruire un blocco social proof compatto con sole immagini e conteggi engagement, oppure un feed editoriale più completo con didascalie, date e attribuzione pagina.
I progetti approvati supportano il voto della community e i commenti nidificati. Il numero di voti e di visualizzazioni viene salvato per ogni progetto, offrendo un semplice segnale di quali lavori dei clienti riscuotono più interesse.
Sì. Il modulo mette in cache il feed Facebook in un file JSON chiamato mprfb_feed_cache.json. La cache salva un timestamp cached_at e i posts recuperati, poi riusa quei post finché la durata configurata non scade.
Cache file: mprfb_feed_cache.json
Duration setting: MPRFB_CACHE_DURATION=3600
Admin refresh: submitMprfbSync clears the file; the next front-office feed load fetches fresh posts and writes cached_at + postsLa durata cache predefinita nel trait feed condiviso è 3600 secondi. Il form configurazione del modulo espone durate comuni come 30 minuti, 1 ora, 2 ore, 6 ore, 12 ore e 24 ore. Le azioni admin refresh e clear-cache rimuovono entrambe il file cache, quindi la richiesta feed successiva è forzata a tornare alla fonte Facebook invece di servire post in cache obsoleti.
La cache è indipendente dalla richiesta, quindi gli acquirenti normali non attivano una chiamata Facebook API a ogni page view. Se il file cache manca, è vuoto, contiene JSON non valido o è più vecchio della durata configurata, il trait feed condiviso lo tratta come scaduto e recupera di nuovo. Salvare configurazioni legate al feed svuota anche la cache feed, impedendo che cambi layout o count si mescolino con vecchi dati post.
Per store trafficati, questa è la protezione principale contro page load lenti e pressione API evitabile. Per lanci campagna, usa l'azione admin refresh dopo aver pubblicato su Facebook se vuoi che il blocco storefront raccolga subito il nuovo contenuto invece di aspettare la prossima scadenza cache.
Sì, può pubblicare post blog su Facebook, ma il workflow autopublish è costruito intorno ai post MPR Blog Revolution, non a ogni possibile modulo blog terzo. Il modulo Facebook usa il trait social publisher condiviso, ascolta gli hook PrestaShop object add e update, controlla che auto-publish sia abilitato, controlla un oggetto stile Blog Revolution o Post, e continua solo quando l'oggetto ha status = 1.
La prevenzione duplicati è salvata nella tabella mpr_social_publish. Prima dell'invio, il modulo controlla se mprfacebookpostsintegration ha già pubblicato object type blog_post con quell'ID post sulla piattaforma facebook. Gli invii riusciti sono registrati con platform post ID, platform URL, caption, media URLs e status published, così hook add o update successivi saltano lo stesso post invece di inviarlo di nuovo.
Le caption vengono dal template auto-publish del modulo Facebook. I placeholder supportati sono {title}, {excerpt}, {url} e {shop_name}. Se il post blog ha un'immagine in evidenza, il publisher costruisce il suo media URL da img/mprblogrevolution/posts/. Se mancano credenziali Facebook, il publisher non è configurato o una condizione piattaforma richiesta non è soddisfatta, il percorso auto-publish ritorna senza postare.
Il publisher specifico Facebook è configurato solo quando esistono entrambi PAGE_ID e ACCESS_TOKEN. Usa Facebook Graph API v21.0, supporta post testo, link post e photo/image post nel percorso publish() implementato, consente un elemento media per invio e ha limite caratteri 63206. Un image post media-only viene inviato tramite endpoint page photos, mentre link o text post usano endpoint page feed.
Anche se getSupportedMediaTypes() attualmente elenca video, il publisher implementato non carica video né chiama un endpoint videos. Tratta la pubblicazione video come non supportata salvo venga aggiunto un vero percorso video publishing.
MPRFB_AUTOPUBLISH=1
MPRFB_AUTOPUBLISH_CAPTION={title}
{excerpt}
Read more: {url}Il modulo salta anche il proprio percorso publisher quando il takeover più ampio mprsocialrevolution è attivo per Facebook, così due moduli social non cercano di pubblicare lo stesso post blog nello stesso momento.
Il modulo aggiunge pagine dedicate di galleria, categoria, progetto, invio e un'area cliente „i miei progetti“, ciascuna con il proprio URL ottimizzato per il SEO. I progetti approvati in evidenza possono inoltre essere mostrati in aree selezionate del negozio.
Tutti i testi della galleria, categorie, progetti e commenti, sono memorizzati per lingua, quindi la galleria è completamente multilingua. Il modulo funziona su PrestaShop dalla 1.6.1 alla 9.x.
Sì, ogni profilo feed può avere lingua, valuta, paesi target e label propri. È utile quando uno store vende in diversi mercati con wording catalogo o struttura advertising diversi. Una separazione chiara dei feed aiuta anche i manager a capire quale mercato produce ricavi e quale richiede attenzione.
Nel modello feed, ogni profilo salva id_lang, id_currency, id_shop, target_country, feed_label, content_language e sync_mode. Un nuovo feed usa default francesi nel sorgente attuale: target_country=FR, feed_label=FR e content_language=fr.
target_country=AE,AU,GB,US
feed_label=GB
content_language=en
sync_mode=file_only or apitarget_countryè normalizzato in maiuscolo e può essere un codice paese a due lettere o una lista separata da virgole.feed_labelè normalizzato in maiuscolo e deve rispettare la forma label di Google Merchant API: lettere maiuscole, numeri e trattini, fino a 20 caratteri.content_languageè normalizzato in minuscolo e deve essere un codice lingua a due lettere per API product input.- Per API sync, profili feed separati sono di solito più puliti quando ogni mercato richiede label, valuta o lingua distinta.
Il front feed controller serve un feed specifico per ID o nome file con token, usa TTL cache predefinito 3600 secondi e può rigenerare con generate=1. Questo permette a uno shop PrestaShop di mantenere feed Merchant separati senza mescolare paesi, lingue o label campagna.
No, la descrizione sorgente dice che i valori numerici interni di PrestaShop restano intatti sotto. Il modulo personalizza i numeri mostrati su fatture, delivery slips e credit notes. Se hai bisogno di personalizzare i riferimenti ordine stessi, il sorgente raccomanda di usare il prodotto separato Custom Order Numbering.
Il modulo fattura conferma questa divisione nel codice: hookActionSetInvoice genera e logga il riferimento fattura formattato, ma lascia intenzionalmente numerico/nativo il numero fattura salvato da PrestaShop. La stringa formattata visualizzata viene fornita più tardi tramite actionInvoiceNumberFormatted, e la generazione delivery note salva il valore contatore numerico in order_invoice.delivery_number.
Default invoice format: {DOC_TYPE}/{YYYY}/{NNNNNN}
Default delivery format: {DOC_TYPE}/{YYYY}/{NNNN}
Default credit slip format: {DOC_TYPE}/{YYYY}/{NNNN}I valori generati sono registrati in mprinvoicenumber_number con tipo documento, ID ordine, fattura o slip, valore contatore, pattern e numero formattato. Questo ti dà documenti customer-facing personalizzati senza cambiare order IDs o riferimenti ordine random; quelli sono gestiti da mprordernumber.
Il modulo genera un indicatore tramite displayProductListReviews. Il suo JavaScript trova la miniatura prodotto circostante e inietta un badge Bundle nell'area immagine.
Il tab elenca in una griglia i prodotti inclusi configurati. Ogni card può mostrare immagine prodotto, nome prodotto, prezzo formattato oppure FREE per prezzo zero, e un link al prodotto incluso.
Include un helper dispatcher per route rewrite-only. Quando una route non ha un ID, può risolvere slug corrispondenti di categoria, prodotto, CMS o produttore e aggiornare di conseguenza i parametri della request.
Sì. Il form admin salva il flag enabled, e ogni hook front termina subito quando isFeatureEnabled() è false.
Il percorso server-side richiede CAPI attivo e un Reddit access token configurato. L'Events Testing ID è opzionale e viene usato solo quando presente.
No, la fonte descrive eventi browser ed eventi lato server che lavorano in parallelo con ID di conversione condivisi. Il percorso lato server può aiutare a ridurre le lacune quando il tracciamento nel browser viene bloccato, mentre il pixel browser continua a rilevare il comportamento lato client. Usarli entrambi con attenzione fornisce a Reddit segnali più completi rispetto al solo pixel incollato.
Il tracciamento browser viene preparato negli hook header e conferma ordine. Il modulo può emettere eventi come PageVisit, ViewContent, Search, SignUp, InitiateCheckout, eventi bridge in stile add-to-cart e Purchase. Quando la Conversions API è abilitata, gli eventi corrispondenti vengono messi in coda lato server con la stessa identità: i parametri browser usano conversionId, mentre il payload API salva conversion_id nei metadati dell'evento.
- Per il tracciamento browser è richiesto un Reddit Pixel ID.
- Conversions API richiede anche un access token, e il modulo invia all'endpoint conversioni di Reddit per il pixel configurato.
- L'esclusione dei dipendenti e i controlli sul consenso marketing passano da
canTrack()prima che il tracciamento front office venga preparato. - Il limite batch predefinito della coda CAPI è
20, mentre i percorsi front bridge e purchase elaborano subito piccoli batch.
La configurazione pratica consiste nel mantenere attivo il pixel browser per i normali eventi lato client e usare la Conversions API come segnale lato server complementare, non come sostituto.
Il modulo mappa direttamente la maggior parte delle azioni standard, mentre InitiateCheckout viene inviato come evento personalizzato Reddit chiamato InitiateCheckout nel mapping server-side.
Sì. La configurazione include l'esclusione dipendenti e il gate di tracking la controlla prima di costruire l'output pixel front o consentire eventi tramite il percorso tracking del modulo.
L'elenco degli hook disponibili include displayHome, displayFooterCategory, displayLeftColumn, displayRightColumn, displayFooterBefore, displayFooterProduct, displayProductAdditionalInfo, displayOrderConfirmation2 e displayCrossSellingShoppingCart.
Sì, la descrizione della fonte include sia collezioni di prodotti curate sia widget dinamici. Le collezioni selezionate a mano sono utili per campagne, merchandising editoriale e promozioni orientate al margine. Le fonti dinamiche sono utili quando vuoi che bestseller, nuovi arrivi o prodotti tornati disponibili restino aggiornati con meno lavoro manuale.
Le collezioni curate sono salvate separatamente dai widget. La tabella collection-product salva id_collection, id_product e position, e setProducts() riscrive quell'elenco nell'ordine salvato dall'admin. Un widget può quindi usare il tipo widget collection e puntare alla collezione scelta.
- I tipi di collezione includono
curated,staff_picks,seasonalespotlight. - Le query pubbliche delle collezioni restituiscono prodotti attivi del negozio e mantengono l'ordine collezione-prodotto salvato.
- Se il widget richiede immagini, il provider filtra i prodotti senza un'immagine utilizzabile.
- I tipi di widget automatici con provider prodotto implementati includono
bestsellers,new,sale,featured,trending,back_in_stockecart_recommendations. recently_viewedè indicato come tipo/etichetta di widget nel model, magetProducts()non ha ancora un case provider per questo tipo, quindi non dovrebbe essere presentato come lista automatica funzionante finché tale implementazione non viene aggiunta.
Questo significa che puoi scegliere manualmente una collezione di campagna per la homepage o per un blocco nella pagina prodotto, continuando a usare blocchi dinamici implementati in altre aree dello stesso negozio PrestaShop.
Sì. Il modello del widget salva hide_products_without_images e le query prodotto/l'assemblaggio del provider usano questo flag per richiedere un'immagine di copertina shop per molte fonti widget.
Il modulo ascolta actionUpdateQuantity. Quando la quantità di un prodotto passa da zero o meno a un valore positivo, inserisce una riga in mprshowcaserevolution_stock_change, che la fonte prodotti tornati disponibili può usare.
Installa e abilita il modulo per aggiungere un pulsante Ask a question nelle pagine prodotto di PrestaShop. Viene renderizzato tramite l'hook displayProductAdditionalInfo, apre un form modale accanto alle informazioni del prodotto e passa nome prodotto, riferimento e ID prodotto nella richiesta.
All'installazione, il modulo salva ENABLED=1, imposta RECIPIENT_EMAIL da PS_SHOP_EMAIL e usa [Product Question] come prefisso oggetto predefinito. L'hook assegna al template Smarty il nome prodotto, il riferimento prodotto, l'ID prodotto, l'URL AJAX e un valore token nascosto.
- Hook front:
displayProductAdditionalInfo. - Endpoint AJAX:
module/mpraskaboutproduct/ask. - Impostazioni admin: interruttore di abilitazione, email destinatario e prefisso oggetto.
Il risultato è un form di richiesta specifico per il prodotto nella pagina prodotto, così il merchant riceve il messaggio con il contesto del prodotto invece di una richiesta di contatto generica.
Sì, i clienti inviano la richiesta sul prodotto direttamente dalla modale del front office. Il front controller PrestaShop riceve nome mittente, email mittente, messaggio, nome prodotto e ID prodotto tramite AJAX, poi restituisce un messaggio JSON di successo o errore senza far aprire al cliente un client email.
Il template invia una richiesta FormData al front controller del modulo e aggiorna la modale con la risposta JSON. In caso di successo, il form viene azzerato e il cliente vede il messaggio di conferma; in caso di errore di validazione o di invio email, la stessa modale mostra l'errore restituito.
- La richiesta è considerata non valida se manca il marker di invio previsto
sender_email. - Il controller invia al destinatario configurato nel modulo, oppure ripiega sull'email del negozio.
- Se il template email
questiondel modulo esiste, viene usato; altrimenti il codice ripiega sul template core PrestaShopcontact.
Questo mantiene la richiesta dentro il flusso del front office PrestaShop e conserva nome prodotto e ID prodotto nel corpo dell'email.
Valida la richiesta nel front controller AJAX prima di inviare l'email. Una richiesta deve inviare sender_email, e i campi obbligatori sono sender_name, sender_email e message. L'email viene controllata con Validate::isEmail(), e il messaggio con Validate::isCleanHtml().
POST /module/mpraskaboutproduct/ask sender_name=Alice&sender_email=alice@example.com&message=Can you confirm availability?&id_product=42&product_name=Demo product- Se manca il marker di invio
sender_email, restituisce{"success":false,"message":"Invalid request."}. - Nome, email o messaggio vuoti restituiscono
{"success":false,"message":"All fields are required."}. - Un'email non valida restituisce
{"success":false,"message":"Invalid email address."}. - HTML non sicuro nel messaggio restituisce
{"success":false,"message":"Invalid message content."}.
Se la validazione passa, il modulo invia la richiesta all'email destinatario configurata, ripiegando sull'email del negozio quando non è impostato alcun destinatario del modulo.
Dopo la validazione, il controller costruisce l'oggetto email dal prefisso oggetto configurato più il nome prodotto inviato. Il messaggio viene escapato e convertito con nl2br() per il template email. Nome prodotto e ID prodotto sono inclusi nelle variabili email, così lo staff può identificare l'articolo senza chiedere al cliente di reinviare i dettagli.
La modale include un campo token nascosto, ma il percorso attuale del controller valida i campi della richiesta e il contenuto del messaggio invece di controllare quel token. Se serve una protezione anti-spam più forte, aggiungila attorno al form front office invece di presumere che questo controller esegua un controllo CSRF-token.
Sì, il modulo ti permette di impostare email destinatario e prefisso oggetto per le domande sui prodotti. Se non è configurato alcun destinatario, il front controller PrestaShop ripiega sull'indirizzo email del negozio, poi invia il messaggio includendo il contesto del prodotto.
La classe di configurazione espone RECIPIENT_EMAIL e SUBJECT_PREFIX. Durante l'installazione, RECIPIENT_EMAIL viene inizializzato da PS_SHOP_EMAIL, e SUBJECT_PREFIX ha come predefinito [Product Question]. Nel front controller, un destinatario vuoto viene sostituito con Configuration::get('PS_SHOP_EMAIL').
Recipient: mpraskaboutproduct.RECIPIENT_EMAIL or PS_SHOP_EMAIL
Subject: SUBJECT_PREFIX + product nameÈ utile quando le domande sui prodotti devono arrivare a una casella vendite, a un team tecnico o al desk di un fornitore invece che all'indirizzo principale di contatto PrestaShop.
Sì. Le recensioni vengono controllate prima di essere salvate, e i controlli falliti restituiscono un errore di validazione invece di accettare la recensione in modo silenzioso. La fonte include queste protezioni:
- Limite per stesso IP: quando
MIN_TIME_BETWEENè maggiore di zero, il modulo controlla se lo stesso IP ha pubblicato un'altra recensione in quel negozio entro il numero di secondi configurato. - reCAPTCHA: quando abilitato, il modulo verifica il token inviato con Google. Supporta v2 e v3; v3 usa una soglia punteggio di
0.5. Un token mancante fa fallire il controllo, mentre una secret key mancante o un problema di verifica di rete viene trattato come non bloccante. - Controlli link e tag: il contenuto con più di due URL viene rifiutato, e HTML incorporato evidente come
<script>,<iframe>,<object>,<embed>e<form>viene bloccato.
La protezione sul tempo minimo è un controllo del tempo tra recensioni per lo stesso IP, non un timer di caricamento del form. Per usare reCAPTCHA come protezione attiva, abilitalo e configura site key e secret key nelle impostazioni del modulo.
Il flusso di invio più ampio aggiunge altre protezioni pratiche. Le recensioni richiedono tipo entità valido, ID entità, contenuto di almeno 10 caratteri e una valutazione da 1 a 5. Le recensioni degli ospiti sono disabilitate per impostazione predefinita, e ai clienti loggati viene impedito di recensire due volte la stessa entità, a meno che la recensione precedente sia stata marcata come spam.
MODERATIONha come predefinito1, quindi le nuove recensioni vengono salvate comependingsalvo disabilitazione della moderazione.MIN_TIME_BETWEENha come predefinito30secondi.- Per le recensioni prodotto di clienti loggati, il modulo può marcare una recensione come acquisto verificato quando trova un ordine valido che contiene quel prodotto.
- I caricamenti foto, quando abilitati, sono limitati a JPEG, PNG e WebP, con limiti predefiniti di 3 immagini e 2 MB per immagine.
Non è comunque un sistema di rilevamento frodi. Il codice fornisce rate limiting, reCAPTCHA, controlli contenuto, prevenzione duplicati, marcatura acquisto verificato e moderazione, quindi i merchant dovrebbero mantenere la moderazione abilitata quando la qualità delle recensioni è importante.
Sì, le recensioni non sono limitate alle pagine prodotto. Il modulo include gestione entità per recensioni prodotto, categoria, CMS e negozio, oltre a una route pubblica per le recensioni, con ogni area di visualizzazione controllata dalla configurazione e renderizzata tramite hook o controller front office PrestaShop.
Il data model salva le recensioni con entity_type e entity_id, e il servizio di invio accetta product, category, cms e store come tipi entità validi. La pagina impostazioni ha interruttori separati per PRODUCT_REVIEWS, CATEGORY_REVIEWS, CMS_REVIEWS e STORE_REVIEWS; nei default attuali sono abilitate solo le recensioni prodotto.
L'integrazione automatica nella pagina prodotto è il percorso più completo nel codice ispezionato: le recensioni prodotto vengono renderizzate tramite displayProductExtraContent, le stelle nelle liste tramite displayProductListReviews e il badge valutazione prodotto tramite hook della pagina prodotto. La pagina pubblica recensioni è esposta come /reviews e può filtrare le recensioni approvate per type=product, category, cms o store.
Allowed entity types: product, category, cms, store
Public route: /reviews
Filtered examples: /reviews?type=category or /reviews?type=storePer il posizionamento su categoria, CMS e negozio, pianifica con attenzione la collocazione nel front office. La fonte supporta quei record recensione e l'hub recensioni, ma le pagine prodotto hanno la copertura hook integrata più forte nei file ispezionati.
Sì, i promemoria possono essere creati dopo che un ordine raggiunge lo stato consegnato configurato. L'hook stato ordine PrestaShop pianifica i promemoria solo quando la funzione promemoria è abilitata, e il modulo salva righe promemoria con dati di ordine, cliente, ritardo e stato recensione.
Più precisamente, l'hook ispezionato ascolta actionOrderStatusPostUpdate e controlla se il nuovo stato ordine PrestaShop ha il flag delivery impostato. Quando REMINDERS_ENABLED è attivo, carica i prodotti dell'ordine e crea una riga promemoria per prodotto tramite ReviewReminder::createForOrder().
REMINDERS_ENABLEDha come predefinito0.REMINDER_DELAY_DAYSha come predefinito7.- Le righe duplicate per lo stesso ordine e prodotto vengono saltate.
- I prodotti già recensiti da quel cliente vengono saltati.
- Ogni riga promemoria salva un token di 64 caratteri e uno stato come
pending,sentoreviewed.
Il model include anche helper per trovare promemoria pendenti dopo il ritardo configurato, marcarli come inviati, marcarli come recensiti e caricare un promemoria tramite token. Nei file ispezionati ho trovato pianificazione e data model, ma non un flusso cron completo di invio email che chiami quei metodi helper.
Sì, il modulo include gestori di recensioni esterne per Google Business Profile e Trustpilot. Quando le credenziali API richieste sono configurate, le recensioni esterne possono essere sincronizzate in tabelle locali per recensioni esterne e poi visualizzate o aggregate secondo le impostazioni del modulo PrestaShop.
La tabella delle recensioni esterne salva fonte, ID recensione della fonte, autore, titolo, contenuto, valutazione, URL fonte, data di pubblicazione, lingua, ID prodotto opzionale, ID negozio, dati API grezzi e timestamp di sincronizzazione. Una chiave unica su source più source_review_id evita import duplicati quando la stessa recensione viene recuperata di nuovo.
- La sincronizzazione Trustpilot richiede
EXT_TRUSTPILOT_ENABLED, una API key e Business Unit ID. Il provider ha anche un fallback di import CSV per export Trustpilot. - La sincronizzazione Google Business Profile richiede
EXT_GOOGLE_ENABLED, JSON del service account contenenteclient_emaileprivate_key, più Account ID e Location ID. - Il cron controller gira su
/module/mprcomments/cron?token=EXT_CRON_TOKEN&action=synce restituisce risultati di sincronizzazione per fonte come JSON. - Le recensioni aziendali esterne possono essere mostrate sulle pagine prodotto, caricate lazy per impostazione predefinita e, opzionalmente, conteggiate nei badge valutazione prodotto quando l'aggregazione esterna è abilitata.
Per sicurezza SEO, il renderer schema usa le recensioni prodotto native per i dati strutturati Product. Le recensioni aziendali importate possono essere mostrate agli acquirenti, ma i commenti della fonte le tengono esplicitamente fuori dal markup recensioni prodotto, salvo che il merchant abbia recensioni prodotto native.
No, i progetti inviati non vengono pubblicati automaticamente per impostazione predefinita. In PrestaShop l'impostazione auto_approve ha come predefinito 0, quindi i nuovi progetti vengono salvati come pending e le query della galleria pubblica usano lo stato progetto approved prima di mostrarli.
Il controller di invio è autenticato come cliente e richiede un token di sicurezza valido prima di creare un progetto. Valida il titolo del progetto, richiede almeno un'immagine caricata e applica il limite configurato sul numero di immagini prima di salvare il progetto. Le impostazioni immagine predefinite sono max_images=20 e max_image_size_mb=5.
Default: auto_approve=0
Submitted project status: pending
Public gallery status filter: approved- Se
auto_approveresta disattivato, il cliente viene reindirizzato a My Projects dopo l'invio e il progetto attende moderazione. - Se
auto_approveè abilitato, lo stesso flusso di invio salva il nuovo progetto con statoapproved. - La lista admin dei progetti supporta azioni massive di approvazione, rifiuto, evidenziazione ed eliminazione.
- Il controller progetto pubblico restituisce un 404 per progetti non approvati, salvo presenza di una sessione preview admin valida.
Per la maggior parte dei negozi, lasciare l'approvazione automatica disattivata è l'impostazione più sicura, perché titoli, descrizioni e foto inviati dai clienti vengono revisionati prima di apparire nella vetrina pubblica.
Sì, gli admin possono aggiungere pin prodotto alle immagini showcase. In PrestaShop ogni pin salva coordinate immagine x e y, un'etichetta e ID prodotto fallback ordinati, poi risolve un prodotto attivo e disponibile per la visualizzazione pubblica del progetto.
Il controller admin dei pin aggiunge, aggiorna, elimina e carica pin tramite JSON AJAX. Le coordinate devono essere tra 0 e 100 e sono arrotondate a due decimali. Gli ID prodotto fallback vengono normalizzati, deduplicati e salvati come JSON, con il primo ID scritto anche nel campo legacy id_product.
Pin fields: id_showcase_image, id_product, product_fallback_ids, x_percent, y_percent, label, position
Resolution order: first active in-stock product, then first active product- La ricerca prodotti admin restituisce prodotti attivi per nome, riferimento o ID prodotto, limitata a 20 risultati.
- Nella pagina progetto pubblica, i pin vengono arricchiti con URL prodotto, immagine di copertina e prezzo formattato.
- L'endpoint AJAX front dei pin può anche renderizzare il template product miniature del tema quando disponibile.
- Se tutti i prodotti fallback sono inattivi, il pin resta posizionato ma non risolve alcun prodotto.
Questo permette al merchant di trasformare un'immagine della galleria cliente in un lookbook acquistabile mantenendo una lista fallback per prodotti esauriti o disattivati.
Sì, i voti duplicati dello stesso cliente sullo stesso progetto sono impediti. In PrestaShop la tabella voti ha una chiave unica progetto-cliente e il modello aggiorna il voto esistente invece di inserire una nuova riga.
Sì. Una pagina progetto Customer Showcase non in preview può emettere JSON-LD quando il controller progetto ha dati sufficienti per costruirlo. Il controller raccoglie titolo progetto, meta description risolta della pagina, URL canonico del progetto, URL grandi delle immagini showcase e nome categoria, poi il template front stampa il JSON in uno script application/ld+json quando project_schema_json non è vuoto.
{"@context":"https://schema.org","@type":"ImageGallery","name":"Bathroom renovation","description":"Short project summary","url":"https://shop.example/showcase/bathroom-renovation","mainEntityOfPage":"https://shop.example/showcase/bathroom-renovation","image":["https://shop.example/img/showcase/large/photo.jpg"],"about":"Bathrooms"}Il tipo schema usato dal modulo è ImageGallery, quindi descrive la galleria del progetto cliente invece di dichiarare uno schema prodotto, servizio o recensione separato.
Il controller salta intenzionalmente lo schema in modalità preview: le pagine preview ricevono un valore project_schema_json vuoto e l'helper preview applica gestione noindex. Sulle pagine progetto normali, gli URL delle immagini grandi sono costruiti da img/showcase/large/ usando il dominio SSL del negozio e la base URI, quindi i dati strutturati puntano a URL immagine assoluti invece che ai file thumbnail o medium usati altrove nella pagina.
- Fonte della descrizione: il JSON-LD usa la meta description risolta della pagina. Questa è la meta description progetto salvata quando esiste; altrimenti il controller genera una descrizione customer-showcase basata sul titolo. La descrizione progetto ripulita e troncata è solo un fallback finale dentro
buildProjectSchema()se la meta description risolta è ancora vuota. - Campi opzionali:
imageè incluso solo quando esistono immagini progetto, eaboutsolo quando il progetto ha un nome categoria. - Sicurezza output: il JSON è generato con
json_encode(..., JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)e ripiega suTools::jsonEncode()se necessario, poi Smarty stampa quel JSON preparato senza filtri dentro lo script JSON-LD.
No. Il modulo implementa solo il codice Google Customer Reviews lato PrestaShop; non contiene codice che possa iscrivere, approvare o rendere un negozio idoneo in Google Merchant Center. Devi avere il programma Google Customer Reviews disponibile per il negozio in Merchant Center, un Merchant ID numerico e dati ordine che Google accetti per l'opt-in al sondaggio.
Quello che il modulo può controllare è l'implementazione storefront dopo che questi prerequisiti esistono: salva il Merchant ID, carica l'opt-in al sondaggio Google nella pagina di conferma ordine, invia ID ordine, email cliente, paese di consegna, data di consegna stimata e valori GTIN dei prodotti dall'ordine, e renderizza il badge valutazione nella posizione configurata.
Consegna del sondaggio, approvazione del programma, calcolo seller-rating e modalità di visualizzazione delle valutazioni nelle proprietà Google restano sotto il controllo di Google. Il modulo può far apparire il codice opt-in e badge, ma non può approvare il negozio o forzare Google a mostrare le valutazioni.
All'installazione il modulo parte disabilitato con MERCHANT_ID vuoto, posizione badge predefinita BOTTOM_RIGHT e lingua badge en. Il guard storefront richiede sia ENABLED sia un Merchant ID non vuoto, quindi un modulo installato ma non configurato non emetterà il codice opt-in o badge.
- Opt-in su conferma ordine: l'hook gira solo per un ordine caricato, usa l'email cliente dell'ordine, legge il paese di consegna dall'indirizzo di consegna, usa una data di consegna stimata semplice pari a oggi più sette giorni e passa
ean13di ogni prodotto ordinato come valore GTIN. - Badge: l'hook di chiusura body renderizza il badge valutazione Google con il merchant ID configurato e una delle posizioni supportate, come
BOTTOM_RIGHT,BOTTOM_LEFToINLINE. - Limite: se i prodotti non hanno valore EAN13, il modulo invia comunque la voce prodotto con GTIN vuoto; se Google accetta o usa quei dati prodotto viene gestito fuori da PrestaShop.
Non automaticamente. Il modulo fornisce anteprima e storico, ma la fonte non contiene un rollback con un clic che ripristini ogni prodotto al prezzo precedente. Prima di applicare un aggiornamento massivo, usa l'anteprima per controllare ID prodotto interessati, prezzo attuale, nuovo prezzo calcolato e differenza.
- Prima di applicare: esporta o fai backup degli ID prodotto interessati e del campo prezzo che stai modificando, soprattutto se aggiorni un ambito ampio come tutti i prodotti, una categoria o un produttore.
- Dopo l'applicazione: il modulo scrive una voce di log con formula, ambito, campo prezzo, numero di elementi interessati, dipendente e data.
- Se devi annullare: usa il log per identificare l'esecuzione, poi ripristina dal tuo backup/export. Applicare la formula inversa può essere rischioso perché arrotondamenti, modifiche prezzo successive e cambiamenti nell'ambito prodotto possono rendere il calcolo inverso diverso dai valori originali.
Per modifiche ad alto rischio, esegui l'anteprima, esporta lo stesso set di prodotti e applica l'aggiornamento in un periodo tranquillo, così eventuali correzioni possono essere fatte da valori sorgente noti.
L'anteprima e l'aggiornamento reale usano lo stesso helper di calcolo, quindi i numeri che vedi in anteprima si basano sulle stesse azioni formula che saranno poi applicate: increase_percent, decrease_percent, increase_fixed e decrease_fixed. Le diminuzioni percentuali e fisse sono limitate a zero, e i prezzi calcolati vengono arrotondati a sei decimali prima della scrittura.
increase_percent:10 => current price * 1.10; decrease_fixed:5 => max(0, current price - 5)Quando applicato, il modulo aggiorna sia product sia product_shop per il campo selezionato, e supporta solo price o wholesale_price. Il selettore ambito può puntare a tutti i prodotti attivi o ai prodotti attivi in una categoria, produttore o fornitore selezionato; i prodotti inattivi non vengono selezionati dalle query ambito.
L'hook consente URL che contengono module/mprpasswordprotect o module-mprpasswordprotect, e ritorna anche quando il parametro module della request è uguale al nome del modulo.
La classe config espone abilita protezione password, password, messaggio, bypass dipendente/maintenance e switch noindex tramite il form OptionsManager.
Sì. L'installazione crea una pagina meta non configurabile per module-mprpasswordprotect-gate con titolo Password Required e URL rewrite password.
Il controller gate imposta un flag errore e renderizza di nuovo lo stesso template password, che mostra il messaggio tradotto Incorrect password. Please try again..
No. Il controller di reinvio invia l'email di conferma ordine ricostruita e registra un messaggio privato, ma non chiama alcuna logica di cambio stato ordine.
Prima dell'invio, il controller AJAX richiede un ID ordine e un token modulo, li valida entrambi, carica ordine e cliente, poi chiama lo standard Mail::Send() di PrestaShop con il template order_conf da _PS_MAIL_DIR_ e l'ID negozio originale dell'ordine.
- Prodotti: ricostruisce righe prodotto sia HTML sia testo semplice da
$order->getProducts(), includendo nome prodotto, riferimento opzionale, quantità, prezzo unitario IVA inclusa e prezzo totale IVA inclusa. - Indirizzi: i blocchi consegna e fatturazione vengono generati con
AddressFormat::generateAddress(), con fallback assemblato da azienda, nome, via, CAP e città se la formattazione indirizzo fallisce. - Audit trail: dopo un reinvio riuscito aggiunge un messaggio ordine privato e scrive una voce di log PrestaShop; se l'invio email fallisce, restituisce un errore JSON invece di cambiare lo stato ordine.
Il modulo invia il template standard PrestaShop order_conf tramite Mail::Send, dopo aver ricostruito righe prodotto, indirizzi, totali, corriere e valori pagamento dall'ordine.
Dopo un invio riuscito, il modulo crea un messaggio ordine privato che indica che la conferma è stata reinviata, includendo email destinatario e timestamp.
Il modulo deve essere abilitato e PHONE_NUMBER deve essere impostato. Il validatore della configurazione obbligatoria accetta solo cifre e un segno più iniziale opzionale, per esempio +1234567890.
Sì. Il trait chat condiviso supporta i filtri pagina all, product, category e checkout tramite l'impostazione PAGES.
No. Il template renderizzato crea un normale link a Signal e usa CSS locale del modulo più SVG inline per il pulsante. Nel template hook non c'è alcun loader JavaScript esterno di Signal.
Se DELAY è maggiore di zero, il template nasconde inizialmente il widget e usa un timeout per mostrarlo dopo il numero di secondi configurato.
Il modulo salva la scelta di visualizzazione del visitatore nel cookie leggero mpr_tax_display e, presto nel front controller, prepara la cache di visualizzazione prezzo gruppo di PrestaShop in modo che i calcoli prezzo prodotto renderizzino IVA inclusa o esclusa per quella richiesta. Non aggiorna carrelli, ordini, regole fiscali, fatture o gruppi clienti nel database.
Nelle pagine prodotto/listing inietta anche dati nascosti .mpr-tax-prices con prezzi IVA inclusa e IVA esclusa preformattati, così JavaScript può sostituire subito i prezzi visibili. Se una pagina non ha dati prezzo prodotto iniettati, come alcune pagine carrello o checkout, lo script salva la preferenza e ricarica la pagina affinché PrestaShop la renderizzi con la modalità di visualizzazione scelta.
Il totale checkout e l'importo IVA sono ancora calcolati da PrestaShop da carrello, indirizzo, regole fiscali e normale flusso checkout. Questo modulo influisce su preferenza di visualizzazione ed etichette prezzo, non sul calcolo fiscale.
Abilita il modulo per renderizzare un pulsante fisso torna su nel front office PrestaShop. Il codice emette il pulsante dagli hook footer/body-closing, evita rendering duplicati quando entrambi gli hook sono disponibili e include CSS e JavaScript necessari per il pulsante.
Dopo l'installazione i default sono abilitato, mostra dopo 300 pixel, stile circle e posizione right. Il modulo registra displayFooter, displayFooterAfter e displayBeforeBodyClosingTag; qualunque hook supportato venga renderizzato per primo dal tema emetterà il pulsante, e le chiamate hook successive restituiranno stringa vuota perché buttonRendered è già impostato.
Il template crea un singolo pulsante fisso con ID mprb2t-btn, label/title accessibile, una freccia verso l'alto SVG inline e CSS/JavaScript inline. Questo modulo non include regole per prodotto, categoria o pagina, quindi abilitarlo rende il pulsante disponibile ovunque il tema esegua uno di quegli hook footer/body-closing.
Sì, puoi impostare la distanza di scroll prima che il pulsante appaia. La configurazione PrestaShop salva un valore Show After in pixel, e il JavaScript del front office confronta quella soglia con window.pageYOffset prima di aggiungere o rimuovere la classe pulsante visibile.
La soglia predefinita è 300 pixel, e il campo admin viene salvato come SHOW_AFTER. Il valore viene assegnato a Smarty come mprb2t_show_after e diventa la variabile JavaScript threshold nel template.
if (window.pageYOffset > threshold) { btn.classList.add('mprb2t-visible'); } else { btn.classList.remove('mprb2t-visible'); }Il listener di scroll è registrato come passive e toggleBtn() viene eseguito anche una volta subito dopo il caricamento dello script, quindi lo stato del pulsante è corretto anche quando un acquirente arriva su una pagina con anchor o torna a una posizione già scrollata.
Sì, il modulo supporta le opzioni di stile presenti nella sua configurazione: forma cerchio o quadrato e posizione a sinistra o destra dello schermo. Il template PrestaShop applica quei valori al CSS inline; il codice non include un color picker o regole di targeting per pagina.
I default installati sono STYLE=circle e POSITION=right. Nel template, POSITION=left scrive left: 30px; qualsiasi altro valore configurato segue il ramo destro e scrive right: 30px. Per la forma, STYLE=circle scrive border-radius: 50%, mentre l'opzione quadrata usa un piccolo raggio 6px.
- Dimensioni fisse: il pulsante è 48 per 48 pixel, fisso in basso nella viewport e usa
z-index: 9999. - Colori integrati: il template usa sfondo scuro, icona bianca e stato hover più scuro. Questi valori sono hard-coded nel template attuale.
- Limite pratico: nella classe di configurazione non esiste impostazione per scelta icona, posizione per dispositivo, durata animazione o colori personalizzati.
Sì, cliccando il pulsante la pagina scorre fluidamente verso l'alto. Lo script del front office PrestaShop ascolta il click sul pulsante, impedisce l'azione predefinita e chiama window.scrollTo con top impostato a 0 e behavior impostato a smooth.
Il click handler è piccolo e diretto: è collegato al pulsante generato mprb2t-btn, chiama e.preventDefault() e poi chiede al browser di scorrere verso l'alto usando lo smooth scrolling nativo.
window.scrollTo({ top: 0, behavior: 'smooth' });Poiché il modulo usa il comportamento nativo scrollTo del browser invece di un loop di animazione personalizzato, resta leggero e non salva alcuno stato di scroll. Il pulsante diventa visibile solo dopo il superamento della soglia configurata; cliccarlo non ricarica la pagina e non cambia l'URL.
Usa MPR Compare per aggiungere a PrestaShop una lista di confronto lato client. Gli ID prodotto selezionati vengono salvati nel localStorage del browser sotto la chiave mprcompare, mentre il modulo interroga i dettagli prodotto tramite AJAX solo quando la pagina confronto o le miniature flottanti hanno bisogno dei dati.
Il commento header del modulo descrive il design come zero archiviazione database e zero cookie per l'interazione sulle pagine listing. Gli hook product-list e product-page emettono pulsanti statici con attributo data-id-product; lo script browser aggiunge o rimuove quegli ID da localStorage e aggiorna localmente stato pulsanti, contatori e barra flottante.
Il server viene coinvolto solo quando servono dati prodotto reali. La pagina confronto legge gli ID da localStorage e li invia in POST al front controller actions con action=getProducts, mentre le miniature flottanti chiamano action=getProductImage. Svuotare la lista confronto salva semplicemente un array vuoto in localStorage.
La tabella confronto può mostrare nome prodotto, URL, immagine di copertina, prezzo attuale, vecchio prezzo, descrizione breve, riferimento, produttore, peso, stato stock, caratteristiche, condizione ed EAN13 quando quei valori esistono. Il controller AJAX salta i prodotti PrestaShop inattivi.
I dati provengono da oggetti Product caricati nella lingua e nel negozio correnti. I prezzi sono formattati da Product::getPriceStatic() con IVA abilitata; il vecchio prezzo viene restituito solo quando il prezzo senza riduzione è maggiore del prezzo attuale. Le immagini di copertina usano medium_default per la tabella confronto e cart_default per l'endpoint miniature flottanti.
- Caratteristiche: il controller chiama
getFrontFeatures()e restituisce ogni coppia nome/valore caratteristica, mentre lo script front raggruppa i nomi caratteristica unici in righe di confronto. - Disponibilità: lo stato stock viene restituito da
Product::getQuantity($idProduct) > 0, quindi è un semplice indicatore disponibile/non disponibile. - Dati mancanti: campi opzionali come produttore, riferimento, peso, EAN13 e vecchio prezzo sono vuoti o omessi nella tabella quando PrestaShop non ha un valore per essi.
Sì, la dimensione massima del confronto è configurabile. L'impostazione MAX_ITEMS ha come predefinito quattro all'installazione, lo script front rifiuta di aggiungere altri elementi una volta raggiunto il limite e l'endpoint prodotto AJAX tronca gli ID in ingresso allo stesso massimo configurato.
All'installazione, MAX_ITEMS viene creato con valore 4; il controller admin lo salva con minimo 1. Quel valore viene inviato al browser in mprCompareConfig.maxItems e assegnato anche al template della pagina confronto come maxItems.
var max = config.maxItems || 4;L'applicazione del duplicato è anche lato client: se il prodotto è già in localStorage, la funzione di aggiunta ritorna senza aggiungerlo di nuovo. L'endpoint AJAX tronca comunque la lista ID richiesta al massimo configurato, quindi una richiesta modificata manualmente non può far caricare alla pagina confronto più prodotti del limite configurato.
Sì, aggiunge controlli di confronto tramite hook PrestaShop. Il modulo renderizza pulsanti su liste prodotto e pagine prodotto, un contatore di navigazione e una barra confronto flottante opzionale con miniature prodotto, controlli di rimozione e link alla pagina confronto.
Per PrestaShop 1.7 e versioni più nuove, il modulo registra hook media, pagina prodotto, navigazione e chiusura body; per i vecchi temi 1.6 usa gli hook legacy header, product button, nav e footer. I pulsanti nei listing prodotto sono link statici con js-mprcompare-toggle, i controlli nella pagina prodotto sono pulsanti, ed entrambi usano lo stesso valore data-id-product per il gestore lista JavaScript.
La barra flottante è controllata dall'impostazione SHOW_FLOATING, abilitata per impostazione predefinita. Quando ci sono prodotti selezionati, lo script mostra la barra, carica dati miniatura tramite AJAX se non sono già in cache, renderizza pulsanti di rimozione per i singoli prodotti e mantiene sincronizzati il contatore header e il contatore flottante con il numero di ID in localStorage.
I clienti possono inviare richieste di funzionalità dalla scheda della pagina prodotto quando il modulo e la visualizzazione prodotto sono abilitati. In PrestaShop il controller AJAX valida token, prodotto, titolo, descrizione e campi identità ospite, poi applica un rate limit agli invii per prodotto e IP.
La scheda prodotto viene aggiunta solo quando ENABLED e SHOW_ON_PRODUCT sono attivi e il modulo riesce a risolvere l'ID prodotto. La scheda parte come lista riepilogo/lazy, poi lo script front richiede la prima pagina di elementi quando la scheda diventa visibile, usando il valore configurato REQUESTS_PER_PAGE, che ha come predefinito 10.
- Sicurezza: le azioni di scrittura richiedono un token CSRF da
Tools::getToken(false). JavaScript recupera un token conaction=getTokense il markup iniziale della scheda non ne contiene già uno. - Validazione: il titolo deve avere almeno 5 caratteri, la descrizione almeno 10, gli ospiti devono fornire nome ed email valida, e i clienti loggati usano automaticamente nome ed email dell'account.
- Rate limit: il controller consente al massimo 3 invii per lo stesso prodotto e indirizzo IP nel giorno precedente.
- Dati salvati: la richiesta registra prodotto, identità cliente o ospite, testo descrizione ripulito, negozio, lingua, indirizzo IP, stato, timestamp e un conteggio voti iniziale di 1.
Sì, le richieste possono richiedere login cliente e approvazione admin. In PrestaShop REQUIRE_LOGIN blocca l'invio da ospite, REQUIRE_APPROVAL salva le nuove richieste come submitted, e le liste pubbliche nascondono gli elementi submitted ai non autori finché non passano a uno stato pubblico.
I default sono adatti ai merchant: REQUIRE_LOGIN è disattivato, ma REQUIRE_APPROVAL è attivo. Con l'approvazione abilitata, il controller salva i nuovi elementi come submitted; senza approvazione, i nuovi elementi partono come under_review.
La visibilità è gestita nel model, non solo nel template. Le normali liste prodotto escludono sia elementi declined sia submitted, poi riaggiungono gli elementi submitted solo quando il viewer corrente corrisponde all'autore per ID cliente o indirizzo IP. Anche la query roadmap pubblica indicizzabile esclude submitted e declined, quindi le idee pendenti non diventano contenuto SEO pubblico.
Per l'autore, JavaScript può mostrare un avviso di attesa: Your request is pending review and only visible to you. Questo rende chiaro il flusso di approvazione senza esporre richieste non revisionate ad altri acquirenti.
Sì, il voto può essere abilitato e il voto ospite può essere consentito o bloccato. In PrestaShop l'endpoint voto attiva/disattiva un voto per richiesta, usa ID cliente o tracciamento basato su IP e restituisce un requisito di login quando il voto ospite è disabilitato.
Il voto è attivo per impostazione predefinita, mentre il voto ospite è disattivato per impostazione predefinita. Quando il voto ospite è disabilitato e il visitatore non è loggato, la risposta AJAX include require_login, e lo script front reindirizza al link di accesso quando presente.
L'archiviazione dei voti è una tabella separata mprfeaturerequest_vote. I votanti loggati sono associati tramite id_customer; gli ospiti, quando consentiti, sono associati per indirizzo IP. Chiamare di nuovo l'endpoint disattiva il voto eliminando la riga esistente, mentre un nuovo voto inserisce una riga e marca lo stato voted restituito come true.
Dopo ogni toggle, il modulo ricalcola il contatore della richiesta incrementando o decrementando vote_count con un aggiornamento database che usa GREATEST(0, ...), quindi il conteggio mostrato non può scendere sotto zero. Anche le richieste appena inviate ricevono un voto automatico dell'autore, motivo per cui il conteggio iniziale parte da 1.
Sì, l’hub principale della roadmap può essere indicizzabile quando il modulo Feature Requests è attivo, la pagina roadmap è attiva e l’impostazione INDEX_ROADMAP_PAGE consente l’indicizzazione. Le pagine di dettaglio, le pagine roadmap specifiche per prodotto e gli endpoint AJAX vengono volutamente tenuti fuori dall’indice.
- URL pulito dell’hub roadmap, per esempio
/feature-requests: il tipo di paginaroadmapusa la policy SEO del modulo. Quando l’indicizzazione è attiva, robots viene risolto inindex, follow. - Hub roadmap con parametri di filtro/ordinamento supportati, per esempio
/feature-requests?status=planned: il controller esegue un redirect 301 per questi (status,sort,view,search,page) verso l’hub canonico/feature-requests, così i duplicati non vengono mai indicizzati. Qualsiasi altra query string non reindirizzata viene renderizzata comenoindex, follow. - Pagina specifica per prodotto, per esempio
/feature-requests/module/my-product: il tipo di paginamoduleè configurato come non indicizzabile, quindi robots viene risolto innoindex, follow. - Pagina dettaglio richiesta, per esempio
/feature-requests/some-request: il tipo di paginadetailè configurato come non indicizzabile, quindi robots viene risolto innoindex, follow. Le risposte 404 delle pagine di dettaglio inviano inoltreX-Robots-Tag: noindex, nofollow, noarchive. - Endpoint AJAX, per esempio
module/mprfeaturerequest/ajax: il controller inviaX-Robots-Tag: noindex, nofollow, noarchive.
L’hook della sitemap segue la stessa logica: aggiunge l’URL dell’hub roadmap solo quando il modulo, la visualizzazione della roadmap, l’inclusione nella sitemap e la policy SEO lo consentono tutti.
Il percorso codice è limitato al rendering del widget JivoChat da displayBeforeBodyClosingTag. Controlla che il modulo sia abilitato, che esista un WIDGET_ID, che la pagina corrente corrisponda al filtro pagina configurato e che la visualizzazione mobile sia consentita quando il visitatore è su mobile.
Quando renderizza, il template inietta lo script esterno JivoChat da //code.jivosite.com/widget/{widget_id}, opzionalmente dopo il ritardo configurato. Se PASS_USER_DATA è abilitato e il cliente è loggato, definisce jivo_onLoadCallback() e chiama jivo_api.setContactInfo() con nome ed email del cliente.
In questa fonte non c'è tabella, model o controller del modulo per messaggi o trascrizioni chat. Rimuovere o disabilitare il modulo PrestaShop interrompe l'incorporamento del widget, ma non esporta, elimina o gestisce lo storico conversazioni conservato da JivoChat.
hookPaymentOptions() mostra Pay by Invoice solo quando ogni controllo di idoneità passa. Il modulo deve essere attivo, l'impostazione del modulo deve essere abilitata, il carrello deve appartenere a un cliente loggato e l'oggetto cliente deve caricarsi correttamente.
- Controllo cliente: carrelli ospite e record cliente non validi non restituiscono alcuna opzione di pagamento.
- Controllo gruppo: il cliente deve appartenere ad almeno un gruppo assegnato a un termine di pagamento attivo.
- Controllo termine: vengono restituiti solo termini attivi collegati tramite
mpr_payment_term_group, ordinati per posizione e giorni. - Controllo credito: il modulo prende il limite credito più alto dai gruppi del cliente;
0significa illimitato. Altrimenti ordini differiti non pagati più totale carrello corrente devono restare entro il limite. - Controllo validazione: il front validation controller ripete il controllo termine e credito prima di creare l'ordine, quindi un'opzione checkout obsoleta non può aggirare le regole.
Se un controllo fallisce, il modulo restituisce una lista opzioni pagamento vuota e PrestaShop semplicemente non offre Pay by Invoice per quel carrello.
I termini disponibili sono calcolati dai gruppi cliente sul carrello corrente. Il servizio interroga i termini attivi collegati tramite mpr_payment_term_group, usa la lingua corrente per nome e descrizione del termine e ordina il risultato per position e poi days. I termini predefiniti creati all'installazione includono Due on Receipt più Net 15, Net 30, Net 60 e Net 90.
Il template checkout renderizza poi ogni termine disponibile come opzione radio, con il primo termine selezionato, il suo badge colore, testo giorni scadenza e descrizione opzionale. Se il limite credito non è illimitato, mostra anche credito disponibile e importo differito in sospeso prima della lista termini.
Quando il cliente invia l'opzione di pagamento, il validation controller legge il mpr_pt_term_id selezionato, ricalcola il totale carrello, richiama canPlaceDeferredOrder(), crea l'ordine PrestaShop nello stato configurato OS_AWAITING, con fallback a bankwire se mancante, e poi crea un record mpr_deferred_order con importo, cliente, negozio e data scadenza basata sui giorni del termine selezionato.
La data di scadenza viene calcolata aggiungendo il numero di giorni del termine selezionato alla data in cui viene creato l'ordine differito. I termini installati di default includono Due on Receipt / Net 0, Net 15, Net 30, Net 60 e Net 90.
- Se l'ordine viene creato il
2026-06-17con Net 0, la data di scadenza è2026-06-17. - Se l'ordine viene creato il
2026-06-17con Net 15, la data di scadenza è2026-07-02. - Se l'ordine viene creato il
2026-06-17con Net 30, la data di scadenza è2026-07-17.
Il modulo salva il risultato come data in formato Y-m-d, non come timestamp con ora del giorno. Il calcolo usa la data runtime corrente del server/negozio PHP quando viene creato l'ordine differito, quindi gli ordini effettuati vicino a mezzanotte seguono il confine data lato server invece dell'orologio locale del cliente. I cambi di ora legale non aggiungono un'ora alla data di scadenza salvata, ma possono contare indirettamente se l'ordine viene creato vicino a un cambio data.
Al checkout il cliente seleziona un termine di pagamento tramite mpr_pt_term_id. Il modulo valida che il termine sia attivo, appartenga a uno dei gruppi del cliente e rientri nel limite credito effettivo del cliente prima di creare l'ordine PrestaShop. Solo dopo la validazione dell'ordine crea il record pagamento differito con il termine selezionato, il totale ordine IVA inclusa e la data di scadenza calcolata.
$dueDate = date('Y-m-d', strtotime('+' . (int) $term->days . ' days'));Il valore salvato viene copiato in mpr_deferred_order.due_date al momento dell'ordine. Cambiare in seguito il numero di giorni di un termine di pagamento non ricalcola le date di scadenza degli ordini già esistenti. I controlli sugli scaduti confrontano la data di scadenza salvata con la data server corrente, quindi una fattura non pagata in scadenza oggi è ancora in scadenza oggi; diventa scaduta solo dopo che quella data è passata.
Il valore del limite credito è per gruppo cliente, non per singolo cliente. Il modulo salva i limiti in mpr_pt_credit_limit, dove id_group è la chiave primaria, e anche i termini di pagamento sono assegnati ai gruppi tramite mpr_payment_term_group.
Per un cliente in più gruppi, il servizio recupera tutti i gruppi del cliente e usa MAX(credit_limit) tra essi. Esempio: se Ana appartiene a Retail senza limite configurato, B2B Silver con 1000.00 e B2B Gold con 2500.00, il suo limite credito effettivo è 2500.00.
Un limite configurato di 0 viene trattato come illimitato dal servizio checkout. Quando esiste un limite reale, il modulo sottrae gli ordini differiti in sospeso di quel cliente nel negozio corrente e mostra i termini Pay by Invoice solo quando outstanding + cart total resta entro il limite gruppo effettivo.
Limiti di credito e disponibilità dei termini sono collegati ma separati. Assegnare un limite a un gruppo non rende da solo disponibile ogni termine di pagamento; il termine deve anche essere attivo e assegnato ad almeno uno dei gruppi del cliente. Allo stesso modo, assegnare un termine a un gruppo senza un limite credito reale significa che il gruppo può usare il termine finché il limite effettivo risulta illimitato o un altro gruppo fornisce limite sufficiente.
L'importo in sospeso è calcolato dalle righe non pagate in mpr_deferred_order per lo stesso cliente e negozio corrente. Le righe già marcate pagate sono escluse, e il totale carrello usato per il nuovo ordine è il totale ordine IVA inclusa. Se il cliente supera il limite effettivo, il servizio checkout rimuove tutti i termini differiti dalle opzioni pagamento disponibili e il validation controller rifiuta un pagamento differito inviato anche se qualcuno posta manualmente il termine.
L'installazione crea uno stato ordine chiamato Awaiting Deferred Payment, salva il suo ID in OS_AWAITING, e il validation controller usa quello stato quando chiama validateOrder() per ordini Pay by Invoice. Se lo stato salvato manca, il controller ripiega sullo stato bonifico bancario di PrestaShop.
logable = truesignifica che PrestaShop tratta l'ordine come un ordine valido inserito per flussi storico ordine e statistiche, anche se il pagamento è ancora in sospeso.invoice = trueepdf_invoice = truesignificano che la generazione fattura è abilitata per lo stato ordine differito.paid = falsesignifica che lo stato ordine non marca l'ordine come pagato; il modulo traccia il saldo separatamente inmpr_deferred_order.is_paid.
Quando il record differito viene creato, is_paid parte da 0. Il metodo markAsPaid() del model deferred-order imposta poi is_paid a 1 e registra paid_date, senza cambiare il significato dello stato ordine iniziale.
Lo stato installato è di proprietà del modulo, usa l'etichetta Awaiting Deferred Payment in ogni lingua ed è creato con send_email = false, unremovable = false e un valore colore blu. La pagina payment-return può quindi mostrare il termine di pagamento selezionato, l'importo dovuto e la data di scadenza mentre l'ordine resta non pagato dal punto di vista dello stato pagamento PrestaShop.
C'è un follow-up importante nel back office: quando un admin marca un ordine differito come pagato tramite il controller deferred-orders del modulo, il modulo aggiorna prima mpr_deferred_order. Se l'ordine PrestaShop collegato è ancora nello stato awaiting del modulo e lo stato pagato standard PS_OS_PAYMENT esiste, sposta anche l'ordine PrestaShop a quello stato pagato. Se l'ordine è già stato spostato in un altro stato, il modulo non sovrascrive ciecamente quello stato.
Una notifica reale viene costruita da ordini PrestaShop validi nello shop corrente, limitati dall'età massima ordine configurata e da regole include o exclude prodotto. Usa il prodotto ordinato, la città di consegna e il nome mascherato.
No. Le notifiche di vendita generate non sono ordini PrestaShop reali e non vengono scritte nella tabella ordini. Il modulo ha tre modalità di notifica:
- Solo ordini reali: mostra ordini validi recenti da PrestaShop, usando nomi cliente mascherati, città, dati prodotto, immagine prodotto, prezzo e tempo relativo.
- Solo generate: costruisce notifiche dall'aspetto realistico da prodotti catalogo attivi più pool di nomi e città configurati o integrati. Sono messaggi di visualizzazione, non ordini.
- Mista: usa prima notifiche da ordini reali e riempie gli slot rimanenti con notifiche generate quando non ci sono abbastanza ordini reali recenti.
La modalità installata di default è mixed. In modalità mista, se le notifiche reali sono meno del numero richiesto, il codice genera automaticamente riempitivi; non c'è un toggle separato per il riempimento generato dentro la modalità mista. Se ogni notifica deve corrispondere a un acquisto reale, passa il modulo alla modalità Real orders only e assicurati che età massima ordine e filtri prodotto siano abbastanza ampi da restituire ordini recenti.
Le notifiche reali vengono caricate da ordini PrestaShop validi nel negozio corrente, limitate dall'età massima ordine configurata. L'età massima predefinita è 72 ore. Le liste prodotti include ed exclude vengono applicate prima che la notifica sia restituita, e il nome cliente mostrato è mascherato invece di mostrare il nome completo.
Le notifiche generate sono costruite da prodotti attivi nel catalogo. Il modulo seleziona dati prodotto, calcola un prezzo di visualizzazione, prova a usare l'immagine di copertina prodotto, sceglie nome e città dai suoi pool e crea un tempo relativo come un numero recente di minuti fa. Questo avviene al momento della visualizzazione tramite l'endpoint notifiche del front office; non crea carrelli, ordini, clienti, dettagli ordine, pagamenti o righe storico ordine.
Il toast front-end etichetta le notifiche come Verified Purchase nel template di visualizzazione, incluse le notifiche generate. Quell'etichetta fa parte della presentazione del pop-up, non è prova che una notifica generata provenga da un ordine reale. Per negozi con requisiti rigidi di conformità o audit, usa la modalità Real orders only.
Sì. La configurazione accetta liste di ID prodotto include ed exclude separate da virgole. Questi filtri vengono applicati sia nella selezione degli articoli ordine reali sia nella selezione dei prodotti per notifiche generate.
Il front controller notifications restituisce JSON con header risposta noindex quando il modulo è attivo. Lo script browser recupera quel feed e renderizza le notifiche toast in base alle impostazioni di timing.
No, il modulo crea il punto di ingresso storefront verso Telegram. Dopo il click dell'acquirente, Telegram gestisce la conversazione nell'app Telegram o nell'esperienza web. Questo mantiene il modulo semplice ed evita di creare una seconda inbox messaggi dentro PrestaShop.
Il widget renderizza un link Telegram fisso usando lo username configurato. Se è configurato un messaggio precompilato opzionale, il modulo lo aggiunge all'URL https://t.me/... e sostituisce {url} con l'URL della pagina corrente prima di mandare l'acquirente a Telegram. Il browser apre Telegram in una nuova scheda o nel contesto app; la chat stessa non è incorporata nella pagina PrestaShop.
Il modulo non salva messaggi Telegram in arrivo, non crea thread del servizio clienti PrestaShop e non esegue un webhook Telegram o una inbox bot nel back office. Storico conversazioni, risposte, allegati e notifiche restano in Telegram.
La visualizzazione è controllata dalle impostazioni del modulo. Il widget viene renderizzato solo quando il modulo è abilitato e c'è uno username Telegram valido. Puoi anche controllare posizione storefront, stile icona o barra, testo call-to-action, colore, dimensione, margine, tooltip, animazione, ritardo di visualizzazione, visibilità mobile e ambito pagina come tutte le pagine, pagine prodotto, pagine categoria o pagine checkout.
Sì, Weekly Flash Sale può pubblicare automaticamente, ma solo tramite moduli publisher compatibili. Il task cerca mprinstagramintegration con publishToInstagram(), mprfacebookpostsintegration con publishToFacebook() e mprxintegration con publishToX(). Costruisce ogni caption dai template Instagram, Facebook e X usando placeholder come {product_name}, {original_price}, {sale_price}, {discount}, {code} e {product_url}.
ok:...significa che il publisher ha restituito un risultato piattaforma, quindi l'invio è stato trattato come riuscito.skippedsignifica che il modulo piattaforma manca o è inattivo, il metodo publish richiesto manca, oppure la caption della piattaforma è vuota.FAILsignifica che il metodo publish ha restituito false.FAIL:messagesignifica che il publisher ha lanciato un'eccezione, e il messaggio dopo il prefisso viene salvato per diagnosi.dry-runè uno stato complessivo di esecuzione test. Il task ritorna prima di creare la regola carrello, pubblicare o scrivere lo storico vendita.disabledviene restituito quando weekly sale è disabilitato e l'esecuzione non è dry run.
Per le esecuzioni reali, i risultati per piattaforma vengono salvati in mprweeklysale_history come ig_result, fb_result e x_result, insieme a prodotto, sconto, codice generato e date vendita.
Il post automatico fa parte del task flash-sale. Un'esecuzione reale prima sceglie un prodotto attivo che non è stato usato di recente secondo la finestra storico configurata, crea una regola carrello per lo sconto, poi chiama i moduli social publisher disponibili. La configurazione predefinita usa uno sconto 50%, durata 24 ore, prefisso codice FLASH, finestra storico 12 settimane e pianificazione settimanale il mercoledì alle 08:00.
La regola carrello generata è specifica per prodotto, attiva, evidenziata, limitata a quantità 1000 e quantità per utente 1. Le caption sono costruite dopo che prezzo vendita, codice sconto, URL prodotto e immagine prodotto sono stati preparati. La caption X viene accorciata per rispettare il limite della piattaforma, e anche la caption Instagram viene limitata prima della pubblicazione.
La pubblicazione automatica quindi richiede più che abilitare Weekly Flash Sale. Il modulo di integrazione corrispondente deve essere installato, attivo ed esporre il metodo publish previsto, e il task cron pianificato deve girare con il token corretto. Se un modulo piattaforma manca, la vendita può comunque essere creata e la piattaforma mancante viene registrata come skipped.
Usa lo slider homepage del modulo per renderizzare un hero carousel sull'hook displayHome di PrestaShop. Il codice risolve lo slider predefinito tramite l'identificatore homepage, carica i suoi banner attivi, unisce i campi testo della lingua/negozio corrente quando disponibili ed emette il carousel solo quando esistono immagini utilizzabili.
All'installazione il modulo inserisce uno slider attivo con identificatore homepage. Per mostrare un hero in homepage, crea o modifica banner per quello slider, carica almeno un'immagine valida, mantieni il banner attivo e assicurati che il modulo resti agganciato a displayHome. L'hook chiama lo stesso renderer widget con slider = homepage, quindi l'output homepage segue le stesse regole dei widget incorporati.
La query del carousel carica banner attivi assegnati allo slider selezionato e li ordina per posizione e poi per ID banner. La riga lingua/negozio è unita con un LEFT JOIN, quindi titolo, sottotitolo e testo CTA vengono presi dalla lingua e negozio correnti quando quella riga esiste, ma un banner non viene rifiutato solo perché manca la riga testo lingua/negozio. Questo significa che un banner solo immagine non tradotto può comunque renderizzarsi.
Se nessun banner attivo ha un file immagine desktop o mobile esistente, il modulo restituisce una stringa vuota invece di renderizzare un'area hero rotta.
Il comportamento di visualizzazione deriva dalla configurazione del modulo. La velocità predefinita è 5000 millisecondi, autoplay è abilitato, controlli e indicatori sono abilitati, la transizione è slide, lo stile Ken Burns è abilitato e l'altezza predefinita è 500. Il template assegna anche eager loading e fetch priority al primo slide, mentre gli slide successivi sono lazy-loaded per ridurre il peso iniziale della pagina.
Sì, ogni banner può salvare un'immagine desktop e un'immagine mobile opzionale per PrestaShop. Il template carousel emette sorgenti picture responsive, usa l'immagine mobile su schermi piccoli e aggiunge sorgenti AVIF o WebP quando esistono file corrispondenti accanto alle immagini configurate.
L'immagine mobile è destinata agli schermi stretti ed è emessa con una condizione media max-width: 767px. L'immagine desktop resta la normale immagine fallback dello slide, quindi è meglio caricare un'immagine desktop per ogni banner e aggiungere un'immagine mobile quando il crop deve cambiare per i telefoni.
Il modulo non converte immagini durante il rendering. Controlla se file fratelli con lo stesso nome base ed estensioni .avif o .webp esistono già, poi aggiunge quelle sorgenti quando presenti. Se quei file ottimizzati non sono su disco, il carousel ripiega sui percorsi originali delle immagini caricate.
Un banner senza file immagine desktop né mobile viene saltato prima del rendering. Questo evita slide carousel vuoti. Se esiste solo un'immagine mobile, il banner può comunque passare il controllo file, ma i visitatori desktop potrebbero non avere un fallback desktop adeguato, quindi la configurazione merchant dovrebbe trattare l'immagine desktop come base e l'immagine mobile come override responsive opzionale.
Sì, il modulo implementa il rendering widget PrestaShop per slider fuori dalla homepage. Un template può chiamare il widget con un slider_id numerico o con un identificatore slider salvato nella tabella slider del modulo.
{widget name='mprbannerrevolution' slider_id=2} {widget name='mprbannerrevolution' slider='homepage'} {widget name='mprbannerrevolution' slider='landing-sale'}Se non viene passato alcun parametro, il modulo risolve lo slider predefinito homepage. Il codice non assegna automaticamente slider alle pagine CMS; risolve lo slider dai parametri widget, poi renderizza solo banner attivi per quello slider che hanno un'immagine desktop o mobile disponibile.
La versione con identificatore funziona solo per slider attivi, perché la lookup usa il controllo active della tabella slider. Il percorso numerico slider_id carica esattamente quell'ID slider. Dopo la risoluzione dello slider, viene usata la stessa pipeline della homepage: lingua corrente, negozio corrente, banner attivi, controlli esistenza file, sorgenti responsive, impostazioni carousel e template carousel condiviso.
C'è un commento codice che menziona slider_cms, ma il resolver implementato gestisce slider_id, slider e lo slider homepage predefinito. Per pagine CMS o landing page, usa una chiamata widget esplicita nel contenuto pagina o nel template tema invece di aspettarti che il modulo mappi automaticamente le pagine CMS agli slider.
Puoi configurare il contenuto banner reale usato dal carousel PrestaShop: titolo tradotto, sottotitolo, testo CTA e URL CTA. Ogni banner salva anche colore overlay, opacità overlay, allineamento testo, stato attivo, posizione, immagine desktop e immagine mobile opzionale.
I campi contenuto sono multilingua, quindi titolo banner, sottotitolo, testo pulsante e URL pulsante possono variare per lingua. Il titolo viene usato come heading principale dello slide, il sottotitolo appare sotto e il pulsante CTA appare solo quando sia testo CTA sia URL CTA sono presenti per quella lingua.
I controlli visuali sono salvati con il banner stesso. Il colore overlay predefinito è nero, l'opacità overlay è un valore percentuale e l'allineamento testo supporta left, center e right. Il flag attivo controlla se il banner può apparire, e il valore posizione controlla l'ordinamento dentro lo slider selezionato.
I campi immagine sono i media reali usati dal carousel. L'immagine desktop è l'immagine principale dello slide, e l'immagine mobile opzionale offre ai telefoni un crop diverso. Il flusso di upload admin accetta formati web comuni come JPG, PNG, WebP e GIF, mentre il renderer front office può aggiungere anche sorgenti AVIF o WebP se esistono file ottimizzati corrispondenti su disco.
I campi testo vuoti sono consentiti. Un banner può quindi essere usato come slide puramente visuale, hero con testo sopra immagine o slide promozionale con pulsante, in base ai campi tradotti compilati.
Sì, i messaggi inviati vengono salvati in PrestaShop. Il processor crea un record submission con stato, flag spam, indirizzo IP, user agent, contesto cliente o ospite, poi salva ogni valore campo inviato nella tabella submission-data del modulo.
La riga principale submission viene salvata in mprcontactform_submission. Include ID form, ID negozio, ID cliente quando il visitatore è loggato, nome cliente, email cliente, indirizzo IP, user agent, stato, flag spam, motivo spam e data creazione. Gli invii ospite vengono salvati con ID cliente 0.
Le singole risposte sono salvate separatamente in mprcontactform_submission_data. Ogni riga salva ID submission, ID campo, nome campo e valore campo inviato. Questo permette al modulo di mantenere separati l'intestazione submission e i campi dinamici del form, cosa importante perché ogni form può avere un set di campi diverso.
Il processor valida il form attivo e i suoi campi attivi prima del salvataggio. Campi obbligatori, formato email, formato telefono, formato URL, campi numerici, opzioni select, validatori personalizzati e checkbox GDPR possono tutti rifiutare l'invio prima che venga registrato. Poi girano i controlli anti-spam; gli invii spam vengono comunque salvati con is_spam = 1 e un motivo, ma le normali email admin e cliente vengono inviate solo per invii non spam.
L'indirizzo IP viene preso dagli header forwarded quando presenti, poi dal fallback remote address, e lo user agent viene salvato con limite di lunghezza. Questo crea una traccia audit per le richieste senza trasformare il modulo in un CRM completo; il follow-up avviene comunque tramite i destinatari email configurati o qualunque flusso back-office il merchant usi per revisionare gli invii.
Sì, le richieste possono essere instradate ai destinatari admin configurati. Ogni form può definire indirizzi email admin e una riga oggetto; il mailer accetta destinatari separati da virgola e ripiega sull'email globale del modulo o sull'email del negozio quando il destinatario del form è vuoto.
Questo routing è per form, quindi un contact form può inviare richieste vendita a una casella mentre un altro form invia richieste supporto a una casella diversa. Il form ha anche un'impostazione send_admin_email; se le email admin sono disabilitate per quel form, l'invio può comunque essere salvato senza inviare una notifica admin.
Il fallback destinatario avviene in ordine. Il mailer usa prima la lista email admin del form, poi l'impostazione email admin a livello modulo, poi PS_SHOP_EMAIL. Si possono inserire più destinatari come lista separata da virgole. Gli indirizzi email non validi vengono saltati invece di essere usati per l'invio.
L'oggetto admin proviene dall'oggetto email tradotto del form quando impostato, altrimenti ripiega su un oggetto generico di nuovo invio. Il nome negozio viene aggiunto, e l'email cliente inviata viene usata come reply-to quando disponibile, così rispondendo dalla casella si può tornare al cliente.
La conferma cliente è separata. Se send_customer_email è abilitato e l'invio include un indirizzo email cliente, il modulo può inviare anche al visitatore un messaggio di conferma. Gli invii spam sono salvati per revisione, ma il mailer non viene chiamato per essi, quindi di norma lo spam non viene inoltrato ai destinatari admin o ai clienti.
Sì. Il modulo controlla gli invii prima di mandare email, marca lo spam rilevato nel record submission e salva un motivo spam. La fonte include questi trigger anti-spam:
- Honeypot: il campo nascosto
website_url_confirmdeve restare vuoto. - Tempo di invio: il timestamp nascosto
_mpr_ftdeve essere presente, valido e più vecchio delmin_submit_timeconfigurato del form. - Rate limit: l'IP mittente viene bloccato quando ha già raggiunto il massimo di invii per ora del form.
- IP bloccati: l'IP mittente viene confrontato con la lista di IP bloccati del form, separata da nuove righe.
- Parole bloccate: ogni campo inviato viene controllato per parole bloccate configurate usando una corrispondenza substring case-insensitive.
Per impostazione predefinita, i form appena installati abilitano honeypot e controllo tempo con un tempo minimo di invio di 3 secondi. Gli invii spam sono salvati per revisione, ma il normale flusso email admin/cliente gira solo per invii non spam.
Il rate limit predefinito a livello modulo è 10 invii per IP per ora. Impostare il massimo invii per IP per ora a 0 disabilita quel controllo rate-limit. La query rate-limit conta gli invii salvati dallo stesso indirizzo IP nell'ora precedente, quindi tentativi ripetuti possono essere bloccati anche se il visitatore continua a reinviare lo stesso form.
Il controllo tempo è progettato per intercettare post automatici che inviano subito o omettono il timestamp nascosto. Un visitatore reale riceve il campo nascosto _mpr_ft con il form, mentre un bot che posta direttamente senza caricare la pagina di solito fallirà il requisito timestamp.
I motivi spam sono salvati come etichette machine-readable come honeypot, timing, rate_limit, blocked_ip e blocked_words. Più di un motivo può essere registrato sullo stesso invio, aiutando a distinguere un semplice invio troppo veloce da un messaggio che contiene anche parole bloccate.
Sì, può sostituire la pagina contatto predefinita di PrestaShop quando quella impostazione è abilitata. Il modulo aggiunge route contatto e usa l'hook dispatcher per reindirizzare il controller contatto core al proprio rendering della pagina contatto, mantenendo disponibili i normali link display del modulo.
L'impostazione è disabilitata per impostazione predefinita. Quando replace_core_contact è abilitato, il modulo espone route contatto tramite hookModuleRoutes, usando la riscrittura della pagina contatto del negozio quando possibile, e gestisce anche il controller core contact tramite l'hook dispatcher.
In termini implementativi, l'hook dispatcher non invia un redirect browser 301 o 302. Riscrive i parametri della richiesta corrente sul posto cambiando il controller al controller display del modulo e impostando il nome modulo a mprcontactform. L'acquirente resta nel flusso contatto, ma PrestaShop renderizza la pagina contatto del modulo invece del controller contatto core.
Il modulo può anche renderizzare form tramite la propria route display modulo e tramite hook come displayMprContactForm e displayContactContent. Questo significa che i merchant possono sostituire la pagina contatto principale, incorporare un form specifico altrove o lasciare invariata la pagina contatto core e usare solo link del modulo.
Se la sostituzione non è abilitata, l'hook route non restituisce route di sostituzione contatto e la pagina contatto core resta sotto il normale controllo di PrestaShop. Questo rende la funzione reversibile dalla configurazione senza disinstallare il modulo.
Il modulo aggiunge un'azione di eliminazione alla pagina dettaglio ordine admin di PrestaShop. Viene renderizzata tramite gli hook displayAdminOrderMain e displayAdminOrder quando il modulo è abilitato e un ID ordine è disponibile, poi invia l'ordine al flusso cestino del modulo.
Su un'installazione standard il modulo è abilitato e la conferma è richiesta. La pagina ordine mostra un blocco Delete Order con un pulsante che collega al controller admin del modulo usando un parametro trash_order. Se la conferma è abilitata, il template aggiunge un prompt di conferma browser prima che l'azione venga inviata.
Quando l'admin conferma, il controller passa ID ordine e ID dipendente corrente al servizio cestino. Il servizio carica l'Order PrestaShop, crea lo snapshot cestino, salva chi l'ha eliminato e poi chiama il metodo delete ordine nativo di PrestaShop. Se l'ordine non può essere caricato come oggetto valido, l'azione cestino restituisce false invece di eliminare qualsiasi cosa.
L'azione è pensata per ordini di test, duplicati o indesiderati che un merchant sceglie deliberatamente di rimuovere dal back office. Non è un flag soft-hide sulla riga ordine originale; dopo il completamento del flusso cestino, il metodo delete ordine nativo di PrestaShop è stato chiamato e il record residuo del modulo è solo lo snapshot cestino.
Prima di eliminare, il modulo carica l'Order PrestaShop, crea un riepilogo JSON compatto, inserisce una riga in mprdeleteorders_trash e poi chiama il metodo delete ordine nativo. La tabella cestino viene mantenuta intenzionalmente alla disinstallazione per sicurezza.
{"id_order":1234,"reference":"ABCDEF123","id_customer":42,"total_paid":149.90,"date_add":"2026-06-17 10:15:00","current_state":2}id_order: l'ID ordine PrestaShop originale, salvato anche come colonna top-level della tabella cestino per filtrare.reference: il riferimento ordine, salvato anche comeorder_reference.id_customer: l'ID cliente collegato all'ordine eliminato.total_paid: il totale ordine datotal_paid_tax_incl.date_add: la data di creazione originale dell'ordine.current_state: l'ID stato ordine al momento dell'eliminazione.deleted_by: l'ID dipendente back-office che ha cliccato l'azione cestino.date_deleted: quando il record cestino è stato creato.
Questo è uno snapshot audit, non un backup completo e reversibile di ogni tabella collegata all'ordine, fattura, messaggio e riga articolo. Usalo per identificare cosa è stato eliminato e da chi prima dell'eliminazione permanente.
La tabella cestino stessa salva id_trash, id_order, order_reference, order_data, deleted_by e date_deleted. Il controller lista può mostrare queste righe cestino così un admin può revisionare ID ordine originale, riferimento, dipendente eliminatore e data eliminazione.
Il JSON contiene deliberatamente solo un piccolo set di valori header dell'ordine. Non salva prodotti, dettagli ordine, indirizzi, pagamenti, fatture, messaggi, righe corriere, contenuti carrello, voucher o storico movimenti stock. Per questo motivo va trattato come tracciabilità delle eliminazioni, non come pacchetto di ripristino.
No, il modulo non ricostruisce dal cestino un ordine PrestaShop eliminato. Quando un ordine viene spostato nel cestino, salva un piccolo snapshot JSON con valori come ID ordine, riferimento, ID cliente, totale pagato, data creazione e stato corrente, poi chiama il metodo delete ordine di PrestaShop.
Il metodo restore legge solo la riga cestino, conferma che esiste, elimina quella riga cestino e restituisce successo per quell'azione di pulizia. Non ricrea la riga ordine originale, dettagli ordine, pagamenti, fatture, storico ordine, dati carrello o record correlati.
Questa limitazione è importante perché il modulo non salva abbastanza dati relazionali per eseguire una ricostruzione completa e sicura di un ordine. Tratta il cestino come buffer di audit e pulizia, non come backup completo. Per un recupero reale, usa un backup database o un processo di ripristino manuale fuori da questo modulo.
Anche l'azione di pulizia permanente del cestino è separata dal ripristino ordine. Rimuovere una riga cestino rimuove solo lo snapshot audit del modulo; non influisce su un ordine PrestaShop già eliminato perché i dati ordine originali sono già stati rimossi dalla chiamata delete nativa.
Per negozi live, il flusso pratico è usare il modulo per cancellare ordini noti di test o indesiderati, mantenere backup database per il recupero e verificare l'ordine prima di eliminarlo. Se un ordine potrebbe dover essere recuperato con prodotti, pagamenti, fatture e storico intatti, non fare affidamento sulla riga cestino del modulo come fonte di recupero.
No, il percorso di disinstallazione mantiene la tabella cestino per sicurezza. In PrestaShop il modulo rimuove tab e configurazione, ma il commento nel codice dice che mprdeleteorders_trash viene conservata alla disinstallazione.
Sì. Quando il tracciamento acquisti è abilitato e al modulo è consentito tracciare il visitatore, emette un evento Hotjar purchase dall'hook di conferma ordine PrestaShop. Il template front office chiama hj('event', 'purchase') nella pagina di conferma ordine.
Questo è utile per l'analisi Hotjar perché puoi filtrare registrazioni, heatmap, survey o funnel attorno alle sessioni che hanno raggiunto un acquisto, poi ispezionare il comportamento prima dell'ordine. Aiuta a rispondere a domande come dove gli acquirenti hanno esitato, quali passaggi checkout hanno ripetuto o quali pattern pagina compaiono nelle sessioni riuscite.
Non è un sostituto per analytics dei ricavi o report ordini lato server. Hotjar riceve l'evento nominato per segmentazione comportamentale; i dettagli ordine del modulo sono usati principalmente per costruire contesto evento locale e non sono un feed transazionale completo.
La funzione dipende dai normali guard del modulo Hotjar. Il modulo deve essere abilitato, l'Hotjar Site ID deve essere configurato come cifre, il tracciamento acquisti deve essere abilitato e il visitatore deve superare i controlli di tracciamento del modulo, come la gestione consenso quando il rispetto del consenso è abilitato. Se il tracciamento non è consentito, l'hook di conferma ordine non restituisce nulla.
Quando l'hook gira, il modulo costruisce contesto acquisto locale dall'ordine PrestaShop, includendo valori come ID ordine, valuta, valore totale, numero articoli e identificatori prodotto. Quel contesto viene assegnato al template di conferma ordine e può essere usato dal tooling locale di registrazione/demo eventi del modulo, ma la chiamata Hotjar Events API fatta dal template resta il semplice evento nominato purchase.
In Hotjar, usa l'evento purchase come marker comportamentale. Per totali, imposte, margine, attribuzione, gestione rimborsi o report conversione autorevoli, continua a usare i dati ordine PrestaShop o una piattaforma analytics progettata per report transazionali.
No. Il modulo invia eventi PrestaShop e contesto cliente a Klaviyo, ma logica campagne, segmenti, contenuto email e flow SMS sono gestiti in Klaviyo. Questa separazione è utile perché i dati negozio provengono da PrestaShop mentre la strategia marketing resta nella piattaforma marketing.
In termini di fonte, il lato PrestaShop è limitato alla consegna dati onsite. Quando ENABLED è impostato e PUBLIC_API_KEY è presente, l'hook header carica lo script onsite di Klaviyo con il company id. I default di installazione lasciano il modulo disabilitato, mantengono vuota la chiave pubblica e forniscono toggle di tracciamento come TRACK_VIEWED, TRACK_CART e TRACK_PURCHASE.
Il template front può identificare clienti loggati con email e nome, tracciare una pagina prodotto come Viewed Product e tracciare la pagina carrello come Added to Cart. Non contiene un builder flow Klaviyo, editor segmenti, editor template email, schermata workflow SMS o layer API campagne. La fonte espone un toggle acquisto, ma il template di tracciamento browser ispezionato non emette una chiamata di tracciamento acquisto, quindi l'automazione purchase dovrebbe comunque essere verificata in Klaviyo invece di essere presunta dalla sola impostazione PrestaShop.
PUBLIC_API_KEY=YOUR_KLAVIYO_PUBLIC_KEY ENABLED=1 TRACK_VIEWED=1 TRACK_CART=1In parte. Il modulo ha template product-card e caricamento dati prodotto, ma il percorso storefront implementato non è una colonna dropdown autonoma product_list. MenuBuilder può caricare elementi colonna product_list da un ID categoria e limite, ma extractChildrenFromColumns() non espone gli elementi product_list come figli menu, quindi i merchant non dovrebbero fare affidamento su quel tipo colonna per renderizzare card prodotto finché non viene aggiunto supporto template/children.
Il percorso implementato oggi è l'anteprima prodotti sotto figli di category-tree. Aggiungi una colonna dropdown di tipo category_tree, abilita PRODUCTS_NB con un valore sopra zero, e il builder può collegare prodotti da ogni figlio categoria. Il template storefront renderizza poi il primo prodotto collegato come card in evidenza e i prodotti collegati rimanenti come card più piccole nel pannello.
SHOW_PRICES e SHOW_DISCOUNTS controllano se prezzi e badge sconto appaiono; entrambi sono abilitati per impostazione predefinita. PRODUCTS_NB controlla quante anteprime prodotto dei figli categoria vengono collegate. Il TTL cache menu controlla quanto rapidamente appaiono le modifiche strutturali, e gli hook di aggiornamento prodotto, categoria e CMS sono registrati per pulire i dati menu in cache quando il contenuto del negozio cambia.
Implemented storefront path:
category_tree child + PRODUCTS_NB > 0 = product previews under that category child.
Not currently implemented as rendered storefront cards:
standalone product_list column.Il modulo renderizza il menu mobile dalla stessa configurazione menu top-level, con un parser mobile dedicato. Questo riduce la manutenzione duplicata e aiuta a mantenere allineata la navigazione desktop e mobile. Dovresti comunque revisionare il layout mobile perché etichette lunghe e alberi categoria profondi possono influire sull'usabilità.
Gli output desktop e mobile ricevono entrambi gli stessi dati $menu.children per l'albero off-canvas. Su mobile, il template renderizza quell'albero, mentre HtmlMobileTreeParser e il menu builder possono convertire diversi layout colonna desktop in una struttura mobile più semplice, incluse category tree, CMS category tree, categorie blog, gruppi link, link CMS, liste link, alberi mobile derivati da HTML e visual tabs.
Questo significa che normalmente mantieni una volta sola nel modulo etichette, link, alberi categoria, link CMS, visual tabs e contenuto custom mobile-tree compatibile. L'eccezione pratica è il contenuto che non viene estratto in menu.children. In particolare, le colonne desktop product_list non vengono estratte nell'attuale albero mobile, e il template mobile renderizza solo $menu.children; il contenuto product-list avrebbe bisogno di supporto template storefront/mobile prima di apparire nel menu off-canvas.
L'HTML personalizzato è un'altra area da testare. Se una colonna contiene markup insolito e nessun albero mobile utilizzabile, il parser mobile può ripiegare su una struttura semplice o vuota, quindi testa etichette lunghe, alberi annidati e HTML promozionale su una larghezza mobile reale prima di farci affidamento per la navigazione.
No. Il modulo collega PrestaShop a Tidio e controlla il comportamento di caricamento storefront. Flow chatbot, gestione inbox e workflow operatori sono gestiti dentro Tidio, dove appartengono questi strumenti.
Le impostazioni PrestaShop sono impostazioni di connessione e rendering: PUBLIC_KEY è richiesto e validato, ENABLED ha come predefinito 1, e il widget può essere ritardato, nascosto su mobile, limitato per tipo pagina e opzionalmente ricevere email/nome del cliente loggato tramite PASS_USER_DATA.
PUBLIC_KEY=your_tidio_public_key ENABLED=1 PAGES=all DELAY=0 PASS_USER_DATA=1Nel front office il template definisce solo dati opzionali document.tidioIdentify e aggiunge lo script ospitato di Tidio da code.tidio.co. In questo modulo non c'è builder bot lato PrestaShop, vista inbox, schermata assegnazione operatori, tabella storico messaggi o flow API, quindi l'automazione vendite/supporto deve comunque essere configurata nella dashboard Tidio.
La configurazione salva stato di abilitazione, titolo, messaggio HTML, visibilità del campo newsletter, ritardo in secondi, durata del cookie in giorni e se mostrare il popup su tutte le pagine o solo sulla homepage.
Dopo che il visitatore lo chiude, lo script imposta il cookie mprwpop_seen per il numero di giorni configurato. Lo script del popup controlla quel cookie prima di mostrarsi di nuovo.
No. Il campo email è solo visuale in questo modulo. Quando SHOW_NEWSLETTER è abilitato, il template front renderizza un form newsletter con un input email e pulsante Subscribe, ma il modulo stesso non contiene front controller, handler AJAX, inserimento in tabella subscriber o integrazione con modulo newsletter che salvi gli indirizzi inviati.
Lo script popup gestisce solo tempi di visualizzazione, chiusura della modale, chiusura con tasto Escape e cookie mprwpop_seen. Non intercetta l'invio del form e non manda l'indirizzo da nessuna parte.
Se vuoi acquisire lead, collega quel form al tuo handler, a un modulo newsletter, a un endpoint Brevo o Mailchimp, o a una form action a livello tema che il negozio processa. Finché tale integrazione non esiste, abilitare il campo mostra solo una casella email; non crea iscritti newsletter.
Le impostazioni modulo correlate decidono solo se il campo viene mostrato e con quale frequenza appare il popup. I default di installazione impostano SHOW_NEWSLETTER a 0, DELAY a 3 secondi, COOKIE_DAYS a 7 e SHOW_ON a all; SHOW_ON=homepage lo limita al controller index.
Il cookie di visibilità viene impostato quando l'acquirente chiude il popup, clicca l'overlay o preme Escape. Inviare il form newsletter non crea un record subscriber in questo modulo, e il form template non ha action URL, quindi un merchant dovrebbe trattarlo come placeholder front-end finché non viene collegato a un endpoint newsletter reale.
<form class='mprwpop-newsletter' id='mprwpop-nl-form' method='post'>Sì. Quando l'impostazione di visualizzazione è solo homepage, il hook restituisce contenuto solo se la pagina corrente del front controller è la pagina index.
Aggiungi il tuo Microsoft UET Tag ID numerico e abilita il tracciamento browser nel modulo. L'hook header PrestaShop carica lo script UET, invia l'evento page load e poi invia gli eventi browser configurati quando il tracciamento è attivo e le regole di consenso lo consentono.
In una nuova installazione, il tracciamento non è live finché quelle impostazioni non sono complete: ENABLED ha come predefinito 0, TAG_ID è vuoto, e il modulo si considera attivo solo quando il tag ID è numerico. Nel form admin, salva il Microsoft Ads UET tag ID senza lettere o spazi, mantieni RESPECT_CONSENT abilitato se usi un modulo cookie supportato e decidi quali toggle evento devono restare attivi.
TAG_ID=123456789 ENABLED=1 RESPECT_CONSENT=1 TRACK_PAGE_VIEW=1 TRACK_PRODUCT_VIEW=1 TRACK_PURCHASE=1Quando l'hook header gira, può anche catturare msclkid dall'URL di atterraggio per il matching conversioni successivo. L'esclusione dipendenti è abilitata di default tramite EXCLUDE_EMPLOYEES, quindi test da back office loggato potrebbero non emettere eventi se non consideri questa impostazione.
Sì, supporta Microsoft Conversions API per eventi acquisto lato server, ma solo quando le impostazioni richieste sono complete. Il modulo richiede tracciamento abilitato, un TAG_ID numerico, CAPI_ENABLED attivato, un CAPI_ACCESS_TOKEN salvato e tracciamento acquisto abilitato.
- Validazione admin: lo UET Tag ID deve contenere solo cifre, CAPI non può essere abilitata senza tag ID numerico, il bearer token è richiesto quando CAPI è abilitata, e il limite batch coda deve essere 1-100.
- Flusso ordine: su
actionValidateOrder, il modulo controllacanTrack(),TRACK_PURCHASEe disponibilità CAPI prima di mettere in coda qualcosa. - Flusso coda: una conversione acquisto viene messa in coda per provider
microsoft_uet, legata all'ID ordine, poi il modulo elabora subito un piccolo batch di 3 eventi. Il task cron elabora più tardi il normale batch configurato.
Il tag UET browser può comunque gestire eventi pagina, carrello, ricerca e remarketing; il percorso CAPI in questo modulo è specificamente il percorso acquisto lato server.
Per la configurazione, i campi CAPI importanti sono:
CAPI_ENABLED=1 CAPI_ACCESS_TOKEN=your_microsoft_token CAPI_BATCH_LIMIT=20 TRACK_PURCHASE=1Il client API invia eventi a Microsoft UET CAPI usando il tag ID numerico nell'endpoint e un bearer token. Il payload normalizza nome/id/tempo evento/source URL, consenso ad-storage, dati utente e dati acquisto personalizzati. Il matching utente può includere indirizzo IP, user agent, msclkid salvato, dettagli cliente hashati e identificatori anonimi carrello/ospite quando disponibili.
Non è un sostituto lato server per ogni evento browser del modulo. Page view, product view, search, add-to-cart, wishlist ed eventi custom click/URL/controller restano lato browser nella fonte ispezionata; CAPI è il supplemento server per gli acquisti.
Il modulo raggruppa gli eventi Microsoft Ads UET attorno ad attività storefront commerce, account, ricerca e trigger custom. Gli eventi principali sono configurabili singolarmente nelle impostazioni del modulo.
- Commerce/storefront:
pageView,productView,addToCart,addToWishlist,initiateCheckoutepurchase. Gli eventi prodotto, carrello e acquisto includono parametri commerce come ID prodotto, valori ordine, valuta e quantità quando disponibili. - Ricerca:
searchsi attiva sulle pagine risultati ricerca con il contesto query. - Account:
signUpviene attivato dopo la registrazione cliente tramite il flusso hook registrazione del modulo. - Custom: eventi custom possono essere configurati con trigger click, URL, controller o DOM-event, con nomi evento limitati alle regole UET consentite dal modulo.
L'evento acquisto viene inviato nella pagina di conferma ordine, mentre gli eventi add-to-cart e wishlist sono catturati da listener JavaScript front office.
La maggior parte di quei toggle è abilitata di default all'installazione, inclusi TRACK_PAGE_VIEW, TRACK_PRODUCT_VIEW, TRACK_ADD_CART, TRACK_ADD_WISHLIST, TRACK_INITIATE_CHECKOUT, TRACK_SEARCH, TRACK_PURCHASE e TRACK_SIGNUP. TRACK_CUSTOM_EVENTS ha come predefinito off finché non definisci regole evento custom.
Le regole custom sono intenzionalmente limitate: il normalizzatore config accetta fino a 15 nomi evento distinti, rimuove parametri riservati event_id e supporta selettori click, corrispondenze URL contains, nomi controller o eventi DOM custom. Il JavaScript front office deduplica eventi pulsante add-to-cart e wishlist per circa un secondo, così la stessa azione ha meno probabilità di essere conteggiata due volte.
Sì. Con RESPECT_CONSENT abilitato, il modulo controlla il consenso marketing prima di considerare attivo il tracciamento Microsoft UET. Controlla prima mprcookiesrevolution leggendo il cookie mprcr_consent e cercando marketing:1. Se quel cookie è assente, ripiega sul valore DEFAULT_CONSENT di quel modulo. Se Cookies Revolution non è attivo, controlla mprcookiebanner tramite mprcookie_consent=granted, ripiegando di nuovo sull'impostazione consenso predefinito di quel modulo quando il cookie è assente.
Se nessun modulo consenso MPR supportato è attivo, la funzione consenso restituisce consentito, quindi il tracciamento non viene bloccato solo dal consenso. Per un blocco GDPR rigido, mantieni RESPECT_CONSENT abilitato e installa/configura uno dei moduli consenso supportati.
Il flusso msclkid gira nell'hook header. Il modulo legge msclkid dall'URL di atterraggio, accetta solo caratteri A-Za-z0-9._:- fino a 500 caratteri, lo rispecchia in $_COOKIE['mprbuet_msclkid'], poi scrive un cookie HTTP-only chiamato mprbuet_msclkid per 7776000 secondi. I dati utente della conversione lato server successiva possono includere quel Microsoft click ID salvato quando presente.
https://shop.example/?msclkid=abc123salvaabc123nel cookie del modulo.- Un acquisto successivo può collegare quel valore ai dati conversione Microsoft UET se le conversioni lato server sono configurate.
Il controllo consenso lato server e il gate JavaScript front office lavorano insieme ma non sono identici. Il guard PHP canTrack() blocca la costruzione eventi per dipendenti, moduli disabilitati e consenso marketing fallito; il template header controlla anche i cookie browser prima di caricare bat.js quando è presente un modulo consenso client supportato.
Se RESPECT_CONSENT è impostato a 0, il controllo consenso viene bypassato. Se nessun modulo consenso MPR supportato è installato, la funzione PHP consente il tracciamento per il solo consenso, quindi i negozi rigorosi non dovrebbero fare affidamento solo sul modulo UET come unico layer consenso.
Il cookie msclkid viene scritto prima dell'acquisto successivo, cosa importante perché un acquirente può arrivare da Microsoft Ads, navigare e ordinare in una richiesta successiva. Il valore viene accettato solo se corrisponde alla whitelist caratteri del modulo; valori non validi o troppo lunghi vengono ignorati invece di essere inviati a Microsoft.
No. Il tag del browser viene iniettato dall'hook dell'intestazione di PrestaShop solo quando il tracciamento è attivo, cioè quando un TAG_ID numerico è salvato e ENABLED vale 1. La libreria Microsoft viene quindi aggiunta con script.async = true da https://bat.bing.com/bat.js, perciò si carica senza bloccare il rendering della pagina.
Al caricamento il modulo invia un singolo pageLoad a window.uetq e poi solo gli eventi che hai abilitato, come vista prodotto, aggiunta al carrello o acquisto, tramite uetq.push('event', ...). Quando è presente un modulo di consenso supportato, il pixel viene caricato solo dopo la conferma del consenso marketing nel browser, quindi i visitatori che rifiutano non generano alcuna richiesta a Microsoft.
L'invio lato server tramite la Conversions API viene eseguito in un'attività cron pianificata, non nella richiesta del cliente, e i dipendenti loggati sono esclusi per impostazione predefinita tramite EXCLUDE_EMPLOYEES.
Quando la Conversions API è abilitata e un token bearer Microsoft è salvato, gli eventi di acquisto vengono accodati alla convalida dell'ordine e inviati lato server da un'attività cron pianificata, send_bing_uet_conversions, che viene eseguita ogni 300 secondi. Ogni esecuzione elabora la coda fino al limite di batch configurato (CAPI_BATCH_LIMIT, predefinito 20, consentito 1–100 e limitato a 100 righe per esecuzione), così gli eventi falliti o in attesa vengono riprovati nel ciclo successivo invece di essere persi.
I dati utente lato server possono includere l'id di clic Microsoft memorizzato (msclkid), email e telefono con hash, IP del client e user-agent. Le voci elaborate e obsolete vengono ripulite automaticamente, mantenendo la cronologia recente e rimuovendo le righe vecchie nel tempo.
Se il token bearer manca o è vuoto, il blocco di prontezza nell'admin mostra un avviso e nessun evento lato server viene inviato finché non lo aggiungi. L'UET del browser può restare abilitato in modo indipendente per le visualizzazioni di pagina e il remarketing mentre configuri la Conversions API.
No, non per il pulsante contatto Messenger di base. L'impostazione richiesta è il Facebook Page ID numerico; senza App ID configurato, il template storefront renderizza un link diretto https://m.me/{page_id} così gli acquirenti aprono Messenger dal pulsante flottante.
- Modalità link m.me: richiede il modulo abilitato e un Page ID valido. È rapida da configurare e funziona come semplice link esterno di contatto Messenger.
- Modalità SDK: il modulo tratta il campo App ID compilato come lo switch per renderizzare il markup del plugin customer chat di Facebook e caricare l'SDK customer chat di Facebook. Il testo di saluto viene usato in quel markup modalità SDK.
Quindi i merchant che vogliono solo un pulsante Messenger affidabile possono lasciare vuoto l'App ID. Aggiungi l'App ID solo quando vuoi deliberatamente il percorso chat incorporata basato su SDK e hai pronta la configurazione lato Facebook.
Il requisito Page ID è rigido: il validator required-config del modulo accetta solo cifre, da 5 a 32 caratteri, e il widget non viene renderizzato mentre il modulo è abilitato ma quel campo è vuoto. I default abilitano il widget, lo mostrano su tutte le pagine incluso mobile, usano lo stile icona in basso a destra e ritardano la visualizzazione di 0 secondi.
Impostazioni di aspetto come POSITION, STYLE, CTA_TEXT, COLOR, SIZE, MARGIN, tooltip e animazione sono usate dal percorso del pulsante link flottante. Filtraggio pagina e visibilità mobile derivano dal guard chat condiviso, quindi puoi mostrare il punto di ingresso Messenger solo su pagine prodotto, categoria o checkout se si adatta al tuo flusso di supporto.
Il metodo fetch controlla prima RSS_URL. Se è vuoto, costruisce un URL RSS da BOARD_URL. Gli URL dei pin vengono usati solo quando il percorso RSS non produce post.
No. mprpinterestintegration è un modulo contenuto/feed Pinterest, non il modulo di tracciamento ads Pinterest. Mostra pin, board o contenuto RSS Pinterest nel negozio e include gestione cache per il feed mostrato. La fonte contiene anche impostazioni opzionali Pinterest API publishing per pubblicare prodotti/contenuti.
- Pinterest Feed Integration: usalo per mostrare contenuti Pinterest nello storefront, configurare username, URL pin, URL board o fonti RSS e opzionalmente pubblicare contenuti del negozio su Pinterest.
- Pinterest Tag: usa il modulo Pinterest Tag separato per misurazione pubblicitaria, eventi tag browser e tracciamento opzionale Conversions API come page visits, product views, add-to-cart, checkout, search e signup.
Se l'obiettivo è migliorare il visual merchandising o incorporare contenuti Pinterest, usa questa integrazione feed. Se l'obiettivo è attribuzione Pinterest Ads o ottimizzazione conversioni, usa invece il modulo Pinterest Tag.
Per il percorso feed, la fonte richiesta può essere semplice come uno o più URL pin salvati, oppure un URL board/fonte RSS in base a come vuoi curare i contenuti. Le impostazioni feed condivise controllano hook di visualizzazione, numero post, colonne, layout grid/slider, pulsante follow, visibilità mobile e durata cache; la cache ha come predefinito 3600 secondi e può essere aggiornata dall'admin del modulo.
Anche il percorso di pubblicazione opzionale è separato dal tracciamento ads. La pubblicazione Pinterest richiede credenziali API Pinterest come access token e board ID, e il publisher invia dati pin basati su immagine a Pinterest. Questo comunque non installa il tag pubblicitario Pinterest né riporta conversioni ads; per questo, il negozio necessita del modulo separato mprpinteresttag.
La config map include ACCESS_TOKEN, BOARD_ID, AUTOPUBLISH e AUTOPUBLISH_CAPTION. La pubblicazione è gestita tramite il PinterestPublisher condiviso.
Ogni item feed linka all'URL del pin, mostra immagine thumbnail, badge video opzionale, testo overlay, nome autore opzionale e caption opzionale in base alle impostazioni modulo e ai dati sorgente.
Il modulo richiede la Website Key Smartsupp. Il pannello di configurazione indica al merchant di copiarla dalle impostazioni Smartsupp e il validatore della configurazione obbligatoria considera non valida una chiave vuota.
Se PASS_USER_DATA è abilitato e il cliente è loggato, il trait chat condiviso restituisce customer_email e customer_name. Il template li assegna a _smartsupp.email e _smartsupp.name.
No. Il template carica lo script widget esterno di Smartsupp. L'interfaccia chat visibile è fornita da Smartsupp dopo l'esecuzione del loader.
Sì. Se l'impostazione DELAY è maggiore di zero, il template avvolge l'inizializzazione Smartsupp e l'iniezione dello script in setTimeout.
No, non ti serve un account sviluppatore TikTok solo per mostrare video. Il feed display si basa su URL video TikTok incollati e sull'endpoint pubblico oEmbed di TikTok. Nelle impostazioni del modulo, inserisci lo username TikTok per il link follow, incolla un URL video TikTok per riga nel campo Video URLs e salva.
Quando il feed viene costruito, il modulo divide la lista URL salvata per riga, salta le voci che non contengono tiktok.com, chiama https://www.tiktok.com/oembed?url=... e salva titolo, caption, autore, thumbnail ed embed HTML restituiti per la visualizzazione. Quel percorso display non usa token API, app review o credenziali sviluppatore.
Le credenziali sono rilevanti solo per il workflow opzionale di pubblicazione. La fonte ha impostazioni publishing come ACCESS_TOKEN, CLIENT_KEY, AUTOPUBLISH e AUTOPUBLISH_CAPTION, e usa un'istanza TikTok publisher per quel percorso. Se il tuo obiettivo è solo incorporare video TikTok selezionati nel negozio, puoi lasciare vuote quelle credenziali publishing.
Il modulo display ha come predefinito abilitato, con toggle caption, view-icon e like-icon attivi, mentre i default feed condivisi usano displayHome, 6 post, 3 colonne desktop, layout grid, lazy loading e durata cache 3600 secondi. Il feed renderizza solo nell'hook social-feed configurato; se l'hook configurato non corrisponde all'hook corrente, non viene emesso nulla.
Ci sono due casi limite pratici: URL senza tiktok.com vengono saltati, e ogni richiesta oEmbed fallita viene saltata invece di renderizzare una card rotta. La card storefront collega all'URL TikTok originale e mostra thumbnail, autore e caption restituiti, quindi video eliminati/privati o risposte oEmbed bloccate ridurranno semplicemente il feed.
VIDEO_URLS=https://www.tiktok.com/@brand/video/1234567890 USERNAME=brand SHOW_CAPTION=1 POST_COUNT=6Sì. Il trait chat condiviso controlla l'impostazione mobile prima del rendering e non restituisce alcun pulsante quando la visualizzazione mobile è disattivata per un visitatore mobile.
No, il modulo non gestisce agenti, storico conversazioni o workflow di supporto. WhatsApp stesso gestisce la conversazione, mentre il modulo gestisce il pulsante storefront e l'URL click-to-chat. Questo mantiene l'integrazione leggera e chiara.
L'unico campo di connessione richiesto è PHONE. Deve contenere solo cifre, da 7 a 20 caratteri, includere il prefisso paese e non avere segni più o spazi. Il template front costruisce https://wa.me/{phone}, e se è configurato un messaggio aggiunge ?text=... per farlo precompilare da WhatsApp.
- Cosa controlla PrestaShop: abilita/disabilita, numero di telefono, messaggio precompilato opzionale, posizione, stile icona/barra, testo CTA, colore, dimensione, margine, tooltip, animazione, visibilità mobile, ritardo di visualizzazione e filtro pagina.
- Cosa controlla WhatsApp: il thread chat reale, risposte, assegnazione staff, storico messaggi, notifiche e qualsiasi funzione inbox o CRM.
Il messaggio opzionale supporta {product} sulle pagine prodotto e {url} per la pagina corrente, cosa utile per domande sui prodotti. Resta comunque solo un messaggio WhatsApp precompilato, non un ticket o un record supporto PrestaShop salvato.
Il modulo sostituisce {url} con l'URL della pagina corrente. Nelle pagine prodotto può anche sostituire {product} con il nome del prodotto corrente.
Il modulo può renderizzare dal hook footer o before-body, ma un flag statico interno evita output duplicato. L'ambito pagina può essere tutte le pagine, pagine prodotto, pagine categoria o pagine relative al checkout.
Aggiungi il codice invito Discord nella configurazione del modulo e abilita il widget. In PrestaShop il modulo renderizza un pulsante front-office collegato a discord.gg con il codice invito salvato, posizione configurabile, stile, testo CTA, colore, dimensione, tooltip, animazione e margine.
Usa solo il codice invito, non l'URL completo. Il validator required-config si aspetta lettere, numeri, trattini e underscore, da 2 a 64 caratteri. Un codice invito mancante impedisce il rendering; un codice salvato non valido viene segnalato dall'avviso configurazione e può produrre un link Discord errato.
INVITE_CODE=AbCdEfG123 ENABLED=1 STYLE=icon POSITION=bottom-right CTA_TEXT=Join our DiscordAll'installazione i default impostano già il widget come abilitato, basso-destra, stile icona, blu Discord #5865F2, dimensione 60px, margine 20px, tooltip abilitato, animazione pulse, mobile abilitato, tutte le pagine e nessun ritardo. Il pannello configurazione admin consiglia di creare un invito permanente e un canale supporto dedicato, perché il modulo manda gli acquirenti al flusso di ingresso server invece di gestire conversazioni Discord dentro PrestaShop.
Sì, il widget può essere limitato per tipo pagina. In PrestaShop il guard chat condiviso supporta tutte le pagine, pagine prodotto, pagine categoria o controller collegati al checkout, e controlla anche l'impostazione separata di visibilità mobile prima del rendering.
Il filtro pagina è salvato nell'impostazione condivisa PAGES. Il guard restituisce true per all, controlla php_self=product per pagine prodotto, php_self=category per pagine categoria e tratta cart, order, order-opc, orderopc e checkout come controller collegati al checkout.
Lo stesso guard richiede anche ENABLED e un INVITE_CODE non vuoto, e nasconde il widget su mobile quando SHOW_MOBILE è off. Questo significa che il targeting pagina non è uno snippet separato da incollare nel tema; fa parte della decisione di rendering del modulo prima che CSS e pulsante vengano emessi.
PAGES=product SHOW_MOBILE=1 DELAY=0Sì, il modulo ha un'impostazione di ritardo per il pulsante storefront. In PrestaShop il template hook scrive un valore data-delay e un piccolo script nasconde il widget, poi lo mostra dopo i secondi configurati.
No, il modulo non invia testo precompilato dentro Discord. L'impostazione di connessione richiesta è un codice invito, non un token API utente/messaggio, e il template storefront renderizza un link a https://discord.gg/{invite_code}.
Il campo admin Pre-filled Message viene salvato per riferimento e il modulo può sostituire internamente {url} prima di assegnare dati al template, ma il template storefront attuale non emette quel messaggio né lo aggiunge all'URL invito Discord.
Questo è diverso dalle piattaforme chat che supportano parametri URL per una conversazione precompilata. I link invito Discord portano l'acquirente a un flusso di invito/accesso server, quindi la configurazione pratica è creare un link invito permanente e indirizzare i clienti a un canale supporto dopo l'ingresso.
La fonte conferma questa separazione. Il form connessione admin etichetta il campo come Pre-filled Message, ma la sua descrizione dice che non è usato per gli inviti Discord ed è salvato per riferimento. Nell'hook, il modulo sostituisce {url} dentro il messaggio salvato prima di assegnare dati Smarty, ma il template usa solo invite_code, posizione/stile/CTA/aspetto, tooltip, animazione e ritardo.
Per i merchant, la configurazione affidabile è l'invito stesso: crea un codice invito stabile, evita che scada e usa regole server/canale Discord per guidare i clienti dopo l'ingresso. Non fare affidamento su questo modulo per aprire un DM Discord diretto, postare in un canale o passare un messaggio checkout/prodotto a Discord.
No, è un modulo di navigazione lingua. Aiuta gli acquirenti a passare tra lingue che già gestisci e li indirizza a URL localizzati dove PrestaShop ha i dati. Qualità della traduzione, targeting paese e logica di geolocalizzazione visitatore restano fuori da questo modulo.
Il modulo legge le lingue PrestaShop attive per il negozio corrente con Language::getLanguages(true, shop_id). Se il negozio ha una sola lingua attiva, non restituisce alcun selettore. Per ogni lingua mappa l'ISO lingua a una flag SVG quando esiste, costruisce un URL lingua dagli URL alternative-language del front controller quando disponibili e ripiega su getLanguageLink() di PrestaShop.
- Navigazione: l'output desktop nasconde il selettore lingua desktop nativo e renderizza un dropdown bandiere in
displayNav2; l'output mobile può renderizzare una select semplice indisplayMobileLanguageSelector. - Etichette:
SHOW_LABELcontrolla se il codice ISO corrente viene mostrato accanto alla bandiera, eSHOW_NAMEScontrolla se i nomi lingua completi vengono mostrati nel dropdown. I default sono label off e nomi on. - Limiti: non traduce nomi/descrizioni prodotto, non sceglie lingue da geolocalizzazione, non reindirizza visitatori per paese e non crea URL localizzati mancanti.
C'è una pulizia URL extra per alias di pagine core e un hook di integrazione per percorsi filtro tradotti di MPR Filter Revolution, ma anche questo dipende da route/dati tradotti già esistenti. È uno switcher, non un motore di traduzione.
Registra displayHeader, displayOrderConfirmation, actionCustomerAccountAdd e actionValidateOrder.
No. Il template di conferma ordine e il server conversion builder usano l'evento Pinterest checkout per gli ordini completati, includendo valore ordine, quantità, valuta, ID ordine ed event ID.
CAPI_ENABLED deve essere attivo, il Pinterest ad account ID deve contenere solo cifre e l'access token non deve essere vuoto. Il batch limit deve essere tra 1 e 100.
Sì, quando una custom rule ha capi abilitato. Il front conversion bridge mappa i nomi evento browser noti e accetta anche nomi evento CAPI personalizzati configurati.
I valori predefiniti di installazione impostano ENABLED a 0 e USERNAME a una stringa vuota. L'hook di rendering esce in anticipo se il modulo non è abilitato o non esiste uno username.
No, apre il tuo profilo Snapchat tramite lo username configurato. Contenuti profilo e conversazioni restano dentro Snapchat stesso. Questo mantiene il modulo focalizzato sull'offrire agli acquirenti un percorso pulito per seguirti o contattarti senza aggiungere un feed social pesante alla pagina.
L'output storefront è un pulsante flottante renderizzato dall'hook displayBeforeBodyClosingTag. L'hook si ferma prima del rendering se il pulsante Snapchat non è abilitato, se il valore USERNAME è vuoto, se la visualizzazione mobile è disabilitata per un visitatore mobile o se il controller corrente è elencato in EXCLUDE_PAGES. Quando renderizza, la destinazione è costruita come https://www.snapchat.com/add/ più lo username URL-encoded.
Il template conferma che si tratta di un link normale, non di un embed Snapchat. Emette un tag <a> con l'URL configurato, target=_blank opzionale, testo tooltip, stile pulsante, animazione e messaggio grabber opzionale. Non c'è iframe, chiamata API Snapchat, renderer feed o codice che legga conversazioni o contenuti profilo da Snapchat.
Required for output: ENABLED=1
Required account value: USERNAME=yourbrand
Rendered link: https://www.snapchat.com/add/yourbrandPer i merchant, questo significa che il modulo ha basso impatto: offre ai visitatori un percorso visibile verso la tua presenza Snapchat lasciando contenuti Snapchat, follow, messaggi e privacy account sotto l'app e il sito Snapchat.
La definizione di configurazione elenca small, medium e large, etichettati come 48px, 60px e 72px. La dimensione selezionata viene passata alla classe widget come mprchat-size-....
No. Questo modulo renderizza un link flottante a un profilo Snapchat. Snapchat Pixel e il tracking degli eventi pubblicitari sono gestiti da un modulo diverso in questo batch.
Quando le wishlist ospite sono abilitate, lo script front salva gli ID prodotto nel localStorage del browser e restituisce risposte in modalità ospite per le azioni di aggiunta e rimozione. Lo storage da loggati usa le tabelle database del modulo.
La configurazione JavaScript marca il cliente come loggato e l'azione di sincronizzazione può inviare gli elementi localStorage al server, così vengono aggiunti alla wishlist predefinita del cliente.
Le wishlist nel database hanno un token di 32 caratteri. La vista front può caricare i prodotti per token, e il template tratta il proprietario loggato in modo diverso da un visitatore che visualizza una wishlist condivisa.
Quando un cliente loggato salva un prodotto, il modulo memorizza il prezzo al momento dell'aggiunta. L'elenco prodotti confronta quel prezzo salvato con il prezzo attuale del prodotto e segnala un calo quando il prezzo attuale è più basso.
No. Questo modulo è principalmente un tracker automation Brevo e sync registrazione cliente, non una integrazione completa di eventi carrello/ordine/prodotto.
- Gestisce:
displayBeforeBodyClosingTagcarica lo script automation Brevo, chiama la funzione page-tracking e identifica il visitatore per email quando un cliente è loggato.actionCustomerAccountAddpuò creare o aggiornare il nuovo cliente come contatto Brevo quando auto-subscribe è abilitato. - Non gestisce: aggiornamenti carrello, payload product-view, eventi acquisto su conferma ordine, eventi abandoned-cart o eventi stato ordine. Il modulo non registra hook carrello, ordine o prodotto per queste azioni.
Se ti servono abbandono carrello, ricavi da acquisto o automazione del comportamento prodotto in Brevo, questo modulo richiederebbe hook evento aggiuntivi o un'integrazione separata che invii quegli eventi Brevo specifici.
La lista hook è il limite importante: il modulo registra solo displayBeforeBodyClosingTag e actionCustomerAccountAdd. Il template storefront crea window.sib, carica https://sibautomation.com/sa.js?key=..., mette in coda le funzioni standard Brevo e chiama window.sendinblue.page(). Se un cliente è loggato, chiama anche window.sendinblue.identify() con l'indirizzo email. In quel payload browser non vengono aggiunti ID prodotto, righe carrello, riferimenti ordine, totali o stati ordine.
Alla creazione account, il modulo posta all'endpoint contatti Brevo con l'email del cliente, FIRSTNAME, LASTNAME, updateEnabled=true e il LIST_ID configurato quando salvato. È utile per crescita lista e automazione base di ingresso, ma è separato dal tracciamento eventi ecommerce.
Registered hooks: displayBeforeBodyClosingTag, actionCustomerAccountAdd
Contact API: POST https://api.brevo.com/v3/contacts
Tracked browser event here: page view, plus logged-in email identify
Not present here: cart payload, purchase payload, abandoned cart eventAbilita il modulo, aggiungi una Brevo API key e mantieni abilitata la sincronizzazione automatica delle registrazioni. Quando PrestaShop crea un account cliente, l'hook actionCustomerAccountAdd invia email più attributi FIRSTNAME e LASTNAME a Brevo, e include il list ID configurato quando salvato.
Le impostazioni rilevanti sono ENABLED, API_KEY, LIST_ID e AUTO_SUBSCRIBE. All'installazione, il modulo parte con ENABLED=0, API key vuota, list ID vuoto, tracker client key vuota e AUTO_SUBSCRIBE=1. Quindi la configurazione abituale è: attiva Brevo, incolla la API key da Brevo, inserisci opzionalmente il list ID numerico per i nuovi contatti e lascia abilitato Auto-subscribe New Customers.
La sincronizzazione gira solo alla creazione di un nuovo account cliente perché il modulo ascolta actionCustomerAccountAdd. Prima controlla che il modulo sia attivo, che la API key esista, che auto-subscribe sia abilitato e che PrestaShop abbia fornito un oggetto newCustomer caricato. Se uno di questi controlli fallisce, ritorna senza inviare nulla a Brevo.
Quando invia, il modulo posta JSON a https://api.brevo.com/v3/contacts con timeout cURL di 10 secondi e verifica peer SSL abilitata. Imposta updateEnabled a true, quindi un contatto Brevo esistente può essere aggiornato invece di causare un errore da contatto duplicato. Questa versione della fonte non importa in bulk i clienti esistenti e non sincronizza modifiche profilo successive salvo che PrestaShop crei un nuovo account tramite quell'hook.
Required: ENABLED=1, API_KEY set, AUTO_SUBSCRIBE=1
Optional: LIST_ID=123
Sent fields: email, FIRSTNAME, LASTNAME, listIds when configuredSì. L'hook storefront carica il tracker automation Brevo solo quando il modulo è abilitato, la Brevo API Key è configurata e la Client Key è configurata. Il campo Client Key nelle impostazioni del modulo è etichettato Client Key (Tracker), e l'hint sorgente indirizza i merchant a Brevo > Automation > Settings > Tracking Code.
Per confermare che il tracker è caricato, apri il sorgente storefront o gli strumenti sviluppatore del browser e cerca https://sibautomation.com/sa.js?key=... con script id sendinblue-js. Il template inizializza window.sib.client_key, mette in coda sendinblue.track, sendinblue.identify, sendinblue.trackLink e sendinblue.page, identifica i clienti loggati per email, poi chiama window.sendinblue.page().
Se non vedi quello script, controlla prima interruttore modulo abilitato, API Key e Client Key. L'hook restituisce una stringa vuota quando manca uno qualsiasi di questi prerequisiti.
Il requisito API key conta anche se il tracker browser usa la Client Key. In questo modulo, isActive() è condiviso dall'hook tracker e controlla sia ENABLED sia API_KEY; poi l'hook controlla separatamente CLIENT_KEY. Un negozio con solo la Client Key salvata quindi non emetterà comunque nulla finché non viene configurata anche la API key.
Required for tracker output:
ENABLED=1
API_KEY=xkeysib-...
CLIENT_KEY=Brevo automation tracker keyL'output tracker è limitato allo script automation Brevo, page tracking e identificazione email loggata. In questa versione della fonte non aggiunge contenuti carrello, totali ordine, metadati prodotto o eventi acquisto.
Sì, la sincronizzazione automatica delle registrazioni può essere disabilitata dalla configurazione del modulo. L'hook PrestaShop actionCustomerAccountAdd controlla lo switch AUTO_SUBSCRIBE prima di inviare un nuovo cliente a Brevo, quindi il modulo può restare installato mentre la sincronizzazione registrazioni è disattivata.
L'impostazione è etichettata Auto-subscribe New Customers nelle opzioni del modulo. Il suo default è abilitato su una nuova installazione, ma l'hook lo controlla ogni volta che PrestaShop crea un account cliente. Quando AUTO_SUBSCRIBE è off, l'hook esce prima di validare l'oggetto nuovo cliente o chiamare la Brevo contacts API.
Disabilitare questo switch ferma solo la sincronizzazione registrazione-contatto. Non disinstalla il modulo, non rimuove credenziali API salvate e non disabilita automaticamente il tracker automation storefront. Se ENABLED, API_KEY e CLIENT_KEY sono ancora configurati, l'hook tracker può ancora caricare lo script Brevo e chiamare la funzione page-tracking.
Inoltre non disiscrive o elimina contatti già creati in Brevo. Semplicemente impedisce a questo modulo di inviare future creazioni contatto da nuovi account finché lo switch resta off.
AUTO_SUBSCRIBE=1: new customer can be posted to Brevo contacts
AUTO_SUBSCRIBE=0: actionCustomerAccountAdd returns before syncContactToBrevo()Puoi aggiungere Crisp chat a PrestaShop inserendo il tuo Crisp Website ID e abilitando il modulo. L'avviso di configurazione del modulo si aspetta il Website ID in formato UUID, ma il modulo richiede solo che il campo non sia vuoto; non impone il pattern UUID esatto al salvataggio o alla visualizzazione del widget. In pratica dovresti comunque incollare il vero Website ID in formato UUID da Crisp, perché un valore arbitrario non vuoto può essere salvato e renderizzato ma potrebbe non caricare un widget funzionante.
All'installazione, il modulo Crisp crea default chat con ENABLED=1, WEBSITE_ID vuoto, SHOW_MOBILE=1, PAGES=all, DELAY=0 e PASS_USER_DATA=1. Poiché il Website ID parte vuoto, il modulo può essere installato con successo ma il widget resta inattivo finché quell'ID non viene salvato.
L'avviso required-configuration si aspetta formato UUID, per esempio xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. L'aiuto configurazione punta a Crisp sotto Settings > Website Settings > Setup instructions. Una volta salvato un valore non vuoto, lo storefront applica comunque le stesse regole di visualizzazione, quindi il widget rispetta lo switch enabled, un Website ID non vuoto, l'impostazione mobile e il targeting pagina.
Quando queste regole sono soddisfatte, il template imposta window.CRISP_WEBSITE_ID, opzionalmente inserisce dati email/nome del cliente loggato e aggiunge https://client.crisp.chat/l.js in modo asincrono nell'head della pagina.
Minimum setup:
Enable Crisp Chat = Yes
Website ID = UUID from Crisp
Show on Pages = All Pages, Product Pages, Category Pages or Checkout PagesSì, Crisp chat può essere limitata per tipo pagina PrestaShop. Il guard chat condiviso supporta tutte le pagine, pagine prodotto, pagine categoria o controller checkout, inclusi cart, order, order-opc, orderopc e checkout, prima di emettere lo script Crisp.
L'impostazione è il campo select condiviso Show on Pages. I valori salvati supportati sono all, product, category e checkout. Il default del modulo è all, quindi una nuova installazione con Website ID valido sarà idonea a mostrarsi su ogni pagina storefront salvo modifica del merchant.
La corrispondenza pagina usa il controller corrente PrestaShop php_self. La modalità solo prodotto corrisponde esattamente a product, solo categoria corrisponde esattamente a category, e checkout corrisponde a cart, order, order-opc, orderopc o checkout. Lo switch mobile viene controllato separatamente, quindi una pagina può corrispondere alla regola pagina e restare comunque nascosta su mobile se SHOW_MOBILE è off.
Show on Pages = all -> every page
Show on Pages = product -> product controller only
Show on Pages = category -> category controller only
Show on Pages = checkout -> cart/order checkout controllersSe in PAGES è salvato un valore inatteso, il ramo default del guard condiviso consente la pagina invece di bloccarla. Per un targeting prevedibile, usa uno dei quattro valori esposti dal form.
Sì, ma solo quando il passaggio dati cliente è abilitato e l'acquirente è loggato. L'impostazione è lo switch Pass Customer Data nella configurazione del modulo Crisp; impostalo su No per impedire al modulo di inviare dati identità cliente loggato a Crisp.
- Quando
PASS_USER_DATAè off, l'helper chat condiviso restituisce campi cliente vuoti. - Quando è on e il cliente è loggato, l'helper restituisce l'email del cliente e nome più cognome del cliente.
- Il template Crisp li invia come
user:emaileuser:nicknameprima di caricarehttps://client.crisp.chat/l.js.
I visitatori anonimi ricevono comunque il widget Crisp quando Website ID e regole display lo consentono, ma nessuna email o nome cliente PrestaShop viene passato perché non c'è un oggetto cliente loggato.
Su una nuova installazione, PASS_USER_DATA ha come predefinito 1, quindi i merchant che non vogliono questo passaggio dati dovrebbero disattivare deliberatamente lo switch. L'helper espone al template solo due valori: customer_email e customer_name. Non include dati indirizzo, numeri telefono, contenuti carrello, storico ordini o ID cliente PrestaShop.
Anche l'hook Crisp deve prima soddisfare le normali regole di visualizzazione del modulo. Se il modulo è disabilitato, il Website ID manca, la visualizzazione mobile è bloccata o la regola pagina non corrisponde, il template non viene renderizzato e nessun dato cliente viene inviato a Crisp.
PASS_USER_DATA=1 + logged-in customer: email and first name + last name can be pushed
PASS_USER_DATA=0 or anonymous visitor: customer_email and customer_name stay emptySì, lo script Crisp può essere ritardato di un numero di secondi configurato. L'attuale template hook PrestaShop avvolge il loader Crisp in setTimeout quando il ritardo è superiore a zero; non attende scroll, click, touch o altra interazione utente.
L'impostazione salvata è DELAY, mostrata nel form condiviso come Fallback Delay (seconds). Nel modulo Crisp attuale, l'hook passa quel valore al template come intero. Se il valore è maggiore di zero, il template avvolge tutto il blocco di setup Crisp e append script in setTimeout(..., DELAY * 1000).
Un valore 0 significa che il template non aggiunge un wrapper timeout, quindi il setup Crisp gira subito quando l'output hook viene parsato. Anche se la descrizione del campo condiviso menziona prima interazione utente e fallback, questo template Crisp implementa solo il comportamento timer descritto sopra.
DELAY=0 -> no setTimeout wrapper; load immediately
DELAY=5 -> run Crisp setup after 5 seconds
DELAY=15 -> run Crisp setup after 15 secondsIl ritardo non bypassa la normale catena di guard. Il modulo deve comunque essere abilitato, il Website ID deve essere presente, la visualizzazione mobile deve essere consentita per visitatori mobile e la regola targeting pagina deve corrispondere prima che qualsiasi script ritardato venga stampato.
Sì. Configura gli ID prodotto esclusi nell'impostazione lista prodotti del modulo, per esempio come lista separata da virgole. L'override rimuove i prodotti esclusi dal pacchetto passato al calcolo cart-rule di PrestaShop, quindi gli sconti monetari vengono calcolati solo sui prodotti idonei.
Excluded product IDs: 42,108,315
Cart: #42 $100 excluded + #77 $50 eligible
Voucher: 20% off products
Before exclusion: 20% of $150 = $30 discount
After exclusion: 20% of $50 = $10 discount; #42 stays at full priceLa stessa lista di esclusione può essere combinata con esclusioni categoria e produttore perché il modulo unisce tutte e tre le fonti in un unico set di prodotti esclusi. Gli sconti percentuali si applicano solo ai prodotti idonei. Le riduzioni a importo fisso vengono ripartite tramite il pacchetto filtrato, mentre spedizione gratuita e comportamento regalo sono lasciati alla normale gestione cart-rule di PrestaShop.
L'impostazione lista prodotti è salvata come PRODUCTS. Il resolver legge il valore separato da virgole, converte ogni voce con intval, rimuove valori zero vuoti e poi unisce quegli ID con ID derivati da categorie e produttori. La lista finale viene messa in cache per la richiesta PHP corrente, evitando di ripetere le query categoria e produttore durante lo stesso calcolo carrello.
L'override CartRule cambia solo regole con una riduzione monetaria: reduction_percent maggiore di zero o reduction_amount maggiore di zero. Se il modulo non è abilitato, se la lista esclusioni configurata risolve vuota o se il pacchetto cart-rule corrente non contiene prodotti esclusi, delega invariato al calcolo parent di PrestaShop.
Poiché il filtro controlla id_product, l'esclusione si applica al prodotto nel suo insieme. Se un prodotto ha combinazioni, la fonte non distingue una combinazione attributi da un'altra in questo passaggio di esclusione.
Stored setting: PRODUCTS=42,108,315
Resolver output: [42,108,315,...category matches,...manufacturer matches]
Override input: package products
Override output: package products without excluded id_product valuesSì. Le esclusioni possono essere inserite come ID prodotto diretti, ID categoria e ID produttore. I campi configurazione admin sono liste separate da virgole, e il resolver li converte in una lista finale di ID prodotto prima del calcolo sconto.
PRODUCTS=12,15
CATEGORIES=3,7
MANUFACTURERS=1,4Con quella configurazione, i prodotti 12 e 15 sono esclusi direttamente. Il modulo interroga anche category_product per ogni prodotto assegnato alle categorie 3 o 7, e interroga product per ogni prodotto il cui id_manufacturer è 1 o 4. Unisce quegli ID, rimuove duplicati con array_unique e mette in cache il risultato per la richiesta corrente.
L'override CartRule chiede poi al modulo quella lista prodotti risolta e filtra i prodotti esclusi dal pacchetto prima che lo sconto cart-rule parent venga calcolato. In termini merchant: i prodotti corrispondenti restano a prezzo pieno, mentre il resto del carrello può comunque ricevere lo sconto voucher.
La regola categoria si basa sugli ID categoria esatti salvati in CATEGORIES. La query fonte legge righe da category_product dove id_category è in quella lista; non percorre l'albero categoria in PHP. Se un negozio deve escludere anche tutte le sottocategorie, quegli ID sottocategoria dovrebbero essere inclusi, salvo che i prodotti siano assegnati direttamente anche alla categoria padre elencata.
La regola produttore si basa su product.id_manufacturer. Come per i prodotti diretti, l'esclusione finale è per id_product, quindi tutte le combinazioni di un prodotto corrispondente sono trattate come escluse. Le voci di testo non valide sono di fatto ridotte tramite casting a intero; valori vuoti e zero non contribuiscono ID prodotto utili.
Category source: ps_category_product.id_category IN saved category IDs
Manufacturer source: ps_product.id_manufacturer IN saved manufacturer IDs
Final discount filter: id_product not in resolved exclusion listNo, l'override punta alle riduzioni monetarie delle cart-rule, non al beneficio spedizione gratuita in sé. Se il modulo è disabilitato, non sono configurati prodotti esclusi o la regola carrello non ha riduzione percentuale o a importo fisso, l'override delega al normale calcolo CartRule di PrestaShop.
Esempio: un voucher offre 10% di sconto più spedizione gratuita, e il carrello contiene solo prodotti esclusi da questo modulo. Lo sconto prodotto diventa 0 perché ogni prodotto è escluso dalla riduzione monetaria, ma se la regola ha free_shipping e PrestaShop sta calcolando l'azione spedizione, l'override delega al calcolo spedizione parent così la parte spedizione gratuita può comunque applicarsi.
Per carrelli misti, il modulo filtra i prodotti esclusi prima del calcolo parent. Gli sconti percentuali si applicano solo ai prodotti idonei, e gli sconti a importo fisso sono calcolati da PrestaShop sul pacchetto filtrato.
Il fast path è importante per voucher solo spedizione gratuita. Quando una regola carrello non ha reduction_percent e non ha reduction_amount, l'override restituisce il risultato parent di PrestaShop senza filtrare il pacchetto. Questo significa che un voucher pura spedizione gratuita segue le normali condizioni voucher PrestaShop e non viene ridotto solo perché i prodotti sono nella lista esclusioni.
Quando tutti i prodotti sono esclusi e una regola combina uno sconto monetario con spedizione gratuita, l'override restituisce 0 per la parte monetaria salvo che il filtro corrente sia uno dei filtri action shipping/all di PrestaShop. Per quei filtri shipping/all chiama il calcolo parent con FILTER_ACTION_SHIPPING, che è la ragione a livello fonte per cui il beneficio spedizione può restare disponibile.
Un dettaglio pratico: l'avviso carrello opzionale è separato dalla matematica dello sconto. Il renderer avviso controlla se modulo e avviso sono abilitati, se il carrello ha regole carrello e se sono presenti prodotti esclusi. Non ispeziona se la regola carrello è monetaria o solo spedizione gratuita, quindi il messaggio può comunque essere informativo mentre PrestaShop gestisce normalmente la spedizione.
Sì, il modulo può mostrare un avviso carrello quando sono presenti prodotti esclusi. In PrestaShop l'avviso appare solo quando modulo e impostazione avviso sono abilitati, il carrello ha regole carrello e almeno un prodotto carrello corrisponde alla lista esclusioni.
La funzione avviso è abilitata di default all'installazione con SHOW_NOTICE=1. Il testo avviso multilingua predefinito è The following products are excluded from the applied discount:, e i merchant possono modificare NOTICE_TEXT dalle impostazioni modulo. Il modulo registra sia displayShoppingCart sia displayShoppingCartFooter; l'hook footer è mantenuto come alias di compatibilità per negozi che usano ancora il vecchio posizionamento hook.
Il renderer ha anche un guard duplicati. Una volta che un avviso è stato renderizzato durante la richiesta, $cartNoticeRendered impedisce allo stesso messaggio di apparire due volte se il tema esegue entrambi gli hook carrello.
Il modulo costruisce la lista nomi prodotto dai prodotti del carrello corrente il cui id_product appare nella lista esclusioni risolta. Se product_name non è disponibile ripiega su name, e poi su un'etichetta generica con numero prodotto. Il template effettua escape sia del testo avviso sia dei nomi prodotto prima dell'output.
Notice shown only if:
ENABLED=1
SHOW_NOTICE=1
cart has at least one cart rule
cart contains at least one resolved excluded productSe non è applicato alcun voucher/cart rule, l'avviso è intenzionalmente nascosto anche se nel carrello ci sono prodotti esclusi. Questo mantiene il messaggio legato al momento in cui un cliente si aspetta uno sconto e potrebbe chiedersi perché alcuni articoli sono rimasti a prezzo pieno.
Il campo richiesto è il HubSpot Portal ID. L'avviso di configurazione obbligatoria del modulo resta attivo finché il campo è vuoto.
Il template HubSpot esaminato identifica i clienti connessi tramite e-mail quando pass-user-data è attivo. Non invia da PHP dati di visitatori anonimi.
Il trait chat condiviso supporta tutte le pagine, le pagine prodotto, le pagine categoria o le pagine legate al checkout, come cart, order, order-opc, orderopc e checkout.
No. Il codice usa un timeout configurato in millisecondi prima di renderizzare il widget. È un ritardo temporale, non un loader attivato dall'interazione.
Nei file letti qui non è presente alcun motore di regole automatico. L'assegnazione del badge viene salvata per prodotto in mprproductbadges e il form admin richiede un prodotto selezionato.
La tabella salva id_product, badge_name, badge_color, badge_bg_color, position e active, oltre all'ID badge auto-incrementale.
La query storefront filtra per prodotto e stato attivo, poi ordina i risultati per position ASC. I numeri di posizione più bassi vengono mostrati per primi.
Sì. MprProductBadgesConfig espone uno switch ENABLED. Quando è disattivato, renderBadges() restituisce una stringa vuota prima di leggere i dati prodotto.
Il modulo deve essere abilitato e deve esistere un Pixel ID. Il validatore della configurazione obbligatoria accetta Pixel ID contenenti lettere, numeri, underscore o trattini con lunghezza da 8 a 128 caratteri.
displayOrderConfirmation renderizza l'evento purchase browser. actionValidateOrder mette in coda un evento purchase lato server quando Conversions API è configurata e il tracking purchase è abilitato.
Gli eventi header e purchase ricevono un event_id da PrestaShopConversionBuilder::buildEventId, e lo stesso valore viene copiato in client_dedup_id. La coda Purchase CAPI usa lo stesso event ID basato sull'ordine.
Le regole possono attivarsi da clic CSS, corrispondenze URL, corrispondenze controller/module o eventi DOM nominati. Il normalizer valida i requisiti trigger, limita la lunghezza del selettore e sanifica i parametri custom prima di salvare il JSON.
Il feed richiede un bearer token e uno username quando il modulo non è gestito da Social Revolution. Il modulo può chiamare X API per risolvere lo user ID da quello username.
La configurazione controlla testo del post, data, like, repost, risposte, media e dettagli autore. Il codice crea anche permalink e gestisce le espansioni media restituite dall'API.
Il modulo mappa pagine e hook del front office PrestaShop agli eventi Criteo OneTag, con impostazioni separate per ogni evento standard.
| Evento | Dove si attiva | Note |
|---|---|---|
viewHome | Home page da displayHeader | Controllato dall'impostazione tracking home. |
viewItem | Pagina prodotto da displayHeader | Usa il contesto prodotto corrente. |
viewCategory | Pagina categoria/listing da displayHeader | Usa contesto categoria/listing e dati prodotto visibili dove disponibili. |
viewSearchResult | Pagina risultati ricerca da displayHeader | Include contesto ricerca e dati prodotto corrispondenti dove disponibili. |
viewBasket | Pagina carrello o checkout da displayHeader | Usa le righe del carrello corrente. |
addToCart | JavaScript front office nel template header | Catturato da aggiornamenti carrello e interazioni add-to-cart. |
trackTransaction | Conferma ordine da displayOrderConfirmation | Usa riferimento ordine, valuta e righe acquistate. |
custom | Regole configurate per clic, URL, controller o eventi DOM | Funziona solo quando il tracking custom-event è abilitato e le regole corrispondono. |
Tutti gli eventi browser dipendono comunque dal modulo attivo, da un Criteo partner ID configurato, dal superamento dei controlli tracking/consenso del modulo da parte del visitatore e dall'abilitazione del toggle per-evento rilevante.
Sì, può rispettare il consenso cookie quando RESPECT_CONSENT è abilitato, che è il default del modulo. Il modulo controlla prima mprcookiesrevolution parsando il cookie mprcr_consent e cercando marketing:1. Se quel cookie manca, ripiega sul valore DEFAULT_CONSENT di mprcookiesrevolution.
Se Cookies Revolution non è attivo, controlla mprcookiebanner. Un valore cookie mprcookie_consent=granted consente Criteo; qualsiasi altro valore presente lo blocca. Se il cookie banner è assente, il modulo usa il DEFAULT_CONSENT di mprcookiebanner.
Se nessun modulo consenso MPR supportato è installato o attivo, hasMarketingConsent() restituisce consentito, quindi Criteo non viene bloccato solo dal consenso. Per una configurazione rigida consent-first, mantieni Respect marketing consent abilitato ed esegui uno dei moduli consenso MPR supportati. Il gate consenso lato client è abilitato solo quando Respect marketing consent è on e mprcookiesrevolution o mprcookiebanner è attivo.
Il controllo consenso fa parte di canTrack(), usato prima degli eventi header, degli eventi acquisto su conferma ordine e dell'accodamento acquisto lato server. Quindi quando il controllo consenso lato server blocca il tracciamento, il modulo non costruisce i normali eventi browser e non accoda la conversione lato server da actionValidateOrder.
Il template browser include anche un controllo consenso lato client quando il gate consenso è attivo. Può chiamare window.MPRCR.isGranted('marketing') quando Cookies Revolution espone quell'helper, oppure può leggere direttamente gli stessi cookie mprcr_consent e mprcookie_consent. Se quel controllo JavaScript restituisce false, si ferma prima di inviare eventi Criteo in window.criteo_q.
RESPECT_CONSENT=0: consent check is bypassed
RESPECT_CONSENT=1 + mprcr_consent contains marketing:1: allowed
RESPECT_CONSENT=1 + mprcookie_consent=granted: allowed
RESPECT_CONSENT=1 + no supported MPR consent module: allowed by this moduleIl consenso non è l'unico guard di tracciamento. Il tracciamento browser richiede comunque anche ENABLED=1 e un Criteo Partner ID numerico valido, e la navigazione dipendenti può essere esclusa quando EXCLUDE_EMPLOYEES è abilitato.
Sì, quando SEND_CUSTOMER_IDENTIFIERS è abilitato. Il modulo costruisce eventi cliente Criteo separati insieme ai normali eventi pagina o acquisto. Non invia mai l'email in chiaro in quegli eventi cliente; la converte in minuscolo, la pulisce e poi la hasha con SHA-256. Anche l'ID cliente viene hashato con prefisso customer:.
[{"event":"setCustomerId","id":"sha256(customer:123)"},{"event":"setEmail","email":"sha256(alice@example.com)"}]I valori sopra sono placeholder che mostrano solo la forma. Nell'output storefront reale i campi hash contengono stringhe esadecimali SHA-256 di 64 caratteri. Gli eventi vengono omessi completamente quando gli identificatori cliente sono disabilitati o quando nessun cliente valido può essere caricato dal contesto corrente o dall'ordine.
L'impostazione è disabilitata di default, quindi un merchant deve fare opt-in prima che questi eventi vengano creati. Per i normali eventi pagina, il modulo usa il cliente PrestaShop corrente dal contesto storefront. Per gli eventi acquisto su conferma ordine, può caricare il cliente dall'id_customer dell'ordine. In entrambi i percorsi, la fonte controlla che esista un oggetto cliente valido prima di aggiungere qualsiasi evento identificatore.
I template browser posizionano questi eventi identificatore nella coda universale con setAccount e setSiteType, prima che l'evento pagina, basket o acquisto venga inviato a window.criteo_q. Il modulo non invia nome cliente, numero telefono, indirizzo postale o ID cliente PrestaShop raw in quegli eventi cliente browser.
Per il tracciamento acquisto lato server, lo stesso flag opt-in può anche aggiungere un valore email hashato alla query Retail Media quando il cliente dell'ordine ha un indirizzo email. Quel percorso lato server dipende comunque dai normali guard di tracciamento: il modulo deve essere attivo, il consenso deve consentire il tracciamento quando abilitato, il tracciamento acquisti deve essere on e le impostazioni Criteo lato server devono essere valide.
Sì. Il modulo ha tracciamento acquisti Criteo Retail Media lato server opzionale. Per usarlo, il tracciamento acquisti deve essere abilitato e le impostazioni lato server devono essere configurate: Criteo partner ID, S2S_ENABLED, regione eu o us, API page ID desktop e mobile e un limite batch. Il limite batch lato server predefinito è 20, con validazione limitata da 1 a 100.
Quando PrestaShop attiva actionValidateOrder, l'hook accoda una conversione trackTransaction per provider criteo_retailmedia ed elabora subito un piccolo batch, ma non ispeziona da solo lo stato ordine o lo stato pagamento. Il percorso coda gira quando il tracciamento modulo può girare, il tracciamento acquisti è abilitato, la configurazione lato server è valida e un oggetto Order caricato è presente. Se richiedi semantica solo-pagato, deve essere garantita dal contesto di validazione ordine o aggiunta come controllo stato esplicito.
È registrato anche un task cron chiamato send_criteo_retailmedia_conversions per processare conversioni in coda ogni 300 secondi. La richiesta server viene inviata all'endpoint Retail Media di Criteo per la regione configurata, come d.eu.criteo.com o d.us.criteo.com, con transaction ID, item, price, quantity, currency, dati visitatore/cliente e page ID. L'impostazione opzionale S2S_SEND_IP_UA controlla se includere IP e user-agent. Questa coda lato server è separata dall'evento browser trackTransaction nella pagina di conferma ordine, quindi invii server falliti possono essere ritentati senza dipendere dalla sessione browser del cliente.
La funzione lato server viene installata con la tabella coda conversioni condivisa e la registrazione cron. È disabilitata di default: S2S_ENABLED=0, S2S_REGION=eu, page ID desktop trackTransactionApiDesktop, page ID mobile trackTransactionApiMobile, S2S_SEND_IP_UA=1 e S2S_BATCH_LIMIT=20. Il Partner ID deve essere numerico e da 4 a 20 cifre, la regione deve essere eu o us, e i page ID possono contenere lettere, numeri, underscore, due punti e trattino.
Su validazione ordine, il modulo controlla prima i guard di tracciamento di alto livello: Criteo deve essere attivo, il tracciamento acquisti deve essere abilitato, il consenso deve consentire il tracciamento quando il guard consenso è on, e le impostazioni lato server devono passare la validazione. Se uno di questi controlli fallisce, nessun evento server viene accodato.
Il payload acquisto è costruito dai dati riga ordine. Item ID, prezzi e quantità sono uniti con caratteri pipe per la query Criteo Retail Media. Se nessun item ID può essere mappato, il modulo invia un fallback item=None, price=0.00 e quantity=1 invece di un campo richiesto vuoto. Il valore environment è selezionato dallo user agent come desktop d, mobile m o tablet t, e quell'environment sceglie il page ID desktop o mobile.
Il controller admin espone anche strumenti operativi per questa coda: può mostrare conteggi pending/sending/sent/failed, inviare una sonda API e riportare eventi Criteo lato server falliti a pending per retry.
Required server-side setup:
ENABLED=1
PARTNER_ID=12345
TRACK_PURCHASE=1
S2S_ENABLED=1
S2S_REGION=eu or us
S2S_DESKTOP_PAGE_ID=trackTransactionApiDesktop
S2S_MOBILE_PAGE_ID=trackTransactionApiMobileQuando è configurato uno user ID, il modulo chiama l'endpoint Facebook Graph media con campi come caption, media_type, media_url, thumbnail_url, permalink, timestamp, like_count e comments_count. Senza user ID, usa come fallback l'endpoint Instagram Basic Display me/media.
Il numero di post configurato è limitato nel codice a 25. La configurazione predefinita usa 12 post.
Nel codice esaminato non è stato trovato alcun fetch delle Stories né un percorso template per le Stories. Il feed gestisce i post media recenti, inclusi immagini, miniature video e badge carousel.
Il servizio di sincronizzazione verifica che mprgalleryrevolution sia attivo, crea o riutilizza una galleria Instagram, scarica media immagine, crea record media Gallery Revolution e salva record di sincronizzazione con dati di engagement.
Il modulo crea la propria tabella mprpsvls_view e registra le visualizzazioni delle pagine prodotto per prodotto, shop e ospite. I totali vengono contati come ospiti distinti nel periodo configurato.
No. I conteggi vendita sono calcolati dagli ordini PrestaShop e dai dettagli ordine, filtrati per ordini validi e periodo configurato. Le impostazioni di boost possono cambiare il numero mostrato, ma il conteggio sorgente arriva dallo storico ordini.
Se l'opzione di conteggio minimo è attiva, il modulo non restituisce nulla quando tutti i contatori abilitati sono sotto il minimo configurato. Questo evita blocchi statistiche vuoti o poco efficaci nella pagina prodotto.
Il modal viene caricato tramite il controller AJAX del modulo e può mostrare ordini validi recenti per il prodotto corrente. I dati includono nome cliente, città, paese, nome prodotto, quantità e data, con anonimizzazione del nome disponibile da configurazione.
Il modulo usa mprscd_description per categoria, shop e record attivo, e mprscd_description_lang per il testo descrizione multilingue.
Non per impostazione predefinita. La configurazione FIRST_PAGE_ONLY viene installata come abilitata, e il renderer restituisce output vuoto quando il numero di pagina categoria richiesto è maggiore di 1.
Nelle versioni PrestaShop che usano l'hook del form categoria Symfony, il modulo aggiunge una textarea formattata traducibile chiamata mprscd_description direttamente dopo il campo descrizione nativo.
L'injector inserisce la chiamata hook Smarty standard {hook h='displayMprSecondCatDesc'} racchiusa nei commenti marker del modulo. Rifiuta percorsi non sicuri fuori dai template del tema e può rimuovere in seguito le injection marcate.
La costante del modulo PLATFORMS elenca facebook, instagram, x, linkedin, pinterest, tiktok e youtube. Il controller connect include percorsi OAuth per le piattaforme dove sono implementati.
Il modulo istanzia servizi di tracking per Facebook, Pinterest, Microsoft Ads, Google Ads, LinkedIn, TikTok, X, Snapchat, Reddit, Taboola e Outbrain. Gli hook header, conferma ordine, validazione ordine e sign-up delegano a questi servizi.
I task cron dichiarati processano la coda post ogni 60 secondi, aggiornano la cache feed ogni 1800 secondi, rinnovano i token OAuth in scadenza ogni 3600 secondi, raccolgono analytics ogni giorno alle 06:00 e processano le code conversione ogni 300 secondi per provider.
La schermata analytics filtra per intervallo date e mostra post, post falliti, reach, impressions, engagement, clic e ultimi follower per ogni riga piattaforma restituita al template.
Quando configurata, accoda payload di conversione lato server con dati evento e identificatori disponibili come twclid, campi cliente hashati e opzionalmente IP e user agent, poi invia richieste firmate allo X ads API endpoint.
Il modulo deve essere abilitato e una Pixel ID valida deve essere salvata. Purchase tracking richiede anche una purchase event ID, e Conversions API richiede credenziali proprie quando abilitata.
Il codice può costruire PageView, ViewContent, AddToCart, InitiateCheckout, Purchase, Search, AddToWishlist, SignUp ed eventi personalizzati configurati, in base agli switch abilitati e al contesto pagina.
Quando il rispetto del consenso è abilitato, il servizio controlla cookie di consenso supportati e gate di consenso lato client. Il template front può ritardare il caricamento finché viene concesso il consenso marketing.
Aggiungi il tuo Chatra Widget ID e abilita il modulo. L'hook PrestaShop renderizza lo script Chatra prima del tag body di chiusura, assegna l'ID a window.ChatraID e carica https://call.chatra.io/chatra.js in modo asincrono nello storefront. Questo mantiene la configurazione legata alle impostazioni del modulo e al comportamento runtime di PrestaShop.
All'installazione, il modulo Chatra imposta ENABLED=1, WIDGET_ID vuoto, SHOW_MOBILE=1, PAGES=all, DELAY=0 e PASS_USER_DATA=1. Il modulo può quindi essere installato e abilitato, ma non emetterà comunque il widget finché non viene salvato un Widget ID non vuoto.
La pagina configurazione etichetta il campo Widget ID e l'aiuto fonte dice di incollarlo da Chatra sotto Settings > General > Widget code. Il validator required-config controlla solo che il valore non sia vuoto; non applica un formato tipo UUID come fa il modulo Crisp.
Prima del rendering, il guard chat condiviso controlla che il modulo sia abilitato, che il WIDGET_ID richiesto sia presente, che la visualizzazione mobile sia consentita quando il visitatore è su mobile e che la regola targeting pagina selezionata corrisponda al controller corrente. Quando questi controlli passano, il template imposta window.ChatraID, crea window.ChatraSetup e aggiunge lo script loader Chatra in modo asincrono.
Minimum setup:
Enable Chatra Chat = Yes
Widget ID = value copied from Chatra widget code
Show on Pages = all, product, category or checkoutSe PASS_USER_DATA è abilitato e l'acquirente è loggato, il template inserisce anche l'email del cliente in ChatraSetup.clientId. Non invia nome cliente, indirizzo, contenuti carrello o storico ordini in questo template.
Sì, lo script Chatra può essere ritardato di un numero di secondi configurato. In PrestaShop il template avvolge il loader widget in setTimeout quando il valore ritardo è maggiore di zero, poi carica lo stesso script Chatra dopo quel ritardo.
L'impostazione salvata è DELAY, esposta nel form chat condiviso come Fallback Delay (seconds). Il modulo la passa al template Smarty come intero. Quando DELAY>0, il template avvolge sia l'assegnazione window.ChatraID/window.ChatraSetup sia il blocco append script in setTimeout(..., DELAY * 1000).
Quando DELAY=0, il template non avvolge il loader in setTimeout, quindi Chatra viene inizializzato subito quando l'output hook viene parsato. Il template attuale non implementa caricamento su scroll, click, touch o prima interazione; è un semplice timer basato su secondi.
DELAY=0 -> load immediately
DELAY=3 -> wait 3 seconds, then load Chatra
DELAY=10 -> wait 10 seconds, then load ChatraL'impostazione ritardo influisce solo sul timing dopo che il modulo ha deciso di renderizzare. Il normale guard si applica comunque prima: il modulo deve essere abilitato, WIDGET_ID deve essere salvato, l'impostazione mobile deve consentire il dispositivo del visitatore e la regola targeting pagina deve corrispondere.
Sì, il modulo può limitare Chatra per tipo pagina PrestaShop. La sua configurazione supporta tutte le pagine, pagine prodotto, pagine categoria e controller collegati al checkout come cart, order e checkout, quindi il widget non viene necessariamente renderizzato su ogni pagina storefront.
Nella configurazione del modulo questa è l'impostazione PAGES. Le scelte integrate sono all, product, category e checkout; checkout copre la famiglia controller carrello/ordine usata da diverse versioni PrestaShop, inclusi cart, order, order-opc, orderopc e checkout. Il widget viene renderizzato da displayBeforeBodyClosingTag solo quando il modulo è abilitato, il Widget ID richiesto è presente, l'impostazione mobile consente il dispositivo corrente e il controllo pagina passa.
C'è un limite pratico: questo è targeting per tipo pagina, non un builder di regole per URL. Quando PAGES è impostato su product, category o checkout, altri nomi controller non passano come consentiti; falliscono il controllo tipo pagina selezionato. Il fallback permissivo è per un'impostazione vuota/all o per un valore configurazione PAGES inatteso. Se devi includere o escludere una singola landing page o un controller molto specifico, serve una regola a livello codice o un layer di targeting più avanzato dentro Chatra stesso.
Sì, ma nello snippet Chatra renderizzato da questo modulo viene passato a Chatra solo l'email del cliente loggato. L'helper chat condiviso può raccogliere sia email sia nome quando PASS_USER_DATA è abilitato e il cliente è loggato, ma il template Chatra scrive solo l'email come window.ChatraSetup.clientId.
Per disabilitare questo passaggio dati, disattiva lo switch Pass Customer Data nelle impostazioni del modulo Chatra. A quel punto l'helper restituisce valori cliente vuoti e il template non emette clientId. Questo template Chatra non stampa nome cliente, dati ordine, dati indirizzo o dati gruppo.
Trigger chat, routing chat, assegnazione operatori e design widget restano configurati dentro Chatra stesso. Il modulo PrestaShop è principalmente responsabile del caricamento di https://call.chatra.io/chatra.js con il Widget ID e ritardo opzionale.
Il valore installato predefinito per PASS_USER_DATA è abilitato, ma i dati restano comunque condizionati: l'oggetto cliente deve esistere, il visitatore deve essere loggato e l'hook storefront deve poter renderizzare. I visitatori ospite non ricevono alcun identificatore cliente da questo modulo. Anche l'impostazione ritardo è gestita localmente: quando DELAY è maggiore di zero, il template avvolge il loader Chatra in setTimeout; quando è zero, il loader gira subito.
Per revisioni privacy, la distinzione importante è che l'helper può restituire un nome completo, ma questo specifico template Chatra non lo emette. L'unico valore derivato dal cliente emesso dal template è il clientId basato su email, e solo quando PASS_USER_DATA resta abilitato.
Sì. Il resolver controlla il targeting entity selector per il prodotto e applica anche regole di gruppo cliente, pianificazione, paese e visibilità stock prima che un tab sia preparato per la visualizzazione.
Il codice supporta i tipi di contenuto html, markdown, entities, mixed, contact e files. I tab entity e mixed possono renderizzare prodotti selezionati e pagine CMS, mentre i tab file espongono download validati.
Il reCAPTCHA del form di contatto è configurabile. Quando è attivo e le chiavi sono configurate, l'handler verifica il token inviato con Google prima di salvare la richiesta o inviare l'email di notifica.
No. L'azione getTabContent carica il tab richiesto, controlla che sia attivo e verifica tramite il resolver che si applichi al prodotto corrente prima di restituire HTML.
Il template hook ha rami per facebook, twitter, pinterest, linkedin, whatsapp e email. Vengono renderizzati solo i network presenti nell'elenco configurato.
Il modulo renderizza sia in displayProductMetaShare sia in displayProductAdditionalInfo, ma displayProductAdditionalInfo restituisce vuoto dopo che productShareRendered è stato impostato.
No. Il template usa semplici link anchor all'URL di condivisione di ogni piattaforma e icone SVG inline. Nel template non ci sono script social di terze parti.
Il metodo render risolve URL prodotto e nome prodotto, li codifica per gli endpoint di condivisione e assegna anche i valori grezzi a Smarty. Se non riesce a risolvere URL o ID prodotto, usa l'URL della pagina corrente.
Il modulo deve essere abilitato e la counter ID deve contenere solo cifre. Il servizio di tracking controlla anche esclusione dipendenti e regole consenso prima del tracking regolare.
In base a configurazione e contesto pagina, prepara dati di tracking per page view, product view, category view, add to cart, add to wishlist, checkout start, ricerca, signup e purchase.
Quando Measurement Protocol è abilitato, counter ID e token sono configurati, e una Yandex client ID valida è disponibile, il hook di validazione ordine può accodare un payload Purchase e processare un piccolo batch.
Il servizio legge i dati consenso di MPR Cookies Revolution e MPR Cookie Banner quando questi moduli sono presenti. Se il rispetto del consenso è disattivato, il tracking è consentito senza questi controlli.
EU VAT Checker valida i numeri IVA tramite VIES sui form indirizzo e sulle richieste AJAX frontend. In PrestaShop carica la validazione su pagine ordine, indirizzo, carrello e checkout, poi controlla anche gli indirizzi salvati tramite hook add e update.
Nello storefront il modulo registra il suo JavaScript di validazione solo per la famiglia pagine checkout/indirizzo: order, address, cart e checkout. Lo script osserva i campi IVA, normalizza i numeri inseriti rimuovendo spazi, punti e trattini, converte in maiuscolo il valore, poi chiama il controller AJAX del modulo. Esegue debounce dei controlli live e valida di nuovo su blur. All'invio form, lo script attiva una chiamata AJAX di validazione quando necessario, ma non impedisce l'invio né attende quella risposta AJAX.
Il blocco è implementato lato server, quindi il controllo non è solo cosmetico. Su PrestaShop 1.7+ il modulo si aggancia alla validazione form indirizzo e aggiunge errori al campo IVA quando il numero IVA non è valido. Sui flussi più vecchi ha anche un hook legacy account/address submit che aggiunge errori controller. Se il numero IVA manca di prefisso paese, il codice può ripiegare sul paese indirizzo selezionato quando quel paese è nell'UE. I risultati sono messi in cache in mpreuvatchecker_cache, con CACHE_HOURS predefinito a 24, quindi i controlli ripetuti non colpiscono sempre VIES.
Le interruzioni VIES sono controllate da ON_UNAVAILABLE. Il default è accept, mentre reject può bloccare il salvataggio indirizzo e skip evita di applicare il risultato VIES. Questa impostazione conta perché la disponibilità EU VIES è fuori dal controllo del tuo negozio.
Sì, può richiedere un numero IVA quando il campo azienda è compilato. In PrestaShop questo è controllato dall'impostazione REQUIRED_COMPANY, e il modulo aggiunge un errore form prima che l'indirizzo venga accettato quando il campo IVA è vuoto.
Il valore predefinito di REQUIRED_COMPANY è off, quindi i merchant devono abilitarlo deliberatamente. Una volta abilitata, la regola è condizionale: il modulo controlla se il campo company ha un valore, e solo allora richiede il campo IVA. Un cliente privato che lascia vuoto company non è costretto a inserire IVA solo perché il modulo è installato.
Il modulo espone la stessa regola al JavaScript front tramite requiredCompany, così gli acquirenti possono vedere il requisito prima dell'invio. La decisione finale avviene comunque in PHP durante la validazione indirizzo, dove il modulo aggiunge l'errore al form indirizzo PrestaShop se company è compilato e IVA manca. Questo lo rende più sicuro di un attributo required solo nel tema, che potrebbe essere aggirato o mancare in un template checkout più vecchio.
Sì, può aggiungere clienti con numeri IVA UE validi a un gruppo clienti selezionato. In PrestaShop questo richiede GROUP_ENABLED e un GROUP_ID valido; qualsiasi prezzo tax-exempt dipende comunque dalla configurazione dei gruppi e delle regole fiscali PrestaShop.
L'assegnazione avviene dopo l'elaborazione add/update indirizzo, non semplicemente durante l'anteprima live AJAX. Quando un indirizzo salvato ha un numero IVA UE parsabile e VIES restituisce valido, il modulo chiama il suo helper gruppo e aggiunge il cliente al gruppo configurato. Se il cliente salva poi uno stato IVA vuoto o non valido, il modulo può rimuovere di nuovo quel gruppo configurato quando la gestione gruppi è abilitata.
Ci sono due dettagli operativi importanti. Primo, il modulo usa gruppi clienti PrestaShop; non riscrive da solo tutte le regole fiscali né garantisce prezzi esenti IVA. Devi comunque configurare correttamente gruppo target e regole fiscali in PrestaShop. Secondo, quando rimuove il gruppo, il codice evita di lasciare il cliente senza alcun gruppo ripiegando sul gruppo clienti predefinito del negozio se necessario.
Puoi scegliere se un’interruzione VIES accetta, rifiuta o salta la validazione. In PrestaShop l’impostazione ON_UNAVAILABLE controlla il risultato del modulo indirizzo, mentre CACHE_HOURS può ridurre le chiamate live ripetute tramite cache.
Paid aggiunge una condizione in cui total_paid_real >= total_paid_tax_incl. Unpaid aggiunge total_paid_real < total_paid_tax_incl. All non aggiunge alcuna condizione di pagamento.
No. La colonna disponibile products_list usa una sottoquery con GROUP_CONCAT per inserire nomi prodotti e quantità in un unico campo riepilogativo della riga ordine.
No. processExport() restituisce false quando non vengono inviate colonne selezionate, e il controller mostra un errore di assenza dati invece di inviare un file vuoto in streaming.
L'installazione salva LIMIT come 10000. Il form permette anche un valore massimo di righe, e la query omette il LIMIT SQL solo quando il limite inviato è zero o inferiore.
Il modulo deve essere attivo e avere un Quora Pixel ID valido. Il tracciamento può comunque essere bloccato dall'esclusione dipendenti o dal gate di consenso quando il caricamento consapevole del consenso è attivo.
La configurazione include toggle per PageVisit, ViewContent, AddToCart, AddToWishlist, InitiateCheckout, Search, Purchase e SignUp, più una configurazione JSON validata per eventi personalizzati.
Il percorso server-side richiede lo switch CAPI, un ad account ID numerico e un access token. Gli eventi vengono accodati, puliti nel tempo e inviati all'endpoint conversioni di Quora in batch configurati.
Solo quando l'advanced matching è attivo e il visitatore è un cliente loggato con indirizzo email. In quel caso il modulo hasha l'email prima di passarla all'inizializzazione del pixel Quora.
Sì, se sono configurati URL video manuali. La modalità manuale senza API estrae gli ID video e usa YouTube oEmbed e URL thumbnail, ma non fornisce lo stesso arricchimento di durata, visualizzazioni e data della modalità API.
Una API key è richiesta quando il modulo deve recuperare automaticamente video da una playlist ID o channel ID tramite YouTube Data API.
L'estrattore ID video gestisce URL watch standard, link brevi youtu.be, URL embed e URL shorts.
La modalità embed apre una lightbox iframe dal feed storefront. La modalità nuova scheda invia invece il visitatore alla pagina video YouTube.
Aggiungi il Microsoft Clarity Project ID, abilita il tracciamento, salva la configurazione del modulo e poi verifica lo script storefront. Il campo Project ID accetta solo da 5 a 64 lettere o numeri, quindi incolla solo il project id, non l'intero tag script Clarity. L'aiuto del modulo indirizza i merchant a clarity.microsoft.com > Settings > Overview.
- In Microsoft Clarity, apri il progetto e copia il Project ID dalle impostazioni progetto.
- In PrestaShop, apri le impostazioni del modulo Microsoft Clarity.
- Incolla il Project ID in Project ID e attiva Enable Microsoft Clarity.
- Salva. Il controller admin rifiuta di abilitare Clarity senza Project ID e rifiuta ID fuori dal formato alfanumerico 5-64.
- Apri una pagina storefront e controlla il sorgente pagina o il pannello network del browser per
https://www.clarity.ms/tag/PROJECT_ID.
L'hook header carica lo script Clarity solo quando il tracciamento può girare: il modulo deve essere attivo, la navigazione dei dipendenti può essere esclusa e il consenso marketing deve essere presente quando il modulo è configurato per rispettare un modulo consenso MPR.
Per impostazione predefinita il modulo si installa con tracciamento disabilitato e project id vuoto, ma la maggior parte degli switch evento è abilitata una volta attivo il tracciamento. Il codice può inviare eventi page view, product view, add-to-cart, wishlist, checkout start, search, purchase e signup, più tag pagina come valuta e tipo pagina. Il tracciamento acquisto viene emesso su conferma ordine e include tag derivati dall'ordine; signup viene salvato come flag cookie di breve durata durante la creazione account e inviato al prossimo rendering header corrispondente.
La gestione consenso è legata ai moduli cookie MPR quando installati. Con RESPECT_CONSENT abilitato, Cookies Revolution viene controllato tramite la categoria marketing mprcr_consent, e Lightweight Cookie Banner tramite mprcookie_consent. Se nessuno dei due moduli è attivo, il modulo tratta il consenso come disponibile. Anche gli eventi custom sono supportati, ma le loro regole JSON sono validate: nomi evento, selettori, trigger URL/controller e payload tag devono rientrare nei limiti del modulo prima che il controller admin li accetti.
Sì, può inviare a Clarity eventi e tag e-commerce di PrestaShop. Il modulo include page view, vista prodotto, aggiunta al carrello, avvio checkout, acquisto, ricerca, wishlist e registrazione; i tag acquisto possono includere valore, valuta, numero articoli e riferimento.
Sì, il modulo può rispettare il consenso prima del tracciamento. Verifica il consenso da mprcookiesrevolution o mprcookiebanner quando disponibili, può inviare un segnale di consenso Clarity e bloccare il tracking client-side fino al consenso marketing su PrestaShop.
Sì, gli eventi Clarity personalizzati possono essere configurati con regole JSON. Il modulo supporta selettori click, regole URL contains, matching di controller o modulo ed eventi DOM, poi sanifica nomi evento e tag prima dell'invio dal frontend PrestaShop.
Sì, il controller override può assegnare un unico H1 a più categorie. Nell'admin PrestaShop, l'Entity Selector salva gli ID categoria selezionati, mentre una modifica diretta su una categoria la stacca dall'override condiviso se il valore H1 cambia.
Puoi usare i placeholder supportati dal modulo nei valori H1 personalizzati. Il resolver sostituisce nome categoria, numero prodotti, numero pagina, etichetta pagina, nome negozio e lingua, poi normalizza l'H1 PrestaShop finale secondo le impostazioni di sicurezza del modulo.
Sì, i valori H1 sono salvati per lingua e possono usare fallback se configurato. Se la lingua PrestaShop corrente non ha valore H1, il resolver può provare la lingua predefinita e poi qualsiasi lingua disponibile prima di restituire nessun override.
No, non è uno strumento di rinomina globale delle categorie. Il modulo modifica il contenuto pagina categoria e, se attivo, l'etichetta del listing product-search, ma non rinomina l'oggetto Category PrestaShop in navigazione, URL o altri contesti catalogo.
Sì, la configurazione dei metodi include Apple Pay, Google Pay, Link, carte, PayPal e altri metodi Stripe. In PrestaShop la disponibilità dei wallet viene verificata e memorizzata, così i wallet non supportati dal browser o dispositivo possono essere nascosti.
Controlla che le chiavi Stripe attive corrispondano alla modalità test o live selezionata. In PrestaShop la modalità test richiede prefissi pk_test e sk_test, mentre la modalità live richiede pk_live e sk_live prima che il checkout risulti configurato.
Sì, restituisce opzioni corriere con nomi, tempi, prezzi, stato selezionato e metodi di pagamento compatibili. In PrestaShop il checkout AJAX salva il corriere scelto nel carrello e nel cookie, poi filtra i pagamenti in base alla compatibilità configurata.
Stripe Express Checkout può mostrare pulsanti su pagine prodotto, carrello, listing e hook express personalizzati. In PrestaShop il modulo registra hook per azioni prodotto, informazioni aggiuntive, pulsanti prodotto, carrello e hook custom, con impostazioni per controllarne la posizione.
Su actionOrderStatusPostUpdate, il modulo cerca il team mappato sul nuovo stato ordine nativo. Se esiste un team e le notifiche di cambio stato sono attive, notifica quel team del movimento dell'ordine.
L'helper allegati consente formati immagine comuni, PDF, file Office e OpenDocument, CSV, testo, RTF, file PowerPoint ed EML. Controlla anche il tipo MIME e rifiuta i file che non rispettano le regole dei tipi consentiti.
Sì. MprWfEmployeePreference salva notification_muted, e il controller AJAX ha un'azione setNotificationMute per il dipendente corrente.
Sì. Il pannello assegna a Smarty l'ultima versione dello storico workflow e un flag ENABLE_CONCURRENCY_CHECK, e anche l'endpoint AJAX del pannello restituisce la versione corrente.
Richiede la Zendesk Chat account key. Il template front aggiunge quella chiave all'URL del https://v2.zopim.com/ widget script.
Sì. Quando il passaggio dati cliente è abilitato e i dati cliente sono disponibili, il template chiama il setter Zendesk live chat con nome ed e-mail del cliente.
Sì. Il trait chat condiviso controlla l'ambito pagina configurato prima del rendering e supporta tutte le pagine, pagine prodotto, pagine categoria e controller relativi al checkout.
Se il ritardo configurato è maggiore di zero, il template avvolge il codice di iniezione script Zendesk in un timeout JavaScript per quel numero di millisecondi.
L’Audit SEO per PrestaShop esamina il Suo negozio reale e i Suoi dati effettivi di Search Console, anziché eseguire una generica checklist da crawler che ignora come PrestaShop è costruito. L’obiettivo è individuare i problemi che spostano davvero il traffico organico su un catalogo PrestaShop e capire perché si verificano nel Suo negozio, tema e stack di moduli specifici. Ecco ciò che uno specialista analizza:
Indicizzabilità
Verifichiamo che le pagine che dovrebbero posizionarsi siano effettivamente idonee a farlo. Questo significa controllare le regole del Suo robots.txt, le direttive noindex e la correttezza dei canonical su prodotti, categorie, pagine CMS ed elenchi paginati. PrestaShop è noto per generare varianti di URL scansionabili, filtri della navigazione a livelli, parametri di ordinamento, ?search_query= e combinazioni di attributi. Che possono gonfiare il crawl budget o frammentare i segnali. Confrontiamo ciò che Lei invia con ciò che Google ha effettivamente indicizzato, così che i divari tra inviato e indicizzato emergano con chiarezza.
Dati strutturati
Validiamo i Suoi JSON-LD Product, Offer, BreadcrumbList e Organization rispetto ai requisiti reali dei rich result, non solo con un controllo della sintassi. La mancanza di campi quali prezzo, disponibilità o recensioni impedisce spesso ai risultati di prodotto di mostrare schede arricchite, e i temi PrestaShop variano molto nella completezza con cui emettono questo markup.
Link interni
Mappiamo le pagine orfane, i deboli collegamenti incrociati tra categorie e il modo in cui l’autorità dei link fluisce nel catalogo. Una solida struttura di link interni è una delle leve di posizionamento più controllabili in un negozio di grandi dimensioni, ed è spesso trascurata quando le categorie crescono in modo organico.
Sitemap XML e hreflang
Esaminiamo le Sue sitemap XML per individuare i divari tra inviato e indicizzato e, sui negozi multilingua, verifichiamo che i segnali hreflang siano reciproci e corretti, così che venga servita la giusta versione per lingua e Paese.
Lacune di contenuto
Infine, individuiamo le pagine deboli, le duplicazioni e l’intento di ricerca mancato, punti in cui la pagina esiste ma non soddisfa ciò che gli utenti cercano realmente.
Poiché uno specialista esamina direttamente il Suo negozio e la Sua proprietà Search Console, ogni risultato riflette la Sua situazione reale anziché un elenco teorico di buone pratiche.
Al termine dell’Audit SEO riceve un chiaro piano d’azione prioritizzato scritto in linguaggio semplice, non uno scarico di un foglio di calcolo da 200 righe che La lascia a indovinare da dove cominciare. Il deliverable è costruito per essere messo in pratica, sia che svolga il lavoro da solo, sia che lo affidi a uno sviluppatore.
Per ogni problema esplicitiamo tre cose:
- Che cosa non va, il problema specifico, descritto in termini che Lei può riconoscere nel Suo negozio.
- Perché conta per il traffico, la ragione concreta per cui questo incide su indicizzazione, scansione o posizionamento, così che ne comprenda la portata e non solo un’etichetta.
- Esattamente cosa correggere per primo, il passo concreto successivo, non una raccomandazione vaga.
I risultati sono ordinati per impatto rispetto allo sforzo. Ciò significa che gli interventi ad alto rendimento e basso sforzo sono chiaramente separati dal lavoro strutturale più ampio, così che possa agire subito sui risultati rapidi e pianificare il resto con sicurezza. Questo ordinamento è deliberato: in un negozio attivo, conoscere la sequenza vale spesso più del semplice elenco dei problemi.
Laddove sia davvero utile, indichiamo lo specifico elemento PrestaShop coinvolto, l’esatta impostazione di configurazione, il controller o il template che richiede attenzione. Ad esempio, se un problema di canonical risale al modo in cui un controller di categoria costruisce gli URL, o una lacuna nei dati strutturati risiede in un particolare .tpl, lo indichiamo direttamente. Questa precisione consente al Suo sviluppatore di passare subito alla correzione anziché ricostruire la diagnosi.
Il piano è scritto per reggere da solo. Non resta mai con risultati che non sa interpretare e non vi è alcun obbligo di coinvolgere ulteriormente qualcuno per dargli senso, è un documento su cui può agire direttamente.
Avviare il lavoro è volutamente leggero da parte Sua. Iniziamo con un breve passaggio di definizione dell’ambito per confermare gli elementi che orientano l’intera analisi: i Suoi obiettivi, i Suoi mercati di riferimento e le lingue che il negozio serve. Questo conta perché le priorità SEO differiscono in modo significativo tra, ad esempio, un negozio monolingua nazionale e un catalogo multilingua in cui hreflang e il targeting per Paese sono questioni centrali.
Una volta concordato ciò, eseguiamo l’analisi sul Suo negozio live e sui Suoi dati di Search Console. Lavorare sul negozio reale, anziché su una copia di staging o su una scansione sintetica, è ciò che consente ai risultati di riflettere la Sua reale indicizzazione, gli URL reali e i dati di query reali.
Quanto tempo richiede
La maggior parte degli audit si completa rapidamente una volta ottenuto l’accesso. Confermiamo con Lei i tempi previsti dopo il breve passaggio di scoping, perché la tempistica realistica dipende dalle dimensioni del Suo catalogo e dall’ambito che sceglie, un negozio monolingua mirato è più rapido da analizzare rispetto a uno multilingua di grandi dimensioni.
Cosa deve preparare
Nulla di tecnico. Non deve assemblare report, esportare dati o modificare alcuna impostazione in anticipo. Per iniziare, le due cose che aiutano sono:
- Accesso in sola lettura al Suo back office, sufficiente per ispezionare configurazione, moduli e struttura degli URL senza alterare nulla.
- Accesso alla Sua proprietà Search Console, così che possiamo vedere come Google attualmente scansiona e indicizza il sito.
L’accesso in sola lettura è deliberato: consente a uno specialista di vedere esattamente come è configurato il Suo negozio mantenendo Lei in pieno controllo, senza rischio che vengano apportate modifiche durante l’analisi. Se preferisce definire l’accesso in modo più restrittivo, possiamo lavorare entro quei limiti.
L’Audit SEO in sé è una diagnosi. Il deliverable è un piano prioritizzato su cui Lei, o qualsiasi sviluppatore competente, può agire in autonomia. Lo scriviamo deliberatamente in modo che regga da solo: ogni problema spiega che cosa non va, perché conta e cosa fare, con l’impostazione, il controller o il template PrestaShop specifico indicato dove utile. Non resta mai dipendente da noi per interpretare i risultati.
Detto ciò, molti titolari di negozi preferiscono non implementare le correzioni da soli e, se desidera che ce ne occupiamo noi, possiamo farlo. Vi sono due percorsi principali e scegliamo quello che davvero si adatta al problema:
- I nostri moduli PrestaShop, dove un problema ricorrente o strutturale è risolto al meglio da uno strumento adeguato (ad esempio gestire canonical, sitemap, dati strutturati o reindirizzamenti su larga scala), e un modulo è la giusta risposta a lungo termine anziché una modifica una tantum.
- Lavoro di remediation diretto. Modifiche dirette a template, configurazione o codice dove serve una correzione mirata.
Qualsiasi lavoro di implementazione viene quotato separatamente, una volta che l’audit ha chiarito le priorità. Riteniamo sia l’ordine onesto in cui procedere: vede prima la diagnosi, comprende cosa serve davvero fare e solo allora decide se riaffidare il lavoro a noi o portarlo altrove.
Non vi è alcun obbligo di acquistare altro. L’audit è completo e utile di per sé, il piano è Suo da eseguire come preferisce. Offrire l’implementazione è una comodità per i titolari che desiderano un unico team che porti a termine il lavoro, non una condizione perché l’audit valga la pena.
L’Audit di Sicurezza per PrestaShop è un’analisi pratica del Suo negozio reale, focalizzata sulle minacce che colpiscono davvero i negozi PrestaShop nella pratica anziché su una generica checklist di conformità. La popolarità di PrestaShop ne fa un bersaglio frequente, e i pattern di attacco sono piuttosto specifici, così l’audit si concentra dove risiede il rischio reale. Uno specialista analizza le seguenti aree:
Scansione delle vulnerabilità
Verifichiamo la presenza di core, moduli e versione PHP obsoleti che presentano CVE note. I moduli di terze parti non aggiornati sono uno dei vettori d’ingresso più comuni su PrestaShop, perché un singolo modulo trascurato può esporre l’intero negozio anche quando il core è aggiornato.
Rilevamento di malware e Magecart
Cerchiamo skimmer iniettati, web-shell e file manomessi, le iniezioni in stile Magecart che rubano i dati delle carte e le backdoor che prendono di mira i flussi di checkout e pagamento. È un pattern che affrontiamo regolarmente, quindi l’analisi si basa su come questi compromessi appaiono realmente nel file system e nel database, non solo sul confronto di firme.
Esposizione alle injection
Valutiamo le superfici di SQL-injection e di template Smarty (RCE) in moduli e override, i punti in cui input non attendibile raggiunge una query o un template e può essere trasformato in esecuzione di codice remoto.
Hardening dell’admin e 2FA
Esaminiamo l’accesso al back office: account dipendenti, protezione del login e autenticazione a due fattori. Credenziali admin deboli o condivise e un back office non protetto sono una causa ricorrente di violazioni che nulla hanno a che vedere con difetti del codice.
Backup e ripristino
Infine, verifichiamo se Lei potrebbe davvero ripristinare in modo pulito dopo un incidente, che i backup esistano, siano recenti e realmente utilizzabili. Un backup mai testato è un rischio, non una rete di sicurezza.
Poiché uno specialista ispeziona il Suo negozio reale, i risultati riflettono la Sua esposizione e configurazione effettive anziché un elenco teorico di cose che potrebbero andare storte.
Per un quadro completo richiediamo accesso in sola lettura al back office e, ove possibile, accesso in lettura a file e log. Questa combinazione è sufficiente per ispezionare il negozio a fondo, versioni dei moduli, configurazione, file system e pattern di accesso nei Suoi log, senza modificare nulla. I log in particolare sono il luogo in cui spesso emergono i segni di un compromesso attivo o di attacchi di sondaggio, quindi l’accesso in lettura ad essi migliora sensibilmente ciò che l’audit può vedere.
Sul piano della sicurezza, il punto chiave è semplice: non modifichiamo mai il Suo negozio durante un audit. L’intera analisi è osservativa. Nulla viene patchato, eliminato o riconfigurato mentre esaminiamo, il che significa che non vi è rischio che l’audit stesso danneggi il Suo negozio o interferisca con gli acquirenti.
Lavorare entro un ambito di Suo gradimento
L’accesso può essere modellato sul Suo livello di comfort. Se preferisce non concedere l’accesso a file o log, possiamo lavorare entro un ambito più ristretto, ad esempio una scansione esterna combinata con un’analisi guidata del back office, dove Lei resta ai comandi e noi indichiamo cosa controllare. L’audit è comunque prezioso in questo modo; un accesso più profondo gli consente semplicemente di vedere di più.
Se rileviamo un compromesso attivo
Se l’analisi scopre un compromesso attivo, glielo comunichiamo immediatamente, non aspettiamo la fine per consegnare un report. Delineiamo quindi prima di tutto sicuri passi di contenimento, così che la priorità diventi limitare il danno e proteggere i dati dei clienti e dei pagamenti, anziché proseguire una tranquilla analisi di un negozio che è attivamente sotto attacco. Gestire un incidente con calma e nel giusto ordine è parte del motivo per cui l’audit è in sola lettura per impostazione predefinita: vogliamo comprendere la situazione a fondo prima di apportare qualsiasi modifica.
Dall’Audit di Sicurezza riceve un piano di remediation prioritizzato in linguaggio semplice. Per ogni problema esplicitiamo tre cose:
- Che cosa è esposto, la vulnerabilità specifica, descritta in modo che Lei possa riconoscerla nel Suo negozio.
- Quanto è grave, una chiara valutazione di gravità, così che un suggerimento di hardening minore non venga mai confuso con una vera emergenza.
- Esattamente cosa correggere per primo, il passo concreto successivo, con dettaglio pratico anziché un avviso vago.
I problemi critici, tutto ciò che è attivamente sfruttabile, sono segnalati in cima con passi concreti, così che i problemi più pericolosi siano impossibili da non notare e non vi sia ambiguità su dove iniziare. Questo ordinamento conta: nella sicurezza, la sequenza in cui si agisce è spesso la differenza tra un problema contenuto e un grave incidente.
Hardening per il futuro, non solo una patch una tantum
Oltre a correggere ciò che oggi non va, riceve anche pratiche raccomandazioni di hardening volte a rendere il negozio più resiliente in prospettiva. Queste tipicamente riguardano:
- Autenticazione a due fattori sugli account del back office.
- Blindatura dell’admin, restringere chi può raggiungere il back office e in che modo.
- Politica di backup, garantire backup recenti, testati e realmente ripristinabili.
L’intento è che il negozio risulti più sicuro come postura permanente, non semplicemente patchato una volta e lasciato derivare verso la stessa esposizione. Il piano è scritto in modo che Lei o il Suo sviluppatore possiate agire direttamente, con gli elementi urgenti inequivocabilmente separati dai miglioramenti a lungo termine.
L’Audit di Sicurezza fornisce la diagnosi e il piano, un resoconto chiaro, ordinato per gravità, di ciò che è esposto e di cosa fare al riguardo. Quel deliverable regge da solo: Lei, o qualsiasi sviluppatore di Sua fiducia, può agirvi direttamente.
Se desidera che il lavoro venga svolto anziché solo documentato, possiamo effettuare la remediation pratica come lavoro separato e definito nell’ambito. A seconda di ciò che l’audit rileva, questo tipicamente include:
- Bonifica di un’infezione, rimozione di skimmer iniettati, web-shell e file manomessi, e individuazione di come l’aggressore sia entrato, così che la porta sia effettivamente chiusa.
- Patch dei moduli, aggiornamento o correzione di moduli, core o override vulnerabili che presentano problemi noti.
- Hardening dell’admin, blindatura dell’accesso al back office, degli account dipendenti e della protezione del login.
Mantenere la remediation separata dall’audit è deliberato. L’audit è osservativo e in sola lettura, così che la diagnosi non sia mai influenzata dalla tentazione di iniziare a cambiare le cose a metà analisi; la remediation viene poi definita nell’ambito a fronte di priorità chiare e concordate.
Quando vi è un compromesso attivo
Per un compromesso attivo diamo priorità al contenimento. Prima di qualsiasi bonifica o patch più ampia, la preoccupazione immediata è limitare il danno e proteggere i dati dei clienti e dei pagamenti. Solo una volta contenuta la situazione il resto della remediation procede in un ordine ponderato. Non vi è alcun obbligo di intraprendere il percorso di remediation, ma se desidera un unico team che segua il problema dalla diagnosi alla correzione, quell’opzione è disponibile.
L’Audit delle Prestazioni per PrestaShop misura il Suo negozio reale in condizioni realistiche, non un singolo punteggio sintetico preso in isolamento. Un numero di laboratorio una tantum dice ben poco su come il negozio si comporta per gli acquirenti reali e per Googlebot; l’audit è costruito per individuare i veri colli di bottiglia. Uno specialista analizza i seguenti livelli:
Profilazione PHP
Profiliamo il back end per individuare hook, moduli e percorsi di codice lenti che gonfiano il tempo di risposta del server. Su PrestaShop, un singolo modulo pesante agganciato a ogni pagina, o un’operazione costosa che gira nella visualizzazione di categoria e prodotto, è una causa molto comune di un Time To First Byte lento, e la profilazione è ciò che lo individua con precisione anziché tirare a indovinare.
Database
Cerchiamo query lente e N+1, indici mancanti e join pesanti. Man mano che cataloghi e storico ordini crescono, query che erano accettabili al lancio possono diventare silenziosamente il costo dominante di una pagina, e la soluzione è spesso un indice preciso anziché una modifica generale.
Cache e CCC
Esaminiamo end to end il Suo stack di caching: compilazione Smarty, Redis, full-page cache e le impostazioni Combine-Compress-Cache (CCC). Una cache mal configurata è una delle aree di prestazioni a più alto rendimento su PrestaShop, ed è frequentemente lasciata in uno stato sub-ottimale.
Core Web Vitals
Valutiamo LCP, CLS e INP come Google li misura realmente, le metriche di campo che alimentano la page experience, anziché solo uno scatto di laboratorio. Largest Contentful Paint, Cumulative Layout Shift e Interaction to Next Paint indicano ciascuno problemi sottostanti diversi, dagli asset che bloccano il rendering ai layout instabili.
Pipeline delle immagini e CDN
Infine, esaminiamo la pipeline delle immagini e la distribuzione edge: formati moderni (WebP/AVIF), lazy-loading e se una CDN serve gli asset in modo efficiente dall’edge. Le immagini sono di solito la parte più pesante di una pagina di vetrina, quindi spesso è qui che si trovano i maggiori vantaggi concreti.
Poiché misuriamo il Suo negozio reale attraverso questi livelli, i risultati riflettono come il Suo negozio si comporta davvero anziché un benchmark teorico.
Dall’Audit delle Prestazioni riceve un piano prioritizzato in linguaggio semplice. Per ogni risultato esplicitiamo tre cose:
- Cosa rende lento il negozio, il collo di bottiglia specifico, in termini concreti.
- Perché conta, l’effetto pratico sul tempo di caricamento reale, sulla risposta del server e sull’esperienza per acquirenti e crawler.
- Esattamente cosa correggere per primo, il passo successivo, non una raccomandazione vaga.
I risultati sono ordinati per impatto rispetto allo sforzo, così che le modifiche che acquistano più velocità con meno lavoro siano chiaramente separate dagli interventi di ottimizzazione più ampi. Su un negozio live quell’ordinamento è spesso la parte più preziosa del report: Le dice non solo cosa non va, ma la sequenza con cui affrontarlo.
Indichiamo il colpevole
Dove un modulo, una query o un’impostazione specifici sono responsabili, li indichiamo. Se l’hook di un particolare modulo gonfia il tempo di risposta, una query specifica manca di un indice, o un’impostazione CCC o di cache è mal configurata, lo segnaliamo direttamente. Questa precisione significa che Lei, o il Suo sviluppatore, può agire sulla causa esatta anziché indovinare e cambiare le cose a caso, il che su un’installazione PrestaShop complessa può facilmente peggiorare la situazione.
Velocità reale, non un punteggio di vanità
L’obiettivo costante è la velocità reale per gli acquirenti e per Googlebot, pagine più veloci che caricano davvero più rapidamente per i visitatori e vengono scansionate in modo più efficiente, anziché limitarsi a far diventare verde un badge Lighthouse. Un negozio può ottenere un buon punteggio in un test di laboratorio e sembrare comunque lento sul campo; l’audit è scritto per migliorare l’esperienza che conta davvero, con il report strutturato in modo che il piano possa essere eseguito direttamente.
No. L’audit è progettato per non disturbare i Suoi acquirenti. Profilazione e misurazione sono condotte in modo da mantenere stabile il negozio live, tipicamente ispezione in sola lettura combinata con misurazione controllata anziché qualcosa che carichi o stressi il sito a scapito dei visitatori reali.
I due principi che lo mantengono sicuro sono semplici:
- L’ispezione è osservativa. Esaminare la configurazione, profilare i percorsi di codice ed analizzare le query sono attività in sola lettura, osserviamo come il negozio si comporta, non cambiamo come funziona.
- La misurazione è controllata. Qualsiasi misurazione attiva è eseguita deliberatamente e in modo misurato, non come un load test incontrollato puntato sul Suo checkout di produzione durante l’orario lavorativo.
Lei resta in controllo delle modifiche
In modo cruciale, non distribuiamo modifiche durante l’audit. L’audit produce un piano; non tocca la Sua configurazione, i template o il codice live. Ciò significa che Lei resta in pieno controllo di cosa viene implementato e quando, nulla viene alterato sul Suo negozio senza la Sua decisione. Può esaminare le raccomandazioni, scegliere quali applicare e pianificarle in una finestra tranquilla, se preferisce. Separare così la misurazione dall’implementazione è esattamente ciò che consente all’audit di girare in sicurezza su un negozio live e operativo.
Avviare il lavoro è leggero da parte Sua. Iniziamo con un breve scoping per confermare i Suoi punti di sofferenza più critici, perché il lavoro sulle prestazioni è molto più efficace quando è mirato alle pagine e ai momenti che davvero fanno male. Le aree tipiche che definiamo sono:
- Pagine di categoria lente, spesso dove navigazione a livelli, filtri e grandi griglie di prodotti si combinano nel rallentare il tempo di risposta.
- Checkout. Dove la lentezza costa direttamente vendite e frustra clienti pronti all’acquisto.
- Admin / back office, elaborazione ordini e gestione catalogo lente che erodono il tempo del Suo team.
- Comportamento sotto picco di carico, come il negozio regge sotto picchi di traffico, eventi di vendita o campagne.
Sapere quale di questi conta di più per Lei orienta dove dirigere lo sforzo di misurazione, così che i risultati affrontino i Suoi problemi reali anziché un profilo generico.
Una volta concordato l’ambito, misuriamo sul Suo negozio live, il negozio reale in condizioni reali, che è l’unico modo perché i numeri riflettano ciò che i Suoi acquirenti e Googlebot sperimentano davvero.
Quanto tempo richiede
La maggior parte degli audit si completa rapidamente una volta ottenuto l’accesso. Confermiamo con Lei i tempi previsti dopo il breve passaggio di scoping, poiché la tempistica realistica dipende dalle dimensioni del Suo negozio e dall’ampiezza di ciò che misuriamo. La conversazione di scoping è breve ed è il punto naturale in cui concordiamo sia il focus sia la tempistica.
L’Audit UI/UX per PrestaShop osserva il Suo negozio reale e live nel modo in cui lo vive un acquirente reale, non una checklist generica applicata a uno screenshot. Percorriamo l’intero viaggio, dall’arrivo su una pagina di categoria al completamento di un ordine, e segnaliamo ogni punto in cui l’interfaccia aggiunge attrito, confusione o esitazione. L’analisi è strutturata intorno alle aree che contano di più per un catalogo PrestaShop:
- Usabilità, navigazione, ricerca interna e chiarezza delle Sue pagine di categoria e prodotto. Verifichiamo se i menu riflettono come i clienti acquistano davvero, se la ricerca restituisce risultati utili e se le pagine di prodotto rispondono alle domande che un acquirente si pone prima di impegnarsi.
- Mobile, l’esperienza sui dispositivi che la maggior parte del Suo traffico utilizza davvero. Testiamo le aree di tocco, il comportamento dell’add-to-cart fisso, il caricamento delle immagini e l’usabilità dei moduli su schermi più piccoli, dove la maggior parte dei temi PrestaShop cede silenziosamente.
- Flusso di prodotto e checkout, i momenti esatti in cui gli acquirenti esitano, si confondono o abbandonano. Il checkout a una pagina e quello a più passaggi di PrestaShop hanno ciascuno noti tranelli di abbandono: creazione forzata dell’account, costi di spedizione poco chiari, spese a sorpresa e selettori di combinazione/attributi confusi.
- Accessibilità, conformità EAA / WCAG, sempre più attesa dai negozi UE. I problemi di accessibilità sono anche problemi di usabilità, quindi questo si sovrappone fortemente alla conversione.
- Segnali di fiducia, recensioni, garanzie e chiarezza delle Sue informazioni su consegna e resi. Contenuti di fiducia mancanti o nascosti sono una causa comune e a basso sforzo di vendite perse.
Perché conta
La maggior parte dei problemi di conversione di PrestaShop non sono difetti di progettazione radicati nel tema. Sono piccoli punti di attrito correggibili che si sommano attraverso migliaia di sessioni. Una modifica al tema figlio, un passaggio di checkout riordinato o un messaggio di consegna più chiaro possono rimuovere una barriera che costava silenziosamente ordini.
Questo audit è per i titolari di negozi che sospettano che il loro traffico sia discreto ma la conversione no, e che desiderano una valutazione onesta, dal punto di vista dell’acquirente, anziché un pitch di redesign. Usiamo il Suo catalogo reale, il Suo tema reale e i percorsi reali dei Suoi clienti, così che i risultati si applichino direttamente al Suo negozio.
Riceve un piano prioritizzato in linguaggio semplice che individua con precisione dove gli acquirenti esitano o abbandonano, perché accade e cosa cambiare per primo. È scritto per essere messo in pratica, non un saggio di design e non un elenco di opinioni soggettive su colori e font.
Cosa contiene il deliverable
- Raccomandazioni concrete e specifiche per PrestaShop, impostazioni del tema, struttura delle pagine, passaggi del checkout, configurazione dei moduli e posizionamento dei contenuti. Dove la correzione risiede in un template di tema specifico, in una schermata di configurazione o in un’impostazione di categoria, lo diciamo, così che il Suo sviluppatore (o il nostro) possa agire senza tirare a indovinare.
- Il ragionamento dietro ogni problema, cosa sperimenta l’acquirente, perché causa esitazione o abbandono e come appare una versione migliore. Comprendere il “perché” significa che il Suo team può applicare lo stesso ragionamento alle modifiche future.
- Un ordinamento chiaro. Le raccomandazioni sono ordinate così che possa iniziare dalle correzioni a più alto impatto e procedere a scendere, anziché spendere sforzi su modifiche cosmetiche che non spostano nulla.
Perché conta
Un elenco lungo e non ordinato di “cose che potresti migliorare” tende a restare inutilizzato. Concentrandosi sulle modifiche che aumentano la conversione e soddisfano gli obblighi di accessibilità, e ordinandole così che i maggiori vantaggi vengano prima, il piano è qualcosa che può davvero eseguire, in sequenza, con tempo e budget limitati. Le raccomandazioni sono definite secondo il modo di fare di PrestaShop: override del tema figlio, configurazione nativa e moduli ben scelti anziché hack fragili.
Si adatta ai titolari che desiderano un passo successivo chiaro anziché una vaga sensazione che “il sito potrebbe essere migliore”. Termina con una roadmap di modifiche specifiche e difendibili e con la consapevolezza di quali affrontare questa settimana rispetto a questo trimestre.
Sì, l’accessibilità è una parte integrante dell’Audit UI/UX, non un’aggiunta opzionale. L’European Accessibility Act (EAA) si applica a molti negozi online che vendono ai consumatori UE, e soddisfarlo è sempre più atteso anziché facoltativo. Verifichiamo il Suo negozio rispetto ai criteri WCAG pertinenti e Le diamo un quadro chiaro e onesto di dove si trova attualmente.
Cosa verifichiamo
- Navigazione da tastiera, se un acquirente può muoversi tra menu, filtri, opzioni di prodotto e checkout usando solo la tastiera, senza restare intrappolato o perdere il segno.
- Contrasto, testo ed elementi interattivi rispetto agli sfondi, così che il contenuto sia leggibile per gli utenti ipovedenti e in condizioni di scarsa illuminazione.
- Etichette, campi dei moduli, pulsanti e controlli correttamente nominati, così che la tecnologia assistiva possa annunciarli. I moduli di checkout e contatto di PrestaShop sono un punto debole comune qui.
- Ordine di focus, un percorso di focus logico e visibile, così che gli utenti di tastiera e screen reader seguano la pagina in una sequenza sensata.
- Moduli, messaggistica di errore, indicazione dei campi obbligatori e chiarezza degli input, in particolare attraverso registrazione e checkout.
Perché conta
Ottiene una visione chiara di dove si trova e delle correzioni pratiche che supportano la conformità. In modo cruciale, la maggior parte di queste correzioni migliora anche l’usabilità per tutti: etichette più chiare, contrasto migliore e un ordine di focus sensato riducono l’attrito per tutti gli acquirenti, non solo per chi usa tecnologia assistiva. In PrestaShop, molte di queste sono affrontabili tramite modifiche al template del tema figlio e al CSS anziché modifiche al core, il che le mantiene sicure da mantenere attraverso gli aggiornamenti.
Questo si adatta bene ai negozi rivolti all’UE che vogliono comprendere la propria esposizione e agirvi metodicamente. Le diamo una valutazione onesta delle lacune e dei passi pratici che supportano la conformità, senza sovrastimare ciò che un singolo audit può certificare.
L’Audit di Hosting e Infrastruttura per PrestaShop valuta il Suo hosting rispetto al carico reale del negozio, come il Suo negozio si comporta sotto traffico e attività admin effettivi, anziché rispetto alle promesse da scheda tecnica di un piano di hosting. Un server “veloce” sulla carta può comunque fornire pagine lente una volta che vi girano un intero catalogo PrestaShop, i moduli e le attività di back office. Esaminiamo i livelli che determinano davvero velocità, stabilità e resilienza:
- Versione PHP e risorse del server, CPU, memoria e limiti rispetto al Suo traffico. Verifichiamo se la Sua versione PHP è attuale e supportata, e se i limiti di memoria, il tempo di esecuzione e la capacità dei worker corrispondono al carico che il Suo negozio vede davvero.
- Livelli di cache. OPcache, Redis, full-page cache e come sono configurati. Una cache mal configurata o assente è una delle cause più comuni di pagine PrestaShop lente, e verifichiamo che ogni livello sia presente e svolga il suo compito.
- CDN ed edge, distribuzione, tassi di cache hit e protezione dell’origine. Esaminiamo se asset statici e pagine vengono serviti dall’edge, quanto spesso la cache viene effettivamente colpita e se la Sua origine è protetta.
- TLS / HTTP, certificato, HTTP/2-3 e header di sicurezza. Protocolli obsoleti e header mancanti costano sia in prestazioni sia in sicurezza.
- Backup, failover e uptime, se potrebbe sopravvivere a un’interruzione o a un deploy sbagliato. Valutiamo se i backup esistono, sono recenti e davvero ripristinabili, e cosa accade quando qualcosa fallisce.
Perché conta
L’hosting sta sotto a tutto il resto: nessuna ottimizzazione front-end salva un negozio su un server sottodimensionato o mal configurato. PrestaShop in particolare è sensibile alla configurazione PHP, al caching e alle prestazioni del database, così che piccole lacune infrastrutturali emergano come pagine di categoria lente, admin macchinoso e vendite perse durante i picchi di traffico. Questo audit è per i titolari che sospettano che il loro host sia parte del problema, o che semplicemente vogliono sapere, onestamente, se la loro configurazione attuale può reggere dove il negozio è diretto.
Riceve un piano prioritizzato in linguaggio semplice per rendere il Suo negozio più veloce, sicuro e resiliente, con indicazioni chiare su cosa cambiare a livello di hosting e, altrettanto importante, su cosa valga davvero il costo. È scritto in modo che un titolare non tecnico possa comprendere i compromessi e un team tecnico possa agirvi.
Cosa contiene il deliverable
- Azioni specifiche e ordinate, dalle correzioni di configurazione (impostazioni PHP, livelli di cache, header) ai cambiamenti strutturali più ampi, ordinate così che gli elementi a più alto impatto e miglior rapporto valore vengano prima.
- Inquadramento onesto dei costi, separiamo le modifiche che si ripagano da sole da quelle che sono un di più, così che non investa troppo in infrastruttura di cui il Suo negozio non ha ancora bisogno.
- Un verdetto chiaro sul Suo host attuale, se il Suo hosting La sta davvero frenando, lo diciamo chiaramente e spieghiamo come appare una configurazione migliore per la Sua dimensione di negozio, anziché lasciarLa a indovinare.
Perché conta
Le decisioni infrastrutturali sono facili da sbagliare in entrambe le direzioni: pagare per capacità che non userà mai, o arrancare su un host che strozza ogni giorno di punta. Il piano è progettato per tagliare il nodo, concreto, ordinato e commisurato al Suo traffico e alla dimensione del Suo catalogo reali. Poiché è inquadrato in linguaggio semplice con il ragionamento allegato, può prendere decisioni sicure su dove spendere e dove lasciar stare.
Si adatta ai titolari di negozi che vogliono chiarezza prima di impegnare budget. Che si tratti di ottimizzare l’host che hanno o di capire cosa cercare in uno migliore. Termina con una roadmap difendibile anziché un pitch di vendita.
L’audit è deliberatamente neutrale rispetto al fornitore. Il nostro compito è dirLe, onestamente, se il Suo hosting attuale si adatta al Suo traffico e dove è carente, non indirizzarLa verso un particolare provider. Mai viene spinto a cambiare host per “superare” l’audit, e non c’è alcuna agenda nascosta di referral dietro le raccomandazioni.
Come funziona
- Valutiamo prima ciò che ha, l’audit misura la Sua configurazione esistente rispetto al Suo traffico e alla dimensione del Suo negozio reali, così che il punto di partenza sia sempre “questo host si adatta a Lei”, non “quale host dovremmo venderLe”.
- Se una migrazione è davvero giustificata, spieghiamo perché, esponiamo le ragioni specifiche per cui il Suo hosting attuale è carente e cosa cercare in una soluzione migliore, così che possa valutare le opzioni nel merito.
- Lo spostamento è un lavoro separato e definito nell’ambito, se decide di migrare, possiamo realizzarlo come un proprio incarico chiaramente definito. Non viene mai incluso nell’audit né usato come sua condizione.
Perché conta
Le migrazioni PrestaShop comportano rischi reali, disallineamenti di versione PHP e database, dipendenze di moduli interrotte, configurazione di cache e URL, e downtime se il cutover non è pianificato con cura. È esattamente per questo che la raccomandazione di spostarsi (o di non spostarsi) deve essere onesta e indipendente da qualsiasi motivazione di vendita. Un audit neutrale rispetto al fornitore significa che può fidarsi del verdetto: se restare è la scelta giusta, lo diremo; se spostarsi è giustificato, comprenderà con precisione perché e cosa comporta una migrazione sicura.
Questo si adatta ai titolari che vogliono una risposta diretta sul loro hosting senza la consueta pressione a cambiare. Ottiene chiarezza sull’idoneità del Suo host allo scopo e pieno controllo su cosa, se mai, fare in seguito.
Questo è il lato tecnico dei feed e del tracciamento, deliberatamente definito a parte rispetto alla gestione delle campagne. L’audit verifica se i dati che fluiscono in Google Merchant Center, GA4 e Google Ads sono completi, accurati e affidabili, perché tutto ciò che sta a valle (schede gratuite, annunci Shopping, reportistica sulle prestazioni) dipende dalla solidità di queste fondamenta. Esaminiamo:
- Qualità del feed Merchant, attributi obbligatori, titoli, GTIN, disapprovazioni e problemi di policy. Verifichiamo che i prodotti portino gli attributi che Google si attende, che i titoli siano strutturati per corrispondere a come le persone cercano e che disapprovazioni o segnalazioni di policy non sopprimano silenziosamente parte del Suo catalogo.
- Tracciamento GA4 / Ads, attivazione delle conversioni, deduplicazione e affidabilità dei Suoi numeri. Verifichiamo che le conversioni si attivino davvero, che non siano conteggiate due volte e che le cifre su cui basa le decisioni riflettano la realtà.
- Schema Product / Offer, dati strutturati che supportano le schede gratuite e i rich result. Un markup
ProducteOffercorretto aiuta il Suo catalogo a qualificarsi per le schede Shopping gratuite e i rich result nella ricerca. - Qualità dei dati di prodotto, i dati di catalogo che alimentano sia il Suo feed sia la Sua SEO on-site. Gli stessi dati di prodotto PrestaShop guidano il feed e la vetrina, quindi ripulirli migliora entrambi in una volta.
Perché conta
I problemi di feed e tracciamento sono insidiosi perché sono invisibili nel quotidiano: un GTIN mancante, un titolo malformato o un tag di conversione che si attiva due volte non genera un errore, distorce semplicemente in silenzio i Suoi dati e sopprime la portata. In PrestaShop, i feed sono tipicamente generati da un modulo che mappa i campi del catalogo agli attributi di Google, e piccole lacune di mapping si moltiplicano su migliaia di prodotti. Questo audit individua quelle lacune prima che Le costino visibilità o fuorviino le Sue decisioni di campagna. È per i titolari che gestiscono (o pianificano di gestire) Shopping e vogliono la certezza che i dati sottostanti siano corretti.
Riceve un piano prioritizzato in linguaggio semplice per correggere esattamente ciò che blocca il Suo feed e il tracciamento, disapprovazioni, attributi mancanti, conversioni interrotte o conteggiate due volte, ordinato in modo da affrontare prima i problemi che incidono sui ricavi. È costruito per essere messo in pratica in ordine, non un’esportazione grezza di ogni avviso che Google emette.
Cosa contiene il deliverable
- Correzioni specifiche e ordinate, ogni problema è descritto in linguaggio semplice con cosa cambiare e dove, ordinato per impatto così che disapprovazioni e conversioni interrotte (le cose che davvero Le costano portata o distorcono i Suoi numeri) vengano prima.
- Indicazioni specifiche per PrestaShop, poiché il feed è generato dal Suo catalogo, molte correzioni risiedono nei dati di prodotto, nel mapping degli attributi o nella configurazione del modulo; indichiamo dove ha origine il problema così che sia corretto alla fonte, non patchato prodotto per prodotto.
- Correzioni del tracciamento, indicazioni chiare sull’attivazione delle conversioni e sulla deduplicazione, così che i dati che alimentano GA4 e Ads tornino affidabili.
Perché conta
I problemi di tracciamento e feed distorcono silenziosamente ogni decisione di campagna. Lei fa offerte, alloca budget e ottimizza a fronte di numeri sbagliati, e lo fa sia sul traffico shopping a pagamento sia su quello gratuito. Correggere questi aspetti, quindi, ripaga in modo ampio: dati di conversione più puliti significano decisioni meglio informate ovunque, e un feed più sano significa che una parte maggiore del Suo catalogo è davvero idonea a mostrarsi. Poiché gli stessi dati di catalogo alimentano anche la Sua SEO on-site, correggerli alla fonte migliora più del solo feed.
Questo si adatta ai titolari che sentono che le loro prestazioni o reportistica Shopping “non tornano” e vogliono correggere le fondamenta prima di spendere di più in campagne. Termina con un elenco chiaro e ordinato di correzioni che affronta prima i problemi che incidono sui ricavi.
Questo audit è circoscritto alle fondamenta tecniche, salute del feed, accuratezza del tracciamento e schema, non alla gestione quotidiana delle campagne o delle offerte. Manteniamo deliberatamente i due aspetti separati, così che ciascuno riceva il giusto tipo di attenzione: l’audit assicura che i Suoi dati siano corretti, il che è esattamente ciò che rende efficace qualsiasi lavoro di campagna.
Dove si colloca il confine
- In ambito: diagnosi delle disapprovazioni del feed e degli attributi mancanti, verifica del tracciamento delle conversioni e della deduplicazione, e controllo dei dati strutturati
Product/Offer. L’impianto su cui ogni campagna fa affidamento. - Fuori ambito: gestione continua delle offerte, allocazione del budget, struttura delle campagne e ottimizzazione quotidiana delle campagne Shopping o Search live.
Perché conta
La gestione di campagne costruita su fondamenta difettose spreca budget: se le conversioni sono mal tracciate o metà del Suo catalogo è disapprovato, anche una gestione esperta delle offerte ottimizza a fronte di segnali sbagliati. Correggere prima le fondamenta è ciò che rende efficace il lavoro di campagna, è la differenza tra ottimizzare prestazioni reali e rincorrere rumore. Molti titolari di negozi scoprono che correggere i problemi di feed e tracciamento migliora i risultati prima ancora che venga apportata qualsiasi modifica alle campagne.
Se desidera un aiuto continuo sulle campagne, possiamo discuterne separatamente, è semplicemente un incarico diverso con una cadenza diversa. Questo mantiene l’audit onesto e focalizzato: un controllo tecnico di salute una tantum su cui può agire, sia che gestisca le campagne da solo, usi un’altra agenzia o ci chieda in seguito di occuparcene. Il risultato è una base solida su cui qualsiasi lavoro di campagna, interno o esterno, può costruire con fiducia.
L’Audit di Conversione B2C osserva il Suo negozio reale e live attraverso la lente di un negozio per consumatori il cui compito è trasformare i visitatori esistenti in acquirenti. Non partiamo da una checklist generica; partiamo dal Suo traffico reale, dalle Sue pagine di prodotto reali e dal Suo checkout reale, quindi percorriamo il viaggio che un acquirente compie e troviamo dove i ricavi ne stanno fuoriuscendo. Poiché l’obiettivo è il tasso di conversione anziché la rifinitura complessiva, ogni osservazione è ricondotta a un abbandono misurabile.
Cosa esaminiamo
- Il funnel, dove i visitatori si perdono tra atterraggio, categoria, prodotto, carrello e checkout. Su PrestaShop ciò significa spesso pagine di categoria lente o disordinate, deboli percorsi interni dalle pagine blog/landing verso le pagine di prodotto, e il classico precipizio dal carrello al checkout.
- Conversione della pagina di prodotto, qualità delle immagini e zoom, chiarezza dei prezzi, messaggistica su disponibilità e consegna, urgenza e attrito dell’add-to-cart. Osserviamo come il Suo tema rende la buy box e se la gerarchia del
product.tplpone le informazioni decisive sopra la piega. - Mobile, l’esperienza dove la maggior parte del traffico consumer converte davvero (o no). Verifichiamo le aree di tocco, l’add-to-cart fisso, il peso delle immagini e se il checkout mobile sia davvero usabile anziché un layout desktop rimpicciolito.
- Fiducia e riprova sociale, recensioni, valutazioni, garanzie, rassicurazioni sui resi e segnali di sicurezza dei pagamenti posti esattamente nei punti decisionali in cui un consumatore esita.
- Attrito del checkout e resi, il punto di abbandono finale e di più alto valore. Osserviamo il flusso del checkout a una pagina, la creazione forzata dell’account, le opzioni di pagamento, i costi inattesi che compaiono tardi e quanto chiaramente sono comunicati i resi.
Perché conta
La maggior parte dei negozi spende molto per acquisire traffico e poi ne perde una grande quota a causa di attrito correggibile. Stringere il funnel monetizza i visitatori che ha già pagato, che è tipicamente la leva più rapida ed economica a Sua disposizione. PrestaShop aggiunge le proprie specificità, override del tema, conflitti tra moduli nel checkout e comportamento di CCC/cache che incide sulla velocità delle pagine, e ne teniamo conto anziché darLe consigli indipendenti dalla piattaforma.
Questo audit è per i negozi PrestaShop rivolti ai consumatori che hanno un traffico significativo ma sentono che il tasso di conversione è più basso di quanto dovrebbe. L’output è diagnostico e prioritizzato, così che possa agire prima sui problemi a più alto impatto anziché tirare a indovinare.
Si sovrappongono, ma rispondono a domande diverse, e scegliere quello giusto Le fa risparmiare tempo e denaro. L’Audit UI/UX riguarda usabilità e accessibilità nell’intero negozio, navigazione, architettura dell’informazione, leggibilità, coerenza, standard di accessibilità e la qualità generale dell’esperienza per ogni visitatore, che intenda acquistare oggi o no. L’Audit di Conversione B2C è focalizzato come un laser sui ricavi: le modifiche specifiche al funnel e alle pagine di prodotto che trasformano una quota maggiore del Suo traffico attuale in ordini.
Come scegliere
- Se la Sua priorità è aumentare il tasso di conversione. Portare una quota maggiore dei visitatori che già ha ad aggiungere al carrello e completare il checkout, l’Audit di Conversione B2C è quello giusto. Si concentra su perdite del funnel, persuasione della pagina di prodotto, flusso d’acquisto mobile, segnali di fiducia nel punto decisionale e abbandono del checkout.
- Se la Sua priorità è usabilità e accessibilità complessive, rendere l’intero negozio più facile, chiaro e inclusivo da usare su tutti i tipi di pagina, non solo sul percorso d’acquisto, l’Audit UI/UX si adatta meglio.
Nella pratica i due sono complementari. Un problema UI/UX (navigazione confusa, un modulo inaccessibile, un layout incoerente) può essere anche un problema di conversione, e un risultato in un audit emerge spesso nell’altro. Ma l’inquadramento e la prioritizzazione differiscono: l’audit di conversione ordina tutto in base all’impatto atteso sui ricavi, mentre l’audit UI/UX ordina in base alla qualità di usabilità e accessibilità.
Su PrestaShop in particolare, entrambi gli audit tengono conto di override del tema, comportamento dei moduli e struttura dei template, ma guardano cose diverse, l’audit di conversione la buy box, il carrello e il checkout a una pagina; l’audit UI/UX il negozio nel suo complesso. Se non è sicuro di quale Le serva, ci dica il Suo obiettivo: più vendite dallo stesso traffico La indirizza all’audit di conversione; un negozio più pulito, più usabile e più accessibile La indirizza all’UI/UX.
Riceve un piano prioritizzato in linguaggio semplice per trasformare una quota maggiore dei Suoi visitatori esistenti in acquirenti, modifiche concrete e specifiche per PrestaShop, ordinate per impatto atteso sulla conversione, così che possa iniziare dai risultati che spostano i ricavi più rapidamente. È scritto per essere messo in pratica, non archiviato.
Cosa contiene il deliverable
- Un elenco prioritizzato di risultati, ogni problema che abbiamo individuato lungo il funnel, le pagine di prodotto, l’esperienza mobile, i segnali di fiducia e il checkout, ordinato per impatto atteso sulla conversione anziché per quanto fosse facile da individuare.
- Raccomandazioni concrete e specifiche per PrestaShop, non generici slogan di buone pratiche, ma cosa cambiare nel Suo negozio: aggiustamenti al tema/template, configurazione, scelte di moduli e correzioni al checkout/carrello che si adattano a come PrestaShop funziona davvero.
- Il ragionamento dietro ogni voce. Perché Le costa ordini e come appare una buona versione, così che il Suo team (o il nostro) possa implementare con fiducia.
- Un punto di partenza chiaro, poiché tutto è ordinato, può iniziare dalle modifiche a più alto impatto e procedere a scendere, anziché cercare di fare tutto in una volta.
Perché la prioritizzazione conta
Il lavoro di conversione è pieno di piccole possibili modifiche, e farle in ordine casuale spreca sforzi. Ordinando le modifiche per impatto atteso, il piano Le consente di catturare prima i maggiori guadagni di ricavo e di decidere dove fermarsi in base ai rendimenti decrescenti. Il piano è onesto e misurato, individua dove il Suo traffico attuale sta fuoriuscendo e come recuperarlo; non promette specifici risultati di traffico, posizionamento o ricavi, perché questi dipendono dal Suo mercato, dai Suoi prodotti e dall’esecuzione.
È scritto in linguaggio semplice così che un titolare di negozio possa comprenderlo e agirvi, pur essendo abbastanza specifico perché uno sviluppatore PrestaShop possa implementarlo direttamente. Se lo desidera, le modifiche raccomandate possono poi essere definite nell’ambito come lavoro di implementazione.
L’Audit di Prontezza B2B verifica se il Suo negozio PrestaShop è davvero pronto a vendere business-to-business, non solo se può accettare un ordine, ma se supporta il modo in cui gli acquirenti professionali acquistano davvero. Vendere alle imprese introduce requisiti che una configurazione consumer standard semplicemente non ha, e la maggior parte dei negozi scopre le lacune solo dopo che un cliente commerciale sbatte contro un muro. Questo audit le individua prima.
Cosa valutiamo
- Gruppi di clienti e cataloghi ristretti, mostrare i prodotti giusti e i prezzi giusti agli acquirenti giusti. Verifichiamo come sono configurati i Suoi gruppi di clienti PrestaShop e se visibilità del catalogo, prezzi per gruppo e restrizioni di accesso si comportano davvero come previsto.
- Prezzi a fasce / all’ingrosso, prezzi per volume e a contratto fatti correttamente, inclusi prezzi specifici, sconti per quantità e tariffe per gruppo, così che gli acquirenti all’ingrosso vedano prezzi accurati senza espedienti manuali.
- Termini di pagamento netti, flussi di fatturazione e pagamento differito, così che gli account commerciali approvati possano ordinare a credito anziché essere costretti a pagare in anticipo come un consumatore.
- Richieste di preventivo, un flusso di prezzi negoziati sovrapposto al checkout standard, così che gli acquirenti che necessitano di un preventivo prima di impegnarsi abbiano un percorso adeguato anziché abbandonare.
- VAT UE e flussi degli account commerciali, validazione VIES delle partite IVA, gestione del reverse-charge per le vendite intra-UE e un sensato processo di onboarding/registrazione B2B per i nuovi account commerciali.
Perché conta
Gli acquirenti B2B si attendono che i loro prezzi, i loro termini e il loro trattamento fiscale siano rispettati automaticamente. Se un’impresa deve scrivere un’e-mail per un prezzo, non può ottenere termini netti o vede una VAT errata al checkout, perde l’ordine, e spesso la relazione. PrestaShop può supportare tutto questo tramite funzionalità native, configurazione, moduli esistenti e, dove serve, lavoro personalizzato, ma deve essere impostato deliberatamente. L’audit mappa ogni requisito rispetto a dove si trova oggi il Suo negozio.
Questo è per i commercianti PrestaShop che vogliono aggiungere o rafforzare un canale B2B accanto (o al posto) delle vendite consumer. L’output è diagnostico e prioritizzato; Le dice dove è carente e cosa comporta colmare ciascuna lacuna, così che investa solo nelle capacità di cui la Sua impresa ha davvero bisogno.
Riceve un piano prioritizzato in linguaggio semplice che mostra esattamente dove il Suo negozio è carente rispetto a una reale vendita B2B e come colmare ogni lacuna, che si tratti di configurazione, di un modulo esistente o di un lavoro personalizzato. I risultati sono ordinati così che abiliti prima le capacità B2B di più alto valore, anziché cercare di costruire tutto in una volta.
Cosa contiene il deliverable
- Un’analisi delle lacune attraverso i requisiti B2B fondamentali, gruppi di clienti e cataloghi ristretti, prezzi a fasce/all’ingrosso, termini di pagamento netti, richieste di preventivo e flussi VAT UE/account commerciali, confrontando ciò che gli acquirenti professionali si attendono con come il Suo negozio PrestaShop si comporta oggi.
- Un rimedio chiaro per ogni lacuna, e, in modo cruciale, come colmarla: che si tratti di una modifica di configurazione in PrestaShop, di un modulo esistente che già la risolve, o di uno sviluppo davvero su misura. Questa distinzione conta perché determina costo e sforzo.
- Priorità ordinate, prima le capacità B2B di più alto valore, così che possa attivare al più presto le funzionalità che sbloccano gli ordini commerciali e rinviare i di più.
- Ragionamento in linguaggio semplice. Perché ogni lacuna Le costa acquirenti business e come appare una versione funzionante, scritto così che un titolare di negozio possa decidere e uno sviluppatore possa implementare.
Perché la prioritizzazione conta
La prontezza B2B raramente è un singolo interruttore, è un insieme di capacità interconnesse, e alcune contano molto più di altre per i Suoi acquirenti specifici. Ordinando ogni lacuna, il piano Le consente di abilitare la vera vendita B2B in modo incrementale e di spendere solo dove conta. È una valutazione onesta: individua cosa manca e cosa comporta correggerlo, senza promettere particolari risultati di vendite o crescita, che dipendono dal Suo mercato e dall’esecuzione.
L’audit precede deliberatamente qualsiasi sviluppo, così che si impegni solo in configurazione, moduli o lavoro personalizzato di cui la Sua impresa ha davvero bisogno. Se decide di procedere, le lacune raccomandate possono ciascuna essere definite nell’ambito come implementazione, configurazione, uno dei nostri moduli esistenti o sviluppo personalizzato.
Sì. Molte delle lacune che un Audit di Prontezza B2B fa emergere sono già coperte dai nostri moduli PrestaShop esistenti, ad esempio prezzi per gruppo di clienti, validazione VAT e gestione del reverse-charge, e flussi di richiesta preventivo, così che colmarle sia spesso una questione di installare e configurare funzionalità collaudate anziché commissionare lavoro su misura. Tutto ciò che è davvero specifico della Sua impresa può essere definito nell’ambito come sviluppo personalizzato.
Come l’implementazione segue l’audit
- Prima la configurazione, alcune lacune si colmano puramente impostando PrestaShop correttamente: gruppi di clienti, cataloghi ristretti, prezzi specifici/a fasce e regole fiscali. Dove è il caso, lo diciamo, perché è il percorso più economico.
- Poi i moduli esistenti, dove una capacità richiede più della configurazione nativa (logica di prezzi per gruppo, validazione VAT VIES e reverse-charge intra-UE, flussi di preventivo negoziato), i nostri moduli esistenti spesso la coprono, così che ottenga funzionalità testata anziché qualcosa costruito da zero.
- Sviluppo personalizzato dove serve davvero, se il Suo processo B2B ha requisiti che nulla di pronto all’uso soddisfa, quel pezzo su misura può essere definito nell’ambito e costruito deliberatamente.
Perché l’audit viene prima
Eseguire la valutazione prima di qualsiasi sviluppo significa che investe solo in ciò di cui la Sua impresa ha davvero bisogno, in ordine di priorità, anziché acquistare moduli in modo speculativo o commissionare lavoro personalizzato che la configurazione avrebbe potuto risolvere. Mantiene la spesa onesta: ogni raccomandazione è legata a una lacuna reale, e Lei sceglie fin dove spingersi.
Dunque la risposta è sia diagnosi sia realizzazione, l’audit Le dice con precisione cosa manca e come colmarlo, e possiamo poi implementare le correzioni tramite configurazione, i nostri moduli esistenti o sviluppo personalizzato a seconda della situazione. Non vi sono garanzie di risultato legate allo sviluppo; ciò a cui ci impegniamo è colmare le lacune specifiche che l’audit individua.
La Valutazione di Idoneità dei Moduli mappa i Suoi requisiti aziendali reali alle soluzioni e Le dice, onestamente, cosa si adatta. Anziché partire da un prodotto che potrebbe acquistare, parte da ciò che deve davvero ottenere, quindi procede a ritroso fino alla risposta giusta, che a volte è un modulo, a volte una funzionalità nativa di PrestaShop e a volte nulla del tutto.
Come funziona
- Lei descrive il risultato che Le serve, il problema da risolvere o la capacità da aggiungere, in termini aziendali. Non deve sapere quale modulo o funzionalità lo realizzi; quello è il nostro compito.
- Lo traduciamo in requisiti concreti. Trasformando un obiettivo vago ("mi serve un filtro migliore", "mi serve questo comportamento del checkout") in criteri specifici e verificabili che una soluzione deve soddisfare, incluse considerazioni di compatibilità con la versione di PrestaShop, di tema e di prestazioni.
- Valutiamo le opzioni rispetto a quei requisiti, i nostri e i moduli di terze parti, oltre alla funzionalità nativa di PrestaShop, controllando onestamente ogni candidato rispetto a ciò di cui ha davvero bisogno anziché a ciò che è più facile da vendere.
- Ottiene una matrice dei requisiti e una raccomandazione, una mappatura chiara di ogni requisito all’opzione più idonea, con i compromessi esplicitati, così che la decisione sia trasparente.
Perché conta
Gli errori PrestaShop più costosi di solito non sono i moduli che falliscono del tutto. Sono quelli che funzionano a metà, vengono impilati l’uno sull’altro, entrano in conflitto nel checkout o nel tema e si accumulano silenziosamente in un negozio fragile e lento. Acquistare la cosa giusta una volta evita ciò. L’ecosistema di PrestaShop è ampio e disomogeneo; lo stesso risultato può essere raggiunto in più modi con conseguenze molto diverse per manutenibilità, prestazioni e aggiornamenti di versione, e la valutazione li soppesa anziché limitarsi a confrontare le funzionalità.
Questo è per i commercianti di fronte a una decisione, in procinto di acquistare un modulo, in fase di valutazione di opzioni concorrenti, o incerti se ne abbiano davvero bisogno. Il deliverable è di livello decisionale e imparziale: Le dice cosa acquistare o costruire, cosa saltare e perché, prima di impegnare denaro. Non promette un particolare risultato aziendale; assicura che la soluzione che sceglie si adatti davvero al requisito.
Sì, onestamente. Se un modulo di terze parti, una funzionalità nativa di PrestaShop o nessun modulo è la soluzione più adatta al Suo requisito, lo diciamo. L’intero valore della Valutazione di Idoneità dei Moduli è una raccomandazione imparziale; indirizzarLa verso il nostro catalogo a prescindere dall’idoneità ne vanificherebbe lo scopo ed eroderebbe la fiducia su cui il servizio è costruito.
Come funziona l’imparzialità nella pratica
- Comanda il requisito, non il catalogo, valutiamo ogni candidato rispetto ai Suoi requisiti concreti. Vince la raccomandazione il modulo (o la funzionalità nativa) di chiunque li soddisfi meglio, anche quando non è il nostro.
- Prima il nativo quando basta. PrestaShop fa già moltissimo di base. Se la configurazione o una funzionalità integrata risolve il Suo problema, acquistare qualsiasi modulo, il nostro o di chiunque altro, è la scelta sbagliata, e Le diremo di risparmiare il denaro.
- Terze parti dove si adattano meglio, se un modulo di terze parti è più idoneo alla Sua versione, tema o flusso di lavoro, è quella la raccomandazione onesta, con i compromessi spiegati.
- Compromessi sul tavolo, compatibilità, manutenibilità, prestazioni, supporto e rischio di aggiornamento entrano tutti in gioco, così che la raccomandazione rifletta il costo totale di proprietà, non solo una checklist di funzionalità.
Perché questo è il senso del servizio
Una valutazione che conclude sempre "compra il nostro" non è una valutazione, è un pitch di vendita. La ragione per cui i commercianti pagano per una valutazione di idoneità indipendente è proprio ottenere una raccomandazione di cui possano fidarsi, anche quando li manda altrove o dice loro di non fare nulla. Il panorama dei moduli di PrestaShop è ampio e disomogeneo, e la soluzione davvero migliore per un dato requisito sta frequentemente al di fuori della gamma di un singolo fornitore. Preferiamo avere ragione anziché servire i nostri interessi, perché è ciò che rende la raccomandazione degna di essere messa in pratica.
Riceve una chiara matrice dei requisiti che mappa ciascuna delle Sue esigenze alla soluzione più idonea, con una raccomandazione in linguaggio semplice e i compromessi esplicitati. In breve: saprà cosa acquistare o costruire, cosa saltare e perché, prima di spendere denaro.
Cosa contiene il deliverable
- Una matrice dei requisiti, ciascuna delle Sue esigenze tradotta in un requisito concreto e verificabile, mappata rispetto alle soluzioni candidate (le nostre, di terze parti e la funzionalità nativa di PrestaShop) così che possa vedere a colpo d’occhio cosa soddisfa cosa.
- Una raccomandazione di miglior idoneità per requisito, l’opzione che sceglieremmo e perché, in linguaggio semplice, così che il ragionamento sia trasparente anziché un verdetto a scatola chiusa.
- I compromessi, compatibilità con la Sua versione di PrestaShop e il Suo tema, manutenibilità, prestazioni e rischio di aggiornamento, così che comprenda non solo cosa si adatta ma cosa ogni scelta Le costa nel tempo.
- Indicazioni chiare su cosa saltare. Incluso dove la configurazione nativa basta e non serve alcun modulo, il che spesso fa risparmiare di più.
Perché il formato a matrice aiuta
Una matrice rende la decisione verificabile: anziché fidarsi di una singola riga "compra questo", può vedere ogni requisito, ogni candidato ed esattamente dove ciascuno si adatta o è carente. Ciò è particolarmente prezioso su PrestaShop, dove lo stesso risultato può essere raggiunto in più modi con conseguenze molto diverse per stabilità e aggiornamenti futuri. Rende inoltre facile riconsiderare la decisione in seguito, o istruire uno sviluppatore con precisione su cosa implementare.
Il deliverable è di livello decisionale e imparziale, Le dice cosa acquistare o costruire, cosa saltare e perché, prima di impegnare budget. Non promette un particolare risultato aziendale; ciò che Le dà è la certezza che la soluzione che sceglie si adatti davvero al requisito, così che acquisti la cosa giusta una volta anziché impilare moduli che funzionano a metà. Se decide di procedere, la raccomandazione può essere consegnata direttamente all’implementazione, configurazione, uno dei nostri moduli o sviluppo personalizzato a seconda dei casi.
La Valutazione di Idoneità del Tema misura un tema, o la Sua rosa di candidati, rispetto ai Suoi requisiti reali, non rispetto agli screenshot di marketing curati di una pagina demo. Un tema che appare veloce e flessibile con dodici prodotti di esempio può comportarsi in modo molto diverso quando deve gestire il Suo catalogo completo, i Suoi moduli e il Suo traffico. Noi colmiamo questo divario prima che Lei si impegni.
Cosa ispezioniamo concretamente
- Prestazioni in condizioni reali, come il tema viene renderizzato su un catalogo di dimensioni realistiche anziché su una demo ridotta all'osso, incluso il peso del suo CSS/JS, come gestisce gli elenchi di categorie e prodotti, e dove rischia di penalizzare i Core Web Vitals.
- Possibilità di tema-figlio, se può personalizzare il tema tramite un vero tema-figlio e continuare ad applicare in sicurezza gli aggiornamenti upstream, oppure se ogni modifica significa editare i file core del tema che il prossimo aggiornamento sovrascriverà.
- Supporto B2B, quanto bene gestisce requisiti quali gruppi di clienti, prezzi specifici, visualizzazione delle imposte e cataloghi guidati dall'account, se il Suo negozio non è puramente B2C.
- Accessibilità, l'allineamento alle aspettative EAA / WCAG, che conta sia sul piano legale sia per l'usabilità per tutto il Suo pubblico.
- Qualità mobile, un comportamento davvero responsive e un'usabilità touch reale, non solo un layout che tecnicamente si riadatta.
- Cadenza degli aggiornamenti, se il tema è attivamente mantenuto per le versioni correnti di PrestaShop, oppure un codice abbandonato che diventerà silenziosamente un onere.
Perché è importante: il tema è una delle cose più difficili da cambiare dopo il lancio. Tocca ogni pagina, ogni percorso di conversione e il Suo costo di manutenzione nel lungo periodo. Scegliere solo in base all'aspetto è il modo in cui i negozi finiscono bloccati in un debito prestazionale o in un codice morto. Questa valutazione fa emergere quei rischi mentre Lei ha ancora piena libertà di scelta.
È adatta ai merchant che confrontano temi prima di una build o di un replatforming, alle agenzie che vagliano il tema preferito da un cliente e a chiunque desideri una lettura tecnica indipendente di un tema PrestaShop anziché un discorso di vendita.
Lei riceve un verdetto con punteggio su ogni tema rispetto ai Suoi requisiti specifici, con i compromessi e i rischi resi espliciti prima di impegnarsi. Non scoperti settimane dopo il lancio, quando sono costosi da rimediare.
Com'è fatto il risultato
- Una valutazione chiara di ogni tema (o di ogni candidato nella Sua rosa) misurata rispetto ai criteri che contano per il Suo negozio, così da poter confrontare elementi omogenei anziché basarsi sulle prime impressioni.
- I rischi nominati con chiarezza, debito prestazionale che penalizzerà la velocità delle pagine e i Core Web Vitals, un supporto al tema-figlio scarso o fragile che blocca una personalizzazione sicura, lacune di accessibilità rispetto a EAA / WCAG, o un codice abbandonato che non terrà il passo con PrestaShop.
- Una lettura pratica su se un tema sia una base solida, un compromesso gestibile o qualcosa da evitare.
Perché ha valore: i problemi più dannosi di un tema sono quelli che non si vedono in una demo. Un tema può sembrare perfetto ed essere comunque impossibile da personalizzare senza compromettere gli aggiornamenti, oppure lento una volta caricato il Suo catalogo reale, o silenziosamente non mantenuto. Quando questi problemi emergono in produzione, di solito Lei ha già investito in contenuti, configurazione e personalizzazione sopra di esso.
Lo scopo della valutazione è una scelta consapevole. Lei decide a occhi aperti, mantenere, personalizzare o cambiare, e affronta la decisione sapendo esattamente che cosa si sta assumendo. Non facciamo alcuna promessa su un risultato particolare; Le forniamo il quadro tecnico onesto affinché la decisione resti Sua, presa su basi solide. È la differenza tra scegliere un tema ed ereditarne i problemi.
Sì. Possiamo valutare un tema che Lei ha già acquistato o su cui ha già costruito, e applicare esattamente lo stesso verdetto con punteggio basato sui requisiti a ciò che usa oggi. La valutazione non è solo per la selezione di un tema da zero. È altrettanto utile quando ha ereditato un tema, ha rilevato un negozio o ha iniziato a sospettare che il tema attuale La stia frenando.
Cosa Le dice la valutazione di un tema esistente
- Se vale la pena tenerlo, una lettura onesta su se il Suo tema attuale sia una base solida su cui continuare a investire, oppure un onere nel lungo periodo.
- Quali sono i suoi rischi, debito prestazionale che rallenta le pagine, supporto al tema-figlio fragile o assente che rende difficile una personalizzazione sicura, lacune di accessibilità rispetto a EAA / WCAG e se il codice sia ancora attivamente mantenuto per le versioni correnti di PrestaShop.
- Se un tema-figlio o un cambio siano la strada migliore, se le fondamenta sono buone, possiamo confermare che personalizzare tramite un vero tema-figlio La mantiene al sicuro dagli aggiornamenti; in caso contrario, Le diciamo chiaramente che un cambio è la via a minor rischio.
Perché è importante: molti merchant scoprono i limiti reali di un tema solo dopo aver costruito contenuti, configurato moduli e personalizzato template sopra di esso. Valutare ciò che già usa Le permette di prendere quella decisione in modo deliberato anziché reattivo, prima di investire altro lavoro su una base traballante, o, viceversa, prima di buttare via inutilmente un tema che ha solo bisogno di un sensato approccio a tema-figlio.
È particolarmente adatta ai negozi che non hanno scelto il proprio tema attuale, che stanno valutando un redesign, o che semplicemente desiderano un parere tecnico indipendente sul tema da cui già dipendono, con i rischi esposti con chiarezza, così che la decisione resti Sua.
Un progetto di modulo PrestaShop su misura viene gestito come un vero incarico ingegneristico, non come una toppa veloce. Ogni progetto inizia con una discovery definita nel perimetro, la fase in cui trasformiamo un'esigenza di business in una specifica concreta e pronta per la build.
Prima la discovery
Nella discovery determiniamo cosa il modulo deve effettivamente fare, inclusi i casi limite e i vincoli specifici di PrestaShop che silenziosamente affondano i progetti definiti male: come deve agganciarsi allo storefront e al back office, come si comporta tra gruppi di clienti, multistore, lingue e valute multiple, come interagisce con il carrello, gli ordini o il catalogo, e dove il comportamento del core può e non può essere esteso in sicurezza. Il risultato è una specifica abbastanza precisa da quotare e costruire onestamente. Il costo della discovery viene accreditato sulla build, quindi se Lei procede non è denaro perduto. Diventa parte del lavoro.
Costruire, testare e rilasciare
Da quella specifica costruiamo il modulo secondo standard di produzione, usando l'architettura di hook e override di PrestaShop anziché manomettere il core, poi lo testiamo e lo rilasciamo. I termini di supporto vengono concordati nel perimetro del progetto, così Lei sa in anticipo cosa è coperto, anziché scoprirlo dopo.
Perché lavorare così: la maggior parte dei progetti di modulo problematici fallisce non nella scrittura del codice ma nelle assunzioni, un requisito che si rivela significare tre cose diverse, o un vincolo di PrestaShop che nessuno ha verificato. Fissare questi punti nella discovery è ciò che rende prevedibile la build.
Il risultato è un modulo che fa esattamente ciò che i moduli standard e di marketplace non fanno, costruito deliberatamente per il Suo negozio anziché assemblato da parti disomogenee. È adatto ai merchant il cui flusso di lavoro, catalogo o integrazione davvero non si adatta a un modulo pronto all'uso, e che desiderano qualcosa di manutenibile anziché un espediente una tantum che si rompe al prossimo aggiornamento.
Il Suo modulo su misura viene costruito e testato su PrestaShop 1.7, 8 e 9. PrestaShop è cambiato moltissimo tra queste versioni maggiori. API core sono state deprecate, le firme sono cambiate e alcuni metodi sono stati rimossi del tutto, quindi un modulo scritto ingenuamente per una versione spesso si rompe su un'altra.
Come lo manteniamo compatibile
Usiamo wrapper di compatibilità tra versioni anziché chiamare direttamente API core fragili. Quando un metodo di PrestaShop differisce o scompare tra le versioni, il wrapper rileva la versione in esecuzione e chiama l'API corretta sottostante, così lo stesso modulo si comporta correttamente su 1.7, su 8 e su 9. Questo riduce il rischio di rotture in fase di aggiornamento dovute ad API core deprecate o rimosse, la modalità di guasto che lascia i merchant bloccati su una vecchia versione di PrestaShop perché il loro codice su misura non può avanzare.
Self-heal / infra-guard
Il modulo viene fornito anche con la nostra architettura self-heal / infra-guard. Gli aggiornamenti di PrestaShop e le ricostruzioni della cache possono lasciare le schede di back office di un modulo mancanti, i suoi hook non registrati o lo schema del suo database disallineato, e il sintomo classico è un modulo che fallisce in silenzio, con una voce di menu sparita o una funzionalità che semplicemente non gira. Infra-guard controlla le schede, gli hook e lo schema propri del modulo e li ripara invece di lasciarli marcire, così il modulo continua a funzionare dopo un aggiornamento di PrestaShop anziché degradarsi senza che ce ne si accorga.
Perché è importante: su PrestaShop, il costo di un modulo su misura raramente sta nella prima build, sta in tutto ciò che viene dopo. Costruire su tre versioni maggiori supportate con wrapper di compatibilità e infrastruttura self-healing è ciò che mantiene il modulo un asset di lungo periodo che sopravvive agli aggiornamenti, anziché un onere da re-ingegnerizzare ogni volta che la piattaforma si muove. Questo è particolarmente prezioso per i merchant che intendono mantenere il negozio aggiornato e non vogliono che il proprio codice su misura sia ciò che li inchioda a una vecchia release.
Sì, Lei possiede il Suo modulo, ed è davvero PHP aperto e leggibile, senza ionCube e senza offuscamento. Lei, o qualsiasi sviluppatore con cui scelga di lavorare, può aprire il sorgente, leggere esattamente cosa fa, verificarne sicurezza e comportamento, e mantenerlo o estenderlo in autonomia.
Perché è una scelta deliberata
Gran parte del mercato dei moduli PrestaShop distribuisce codice cifrato o bloccato con ionCube. Sembra innocuo finché non ha bisogno di cambiare qualcosa, fare il debug di un'interazione con un altro modulo o spostare il negozio, e scopre di non poterlo fare, perché il codice è una scatola nera e solo il fornitore originale ne possiede la chiave. Questo La vincola silenziosamente a un unico fornitore per tenere in funzione il Suo stesso negozio.
Noi facciamo l'opposto. Poiché il modulo viene fornito come PHP semplice e verificabile:
- Può farne verificare la sicurezza alle Sue condizioni, da chiunque Lei ritenga affidabile.
- Può fare il debug delle interazioni con il Suo tema e altri moduli invece di sbattere contro un muro opaco.
- Può affidarne la manutenzione o l'estensione a qualsiasi sviluppatore PrestaShop competente, non dipende da noi per continuare a operare.
- Può leggerlo per comprendere il Suo stesso negozio, cosa che conta per la conformità, il passaggio di consegne e la due diligence.
Perché è importante: un modulo su misura è parte dell'infrastruttura della Sua azienda, e un'infrastruttura che non può leggere o modificare non è davvero Sua. Un codice aperto e leggibile significa che non è mai ostaggio di un vendor lock-in, e che il futuro del Suo negozio resta nelle Sue mani. È l'opposto di gran parte del mercato dei moduli PrestaShop, ed è una scelta deliberata, preferiamo guadagnarci il lavoro futuro essendo piacevoli con cui collaborare, anziché tenendo prigioniero il Suo codice.
Lo sviluppo di moduli PrestaShop su misura parte da 2.490 €. Il prezzo esatto è fissato dalla discovery definita nel perimetro, perché una quotazione onesta richiede una specifica reale anziché un'ipotesi fatta prima che qualcuno abbia capito cosa il modulo deve effettivamente fare.
Perché il prezzo è definito nel perimetro, non fisso
Il lavoro su misura varia enormemente. Un modulo che aggiunge un solo comportamento mirato è una build molto diversa da uno che si integra con un sistema esterno, gestisce multistore e lingue multiple, manipola il flusso del carrello o dell'ordine, o deve gestire casi limite complicati tra gruppi di clienti e valute. Quotare qualcosa del genere su un brief di una riga o gonfia il numero per coprire le incognite, o nasconde un rischio che emerge dopo come scope creep. La discovery elimina le congetture: trasformiamo la Sua esigenza in una specifica concreta, con i vincoli e i casi limite di PrestaShop fissati, e quotiamo rispetto a quella.
Il costo della discovery viene accreditato sulla build
La fase di discovery ha un costo, ma viene accreditato sulla build, quindi non è denaro perduto se Lei decide di procedere. Diventa semplicemente parte del progetto. Se non procede, porta comunque con sé una specifica chiara e pronta per la build di ciò di cui il Suo modulo avrebbe bisogno, che ha valore di per sé (ad esempio se la porta altrove o la riprende in seguito).
Per cosa paga: non solo codice, ma un modulo costruito secondo standard di produzione in PHP aperto e leggibile che Lei possiede, testato su PrestaShop 1.7, 8 e 9, con l'architettura self-heal / infra-guard che lo mantiene funzionante dopo gli aggiornamenti della piattaforma. La cifra da 2.490 € è la soglia realistica per questo livello di lavoro; la discovery stabilisce dove si colloca il Suo progetto specifico al di sopra di essa.
Un Configuratore di Prodotto dà il meglio di sé su prodotti complessi, su misura o multi-componente, tutto ciò in cui il cliente di fatto assembla la propria versione anziché scegliere uno SKU fisso dallo scaffale. Se un acquisto comporta la scelta di dimensioni, materiali, finiture, opzioni e accessori, una pagina prodotto piatta non può rappresentarlo onestamente, e gli attributi basati sulle combinazioni diventano rapidamente ingestibili.
Prodotti che si adattano bene
- Beni tagliati su misura, tutto ciò che si vende per lunghezza, larghezza o area scelta, dove il prezzo dipende dalle dimensioni inserite dal cliente.
- Bundle e kit, prodotti assemblati da più componenti che il cliente seleziona insieme.
- Arredamento, telaio, dimensione, materiale, tessuto o finitura e scelte di accessori che si combinano in un unico articolo composto.
- Insegne, opzioni di dimensione, supporto, finitura e quantità che determinano il prezzo.
- Attrezzatura tecnica, apparecchiature configurabili in cui la build corretta dipende da una catena di scelte compatibili.
Perché una pagina prodotto standard non basta: gli attributi e le combinazioni nativi di PrestaShop funzionano per una manciata di varianti, ma non scalano per prodotti con molte opzioni indipendenti o con prezzo basato sulle dimensioni, si finisce con un'esplosione di combinazioni o con una pagina che semplicemente non riesce a catturare le scelte reali. Un configuratore modella le opzioni come scelte anziché come varianti precostruite, il che mantiene il catalogo gestibile e l'esperienza d'acquisto chiara.
Sulla pagina, gli acquirenti scelgono le proprie opzioni con assemblaggio del prezzo in tempo reale, il prezzo si aggiorna mentre costruiscono, così vedono sempre il costo esatto della configurazione che stanno componendo anziché una vaga cifra “a partire da” o un vicolo cieco con preventivo su richiesta. Quella trasparenza è ciò che trasforma un prodotto complesso in qualcosa che un cliente può acquistare online con fiducia.
È adatto ai merchant i cui prodotti sono davvero configurabili e che attualmente li forzano in pagine prodotto rigide, gestiscono la configurazione via e-mail, o perdono vendite perché lo storefront non riesce a mostrare un prezzo reale per una build reale.
Sì. Ogni configurazione è SEO-pulita e condivisibile tramite un URL basato sul percorso, un percorso reale e leggibile anziché una stringa di query disordinata che trascina un lungo elenco di parametri ?option=…&option=…. Questa distinzione conta più di quanto sembri a prima vista.
Perché gli URL basati sul percorso contano
- Collegabili e salvabili tra i preferiti, un cliente può salvare una build specifica, tornarci più tardi o richiamarla su un altro dispositivo e riprendere esattamente da dove era.
- Condivisibili, un acquirente può inviare la propria esatta configurazione a un collega, a un partner o di nuovo al Suo team vendite, e tutti arrivano alla stessa build. Allo stesso modo, Lei può inviare a un cliente una configurazione già preparata da riprendere.
- Indicizzabili dove appropriato. I percorsi puliti sono qualcosa che i motori di ricerca possono trattare come pagine vere e proprie, anziché la zuppa di parametri che i crawler tipicamente ignorano o trattano come duplicati. Lei mantiene il controllo su quali configurazioni vale la pena far emergere.
Costruito sul motore Product Setup
Il configuratore gira sul nostro motore Product Setup, il che significa che è veloce e scansionabile anziché una pesante scatola nera JavaScript. Molti configuratori sono interamente widget lato client: ottimi finché un motore di ricerca, un link condiviso o un cliente su connessione lenta non incontrano un guscio vuoto che si assembla solo dopo che gira una montagna di JavaScript. Costruire sul motore Product Setup mantiene le pagine del configuratore reali e accessibili, con la scelta delle opzioni interattiva in tempo reale stratificata sopra, anziché come unica cosa che regge la pagina.
Perché è importante: per i prodotti configurabili, il link è il prodotto. Se un cliente non può salvare tra i preferiti, condividere o tornare a una build specifica, o se i motori di ricerca non riescono a dare un senso alle Sue configurazioni, Lei perde sia conversioni sia reperibilità. URL di configurazione puliti, basati sul percorso e scansionabili trasformano ogni build in qualcosa di durevole, condivisibile e indicizzabile, anziché in uno stato del browser usa e getta.
Il Setup del Configuratore di Prodotto parte da 1.490 €, e il lavoro trasforma il Suo prodotto e le sue opzioni in un configuratore guidato funzionante con prezzi in tempo reale e URL condivisibili, non in un widget lasciato a metà che poi deve cablare da solo.
Cosa include il setup
- Trasformare il Suo prodotto e le sue opzioni reali in un configuratore guidato che accompagna l'acquirente attraverso le sue scelte sulla pagina.
- Prezzi in tempo reale, così il prezzo si assembla mentre il cliente costruisce e vede sempre il costo esatto della propria configurazione.
- URL di configurazione condivisibili e basati sul percorso, così una build specifica può essere collegata, salvata tra i preferiti, inviata a un cliente e indicizzata dove appropriato, anziché restare intrappolata in uno stato transitorio del browser.
Perché il perimetro viene confermato nella discovery
Il perimetro esatto, il numero di opzioni, le regole di prezzo che collegano tali opzioni al prezzo finale e qualsiasi integrazione di cui il configuratore ha bisogno, viene confermato in una breve discovery. È questo che mantiene onesta la quotazione: un configuratore con un paio di opzioni semplici e prezzi semplici è una build molto diversa da uno con prezzo basato sulle dimensioni, opzioni interdipendenti o una connessione a un altro sistema. La discovery assicura che la quotazione rifletta il Suo prodotto reale, non un template applicato alla cieca, così non paga per una complessità che non ha né sottovaluta quella che ha.
Perché è importante: per i prodotti configurabili, “impostare un configuratore” può significare quantità di lavoro enormemente diverse a seconda di come opzioni e prezzi si comportano realmente. Ancorarsi a da 1.490 € e poi confermare i dettagli nella discovery Le dà una soglia realistica e un prezzo radicato nel Suo prodotto effettivo. È adatto ai merchant con prodotti davvero configurabili che desiderano far comporre e prezzare ai propri acquirenti la propria versione sullo storefront, con ogni build pulita, veloce e condivisibile.
Monitoring Plan è il più leggero dei nostri Care Plan PrestaShop, una rete di sicurezza continua e sempre attiva che sorveglia il Suo negozio così che Lei non debba farlo. È pensato per un solo compito e lo svolge bene: dirLe che qualcosa non va prima che un cliente Le scriva una e-mail al riguardo.
Cosa è incluso
- Monitoraggio dell'uptime, il Suo storefront e il checkout vengono controllati di continuo, così un'interruzione genera un avviso nel momento in cui accade anziché ore dopo.
- Controlli di cron e core-health, intercettiamo job cron rotti o bloccati ed errori fatali evidenti che degradano silenziosamente un negozio PrestaShop (attività pianificate fallite, processi core mancanti, ricorrenti fatal PHP).
- Sorveglianza di sicurezza e prestazioni, avvisi di regressione di base che segnalano quando qualcosa è cambiato in peggio.
- Dashboard live + report mensile, una vista in tempo reale della % di uptime, degli incidenti e di ciò che abbiamo rilevato, riassunta ogni mese così da avere una chiara traccia documentale.
Cosa mostrano la dashboard e il report
La dashboard live Le offre uno stato di salute a colpo d'occhio: la percentuale di uptime corrente, eventuali incidenti aperti o recenti e gli ultimi controlli. Il report mensile sintetizza tutto ciò in uptime sul periodo, un registro degli incidenti e una breve nota su qualunque cosa meriti la Sua attenzione. Così anche un proprietario poco presente resta informato.
Un confine onesto
Monitoring Plan è monitoraggio e avvisi soltanto. È gli occhi sul Suo negozio, non le mani, l'effettivo lavoro di riparazione viene quotato separatamente, o gestito dalle ore esperte mensili di Store Care Plan. Manteniamo quella linea chiara di proposito, così Lei sa sempre esattamente per cosa sta pagando. La copertura in orario lavorativo per gli eventi segnalati è lun.–ven., 09:00–18:00 CET.
Se il Suo negozio è stabile e desidera semplicemente un affidabile sistema di allerta precoce, Monitoring Plan è il punto di partenza giusto. Quando preferirà far gestire i piccoli problemi man mano che compaiono, Store Care Plan è il passo successivo naturale, include tutto ciò che c'è qui più un monte di ore esperte ogni mese.
Monitoring Plan copre monitoraggio e avvisi, è gli occhi sul Suo negozio, non le mani. Quando qualcosa si rompe, Lei viene avvisato immediatamente; la riparazione vera e propria viene poi quotata separatamente, o coperta dalle ore esperte mensili di Store Care Plan. Siamo deliberati su questa distinzione così che non ci siano mai sorprese su cosa il piano fa e non fa.
Come funziona nella pratica
Quando un controllo fallisce, il Suo storefront o il checkout va giù, un job cron si blocca o emerge un errore fatale, Monitoring Plan genera un avviso e registra l'incidente sulla Sua dashboard live. Lei viene a conoscenza del problema nel momento in cui accade anziché da un cliente frustrato. Ciò che Monitoring Plan non fa è accedere automaticamente e riparare il problema; la diagnosi e la risoluzione sono lavoro separato.
Le Sue opzioni quando qualcosa va riparato
- Quotare la riparazione separatamente, definiamo nel perimetro il problema specifico e Lei approva il lavoro prima che venga fatto qualsiasi cosa.
- Passare a Store Care Plan, se preferisce non avere a che fare con quotazioni per singolo incidente, Store Care Plan include tutto ciò che c'è in Monitoring Plan più 2 ore di lavoro esperto al mese (cap 6h) per gestire i piccoli problemi, configurazione, cache, cron, impostazioni dei moduli ed errori PHP evidenti, man mano che compaiono.
La può vedere così: Monitoring Plan è progettato per avvisarLa in fretta e Le dà un registro chiaro di ciò che è accaduto. Store Care Plan aggiunge qualcuno che agisce sulle piccole cose senza una nuova quotazione ogni volta. Molti proprietari di negozi iniziano con Monitoring Plan per tranquillità e passano a Store Care Plan una volta che si rendono conto di quanta manutenzione ordinaria preferirebbero delegare. In entrambi i casi, i progetti più grandi, una nuova funzionalità, un modulo su misura, una migrazione, vengono sempre definiti nel perimetro e quotati a sé, così la linea tra monitoraggio e lavoro pratico resta pulita e onesta.
Un'interruzione del servizio genera un avviso istantaneo. Un evento P1, il Suo storefront o checkout fuori servizio, viene segnalato immediatamente in orario lavorativo (lun.–ven., 09:00–18:00 CET), così Lei lo scopre nel momento in cui accade anziché da un cliente frustrato o da un ordine mancato.
Cosa conta come P1
P1 è riservato alle cose che Le costano direttamente vendite: il Suo storefront che non si carica, o il checkout che fallisce così che i clienti non possono completare un ordine. Questi sono i segnali a massima priorità sulla Sua dashboard proprio perché ogni minuto di un'interruzione conta per un negozio PrestaShop.
Come funzionano gli avvisi
Monitoring Plan controlla di continuo il Suo storefront e il checkout. Nel momento in cui un controllo fallisce, viene generato un avviso e l'incidente viene registrato sulla Sua dashboard live con una marca temporale. Questo Le dà due cose in una volta: un avviso immediato e un registro permanente a cui può fare riferimento, utile per individuare schemi o confermare esattamente quando un problema è iniziato e finito.
Una nota onesta
Monitoring Plan La avvisa in fretta, questa è la sua promessa centrale, ma è un piano di monitoraggio e avvisi, quindi la riparazione vera e propria viene quotata separatamente o gestita dalle ore mensili di Store Care Plan. Non promettiamo zero downtime; nessun fornitore onesto può farlo. Ciò che promettiamo è che Lei non sarà l'ultimo a saperlo. I controlli continui più la segnalazione immediata durante la finestra lavorativa fanno sì che i problemi emergano non appena i controlli continui li segnalano, non dopo che un cliente si prende il tempo di lamentarsi. Il che spesso fa la differenza tra una rapida ripresa e un pomeriggio di ordini perduti.
Monitoring Plan è ideale per i negozi che sono stabili e vogliono solo occhi addosso, una rete di sicurezza affidabile senza un monte mensile di ore di lavoro. Se il Suo negozio PrestaShop gira senza intoppi la maggior parte del tempo e desidera soprattutto essere certo di sapere in fretta di un problema, questa è la scelta giusta.
Otterrà il massimo da Monitoring Plan se…
- Il Suo negozio è consolidato e ragionevolmente privo di problemi, e raramente ha bisogno di modifiche pratiche.
- Desidera monitoraggio continuo di uptime, cron e core-health con avvisi immediati in orario lavorativo (lun.–ven., 09:00–18:00 CET).
- Preferisce pagare la riparazione occasionale come quotazione separata e approvata, anziché portarsi un budget di ore mensili che potrebbe non usare.
- Dà valore a una dashboard live e a un report mensile come registro chiaro e onesto della salute del Suo negozio.
Quando conviene salire di livello
Se desidera anche che le piccole riparazioni vengano gestite per Lei, configurazione, cache, cron, impostazioni dei moduli ed errori PHP evidenti, senza quotare ciascuna, salga a Store Care Plan. Store Care Plan include tutto ciò che c'è in Monitoring Plan più 2 ore di lavoro esperto al mese (cap 6h, nessun riporto), così la manutenzione ordinaria viene fatta anziché accumularsi. E se la Sua priorità è la visibilità nelle ricerche anziché l'uptime, SEO Care Plan si concentra invece sull'igiene tecnica SEO.
In breve: scelga Monitoring Plan quando desidera un'affidabile allerta precoce e una traccia documentale, ed è a Suo agio nel far quotare le riparazioni al bisogno. Scelga Store Care Plan quando vorrebbe che qualcuno tenesse silenziosamente in ordine le piccole cose ogni mese. Molti proprietari iniziano con Monitor e salgono di livello una volta che vedono quanto lavoro ordinario preferirebbero delegare.
Store Care Plan mantiene il Suo negozio PrestaShop in salute e Le dà una persona reale che gestisce le piccole cose che altrimenti si accumulano. È la via di mezzo pratica dei nostri Care Plan: monitoraggio più un monte mensile di ore esperte, così i problemi vengono sia individuati sia gestiti.
Cosa è incluso
- Tutto ciò che c'è in Monitoring Plan, monitoraggio continuo di uptime, cron e core-health con avvisi immediati, così Lei sa sempre quando qualcosa non va.
- Controlli di sicurezza e prestazioni, avvisi su moduli e configurazione più sorveglianza delle regressioni, così una modifica che degrada silenziosamente il Suo negozio viene segnalata.
- 2 ore di lavoro esperto al mese (cap 6h), le riparazioni di configurazione, cache, cron e moduli, e gli errori PHP evidenti, che altrimenti si accumulano in un arretrato.
- Dashboard live + report mensile, punteggi di salute, incidenti, azioni intraprese e ore utilizzate, così può vedere esattamente dove è andato il Suo tempo.
Come funzionano le ore
Store Care Plan include 2 ore esperte al mese. Le ore non si riportano, e qualsiasi cosa oltre viene fatturata in incrementi di 15 minuti fino a un cap mensile di 6 ore, così un mese intenso non Le sfugge mai di mano. Le ore sono mirate alla piccola manutenzione ricorrente che tiene in funzione un negozio; un progetto più grande (una nuova funzionalità, un modulo su misura, una migrazione) viene definito nel perimetro e quotato a sé.
Obiettivi di servizio e reportistica
Store Care Plan comporta un obiettivo di uptime monitorato del 99,5% e punta a una risposta entro 3 ore lavorative per un incidente P1, storefront o checkout fuori servizio, durante la finestra lavorativa (lun.–ven., 09:00–18:00 CET). Il report mensile lega tutto insieme: mostra i Suoi punteggi di salute e il loro andamento, gli incidenti accaduti, le azioni specifiche intraprese sul Suo negozio e come sono state usate le ore mensili, un registro trasparente anziché un vago “tutto bene”.
Store Care Plan è adatto ai proprietari che vogliono il proprio negozio sorvegliato e il lavoro ordinario gestito silenziosamente, senza sollevare una quotazione separata ogni volta che qualcosa di piccolo richiede attenzione. Se la Sua priorità è invece la visibilità nelle ricerche, lo abbini a SEO Care Plan, che si concentra sull'igiene tecnica SEO.
Store Care Plan include 2 ore esperte al mese. Le ore non si riportano, e qualsiasi cosa oltre viene fatturata in incrementi di 15 minuti fino a un cap mensile di 6 ore, così un mese intenso non Le sfugge mai di mano, e Lei conosce sempre in anticipo la Sua esposizione massima.
Come sono strutturate le ore
- 2 ore incluse ogni mese, la Sua dotazione fissa per la manutenzione ordinaria.
- Nessun riporto, ogni mese inizia da capo; il tempo non usato non viene accantonato. Le ore sono progettate per mantenere il Suo negozio aggiornato, non per accumulare un saldo.
- Eccedenza in incrementi di 15 minuti, se un mese richiede più delle 2 ore incluse, il lavoro aggiuntivo viene fatturato con precisione, in blocchi da un quarto d'ora anziché arrotondato all'ora.
- Limitato a 6 ore, il totale di ore mensili è limitato a 6, così anche un mese insolitamente impegnativo ha un tetto prevedibile.
A cosa servono le ore, e a cosa no
Le ore coprono il piccolo lavoro ricorrente che mantiene in salute un negozio PrestaShop: configurazione, cache, cron, impostazioni dei moduli ed errori PHP evidenti. Sono deliberatamente delimitate alla manutenzione costante che altrimenti si accumula.
Un lavoro più grande, una nuova funzionalità, un modulo su misura, una migrazione di dati, un redesign, ricade al di fuori delle ore mensili e viene definito nel perimetro e quotato a sé. Questo mantiene la dotazione mensile focalizzata e il Suo conto prevedibile: manutenzione ordinaria dentro il piano, progetti prezzati in modo trasparente e approvati prima di iniziare.
Tracciare tutto
Ogni azione e le ore che ha consumato vengono registrate sulla Sua dashboard live e riassunte nel report mensile, così può vedere esattamente come sono state usate le 2 ore e se è stata applicata qualche eccedenza. Se ha costantemente bisogno di più di quanto il cap consente, è un chiaro segnale che vale la pena definire un incarico dedicato anziché tirare un piano di manutenzione.
Per un incidente P1, il Suo storefront o checkout fuori servizio, Store Care Plan punta a una risposta entro 3 ore lavorative (lun.–ven., 09:00–18:00 CET). Il piano comporta inoltre un obiettivo di uptime monitorato del 99,5%, così i problemi vengono intercettati e affrontati rapidamente anziché lasciati a trascinarsi.
Cosa significa P1
P1 è riservato ai problemi che La fermano direttamente dal vendere: il Suo storefront che non si carica, o il checkout che fallisce così che i clienti non possono completare un ordine. Sono gli eventi a massima priorità perché ogni minuto conta per un negozio PrestaShop, e sono ciò attorno a cui è costruito l'obiettivo di risposta.
Come la risposta si affianca al monitoraggio
Store Care Plan include tutto ciò che c'è in Monitoring Plan, quindi un evento P1 viene rilevato e segnalato nel momento in cui accade tramite controlli continui. L'obiettivo di risposta entro 3 ore lavorative governa poi quanto rapidamente iniziamo a lavorare l'incidente durante la finestra lavorativa. Il rilevamento è immediato; l'obiettivo di risposta copre l'avvio dell'attenzione pratica.
Una parola onesta sull'uptime
L'obiettivo di uptime monitorato del 99,5% è esattamente questo, un obiettivo rispetto al quale monitoriamo e rendicontiamo, non una promessa di zero downtime. Nessun fornitore onesto può garantire che un negozio non andrà mai giù. Ciò a cui Store Care Plan si impegna è un rilevamento rapido e una finestra di risposta definita, più un registro trasparente degli incidenti e di come sono stati gestiti nel Suo report mensile.
Ricordi che il lavoro di risoluzione mensile attinge alle Sue 2 ore esperte (cap 6h, nessun riporto); un recupero davvero grande o un progetto oltre le riparazioni ordinarie viene definito nel perimetro e quotato separatamente. La combinazione, monitoraggio continuo, un obiettivo di risposta P1 entro 3 ore lavorative e un obiettivo di uptime monitorato del 99,5%, significa che i problemi vengono fatti emergere e affrontati rapidamente anziché scoperti tardi e lasciati incancrenire.
Le ore mensili di Store Care Plan coprono le piccole cose che mantengono in salute un negozio: configurazione, cache, cron, impostazioni dei moduli ed errori PHP evidenti. È la manutenzione costante e poco appariscente che altrimenti si accumula silenziosamente e, lasciata a sé, si trasforma in un problema molto più grande.
Lavoro tipico coperto dalle ore
- Configurazione, regolare impostazioni di PrestaShop e dei moduli, correggere opzioni che si sono spostate, mettere in ordine i parametri del negozio.
- Cache, svuotare e ricostruire la cache quando causa pagine stantie o comportamenti anomali, e risolvere i problemi legati alla cache.
- Cron, rimettere in funzione attività pianificate bloccate o rotte così che i job in background svolgano il loro lavoro.
- Impostazioni dei moduli, correggere moduli mal configurati e i piccoli conflitti che emergono dopo gli aggiornamenti.
- Errori PHP evidenti, risolvere i fatal e i warning netti che degradano un negozio.
Cosa ricade al di fuori delle ore mensili
Qualsiasi cosa più grande, una nuova funzionalità, un modulo su misura, un cambio di tema, una migrazione di dati, viene definita nel perimetro e quotata separatamente. È voluto: mantiene le ore mensili focalizzate sul tenerLa in funzione senza intoppi, e mantiene prevedibile il Suo conto, con il lavoro più grande prezzato in modo trasparente e approvato prima che inizi.
Come viene gestito il tempo
Lei ha 2 ore esperte al mese. Le ore non si riportano, l'eccedenza viene fatturata in incrementi di 15 minuti, e il totale è limitato a 6 ore in un mese. Così anche un mese intenso resta prevedibile. Ogni attività e le ore che ha usato vengono registrate sulla Sua dashboard live e riassunte nel report mensile, così può vedere con precisione cosa è stato fatto e dove è andato il tempo. Se si accorge di toccare regolarmente il cap su lavoro ordinario, di solito è segno che vale la pena definire un incarico dedicato anziché tirare un piano di manutenzione, e glielo diremo onestamente.
SEO Care Plan mantiene solide le fondamenta tecniche della Sua SEO PrestaShop man mano che il Suo catalogo e i Suoi contenuti continuano a cambiare. È un piano di igiene tecnica continua: un controllo regolare, ore per riparare ciò che trova e una visione onesta e prioritizzata di cosa fare poi. Incluso quando non ha bisogno di spendere.
Cosa è incluso
- Audit SEO tecnico mensile, indicizzazione, canonical, metadati, contenuti duplicati, dati strutturati e Core Web Vitals, così i segnali tecnici su cui i motori di ricerca si basano restano puliti man mano che il Suo negozio evolve.
- Igiene SEO di categoria/prodotto, mantenere le pagine di categoria e prodotto tecnicamente solide, più raccomandazioni di internal-linking per rafforzare il modo in cui le pagine si collegano.
- 4 ore al mese (cap 8h), tempo per riparare i piccoli problemi SEO che l'audit fa emergere, prima che si accumulino.
- Dashboard SEO live + report mensile, l'andamento del Suo punteggio nel tempo, le correzioni applicate e un elenco prioritizzato di “cosa fare poi”.
Cosa contengono la dashboard e il report
La dashboard live traccia la salute della Sua SEO tecnica e come sta andando. Il report mensile aggiunge il dettaglio: cosa ha trovato l'audit, quali problemi sono stati risolti con le ore incluse e un elenco chiaramente ordinato di “cosa fare poi” così che il lavoro più prezioso sia evidente. Soprattutto, Le dice onestamente quando non ha bisogno di spendere, non inventeremo lavoro per riempire le ore.
Come funzionano le ore
SEO Care Plan include 4 ore al mese per riparare piccoli problemi SEO, fino a un cap di 8 ore; le ore non si riportano. Il focus è mantenere aggiornata la Sua igiene SEO anziché accantonare tempo.
Un confine onesto
SEO Care Plan riguarda l'igiene tecnica SEO, non fornisce alcuna garanzia di posizionamenti o traffico, perché nessun fornitore onesto può prometterli. E non è un piano di uptime: per il monitoraggio di storefront/checkout e la risposta alle interruzioni, lo abbini a Store Care Plan (o scelga Complete Care Plan, che include entrambi). Ciò che SEO Care Plan fa è intercettare presto le regressioni tecniche, così che una base solida resti solida.
SEO Care Plan include 4 ore al mese per riparare piccoli problemi SEO, fino a un cap di 8 ore. Le ore non si riportano, ogni mese è una nuova allocazione focalizzata sul mantenere aggiornata la Sua igiene SEO anziché accantonare tempo.
Come sono strutturate le ore
- 4 ore incluse ogni mese, la Sua allocazione fissa per riparare i piccoli problemi tecnici SEO che l'audit mensile fa emergere.
- Nessun riporto, il tempo non usato non viene riportato. Il piano riguarda il restare aggiornati mese dopo mese, non l'accumulare un saldo che potrebbe non usare mai.
- Limitato a 8 ore, così anche un mese con più cose da riparare ha un tetto prevedibile.
A cosa servono le ore
Le ore sono mirate al lavoro costante e piccolo di igiene SEO che mantiene pulita la Sua fondamenta tecnica man mano che il catalogo e i contenuti cambiano: riparare problemi di indicizzazione e canonical, mettere in ordine i metadati, affrontare contenuti duplicati, correggere i dati strutturati, agire sulle raccomandazioni di internal-linking e risolvere i problemi di pagine di categoria e prodotto che l'audit segnala. Sono deliberatamente delimitate alla manutenzione anziché alle grandi campagne.
Dove si colloca il lavoro più grande
Uno sforzo grande e una tantum, una diagnosi approfondita, un importante progetto di contenuti o strutturale, sta al di fuori delle ore mensili e viene gestito separatamente; un SEO Audit una tantum è la naturale rampa d'accesso per quel tipo di analisi approfondita. SEO Care Plan mantiene poi la fondamenta in salute mese dopo mese.
Una nota onesta sulla regola del “non si riportano”: non è lì per farLe perdere tempo. Riflette a cosa serve il piano. Se davvero non c'è nulla di urgente da riparare in un dato mese, il report mensile lo dirà chiaramente. Preferiamo dirglielo anziché inventare lavoro per consumare le ore. E per chiarezza, SEO Care Plan non fa alcuna promessa su posizionamenti o traffico; mantiene solida la Sua SEO tecnica, che è la fondamenta da cui dipendono quei risultati.
La risposta standard sotto SEO Care Plan è di 1 giorno lavorativo; un problema critico, ad esempio un noindex accidentale su pagine chiave, viene gestito entro 8 ore lavorative.
Cosa conta come critico
Critico significa un problema tecnico SEO che può attivamente costarLe visibilità se lasciato irrisolto, l'esempio più chiaro essendo un noindex accidentale su pagine importanti, che può silenziosamente toglierle dai risultati di ricerca. Problemi come questo ottengono la gestione più rapida entro 8 ore lavorative; gli elementi ordinari seguono la risposta standard di 1 giorno lavorativo.
Le interruzioni sono coperte? No, ed è voluto
SEO Care Plan non è un piano di uptime. Sorveglia e mantiene la Sua SEO tecnica; non monitora il Suo storefront o checkout per le interruzioni, e non comporta un obiettivo di uptime né un SLA di risposta alle interruzioni. Manteniamo chiara questa distinzione così che Lei non si affidi mai al piano sbagliato per il compito sbagliato.
Se ha bisogno di monitoraggio di storefront/checkout e risposta alle interruzioni, abbini SEO Care Plan a Store Care Plan, che aggiunge monitoraggio continuo di uptime, cron e core-health, un obiettivo di uptime monitorato del 99,5% e una risposta P1 entro 3 ore lavorative. In alternativa, scelga Complete Care Plan, che include sia SEO Care Plan sia il versante uptime in un unico piano.
La sintesi onesta
SEO Care Plan Le dà finestre di risposta definite per il lavoro SEO, 1 giorno lavorativo standard, 8 ore lavorative per problemi critici come un noindex accidentale, e mantiene in salute la Sua SEO tecnica. Per tutto ciò che riguarda il fatto che il Suo negozio resti effettivamente online, è compito di Store Care Plan. Abbinare i due (o usare Complete Care Plan) copre entrambi i fronti in modo pulito.
I due lavorano su scale e orizzonti temporali diversi. L'SEO Audit è una diagnosi approfondita una tantum, uno sguardo accurato al Suo negozio in un singolo momento, che si conclude in un piano prioritizzato. SEO Care Plan è la relazione continua: un controllo tecnico mensile, ore per riparare ciò che trova e un onesto elenco di “cosa fare poi” man mano che il Suo negozio continua a cambiare.
L'SEO Audit una tantum
Un SEO Audit è una diagnosi approfondita in un punto nel tempo. Esamina in dettaglio la Sua SEO tecnica e Le consegna un piano prioritizzato di cosa affrontare. È il modo ideale per capire a che punto si trova e cosa conta di più, un'istantanea completa e una tabella di marcia in quel momento. Ciò che non fa è continuare a sorvegliare dopo; una volta consegnato, è un'immagine fissa di un negozio che inevitabilmente continuerà a evolvere.
SEO Care Plan, il piano continuo
SEO Care Plan trasforma tutto ciò in una disciplina continua. Ogni mese esegue un audit SEO tecnico (indicizzazione, canonical, metadati, contenuti duplicati, dati strutturati, Core Web Vitals), Le dà 4 ore al mese (cap 8h, nessun riporto) per riparare i piccoli problemi che fa emergere, e fornisce una dashboard live più un report mensile con un elenco prioritizzato di “cosa fare poi”. Poiché il Suo catalogo e i Suoi contenuti cambiano di continuo, questo è ciò che intercetta le regressioni tecniche prima che disfino silenziosamente il lavoro precedente.
Come si incastrano
Sono complementari, non in competizione. Un SEO Audit una tantum è la rampa d'accesso perfetta, l'analisi approfondita che stabilisce la Sua linea di base e le Sue priorità. SEO Care Plan mantiene poi quella fondamenta solida mese dopo mese, riparando presto le piccole cose e dicendoLe onestamente quando nulla di urgente richiede attenzione.
Un'unica avvertenza onesta vale per entrambi: nessuno dei due promette posizionamenti o traffico. L'Audit diagnostica e il piano Care mantiene la Sua SEO tecnica, la fondamenta da cui dipendono quei risultati, anziché garantire un risultato che nessun fornitore onesto può promettere.
Growth Care Plan è un retainer mensile che porta disciplina nella parte del Suo negozio PrestaShop che la maggior parte dei team lascia silenziosamente andare alla deriva: il livello dati da cui dipende ogni decisione di marketing. È costruito attorno a un'idea semplice, prima di spendere di più in pubblicità o inseguire più traffico, i numeri rispetto ai quali Lei misura devono essere affidabili. Growth Care Plan mantiene onesti il tracciamento, i feed e la misurazione delle conversioni, e Le dà un secondo parere ricorrente su dove il budget viene sprecato.
Cosa è incluso ogni mese
- Salute di GA4 e dell'event-tracking, controlliamo che GA4 attivi correttamente, che gli eventi e-commerce chiave (view, add-to-cart, checkout, purchase) siano presenti e non conteggiati due volte, e che la validazione del conversion-tracking confermi che i valori registrati dalle Sue piattaforme pubblicitarie corrispondano davvero agli ordini reali.
- Revisione del feed prodotti, esaminiamo il feed alla ricerca di errori e disapprovazioni, segnaliamo attributi mancanti o malformati, ed eseguiamo un controllo di coerenza per Google e gli ads social così che il Suo catalogo sia idoneo e rappresentato correttamente.
- Raccomandazioni su campagne e landing, consigli onesti e prioritizzati su struttura, targeting e landing page, incluso un consiglio sull'idoneità dei moduli quando un modulo PrestaShop risolverebbe un problema meglio di un lavoro su misura.
- 4 ore al mese di tempo pratico (cap 8h, nessun riporto) per piccole correzioni di tracciamento e feed, il tipo di correzioni che altrimenti restano in un arretrato per mesi.
Come funziona
Tutto confluisce in una dashboard di marketing live più un report mensile. La dashboard mostra a colpo d'occhio lo stato di tracciamento e feed; il report riassume cosa abbiamo controllato, cosa abbiamo cambiato entro le ore incluse e le raccomandazioni che contano di più. Include deliberatamente una sezione “smetta di fare questo”, la spesa, i segmenti o le tattiche che i dati suggeriscono di tagliare, perché rimuovere gli sprechi è spesso la vittoria più rapida.
È importante notare che Growth Care Plan riguarda la fondamenta, non la gestione quotidiana delle campagne o delle offerte, e non garantisce mai il ROAS né le approvazioni delle piattaforme pubblicitarie. Ci assicuriamo che la misurazione sia pulita e il feed sano così che Lei, o il Suo media buyer, possa prendere decisioni da dati di cui può davvero fidarsi. I negozi che vogliono ops e SEO seguiti nella stessa relazione possono salire a Complete Care Plan, che combina Store Care Plan, SEO Care Plan e Growth Care Plan sotto un unico team responsabile.
No, Growth Care Plan non gestisce le Sue campagne e non garantisce mai il ROAS né le approvazioni delle piattaforme pubblicitarie. È deliberatamente delimitato attorno alla fondamenta anziché alla gestione quotidiana di campagne o offerte, e manteniamo onesto quel confine perché è l'unico modo responsabile di parlare di media a pagamento.
Perché non promettiamo risultati
Il ritorno sulla spesa pubblicitaria dipende da fattori che nessuna agenzia controlla: i Suoi margini, il Suo prezzo rispetto ai concorrenti, la stagionalità, le dinamiche d'asta, il creativo e i sistemi di approvazione e revisione delle stesse piattaforme pubblicitarie. Chiunque garantisca una cifra di ROAS o approvazioni garantite o sta scommettendo con il Suo budget o sta silenziosamente assorbendo il rischio nel proprio prezzo. Preferiamo essere franchi con Lei. Lo stesso vale per le approvazioni delle piattaforme pubblicitarie, Google e i social network decidono l'idoneità, e noi non possiamo scavalcare la loro revisione.
Cosa Growth Care Plan effettivamente fornisce
- Revisione della salute del tracciamento, integrità di GA4 e degli eventi, più validazione del conversion-tracking così che i numeri verso cui le Sue campagne ottimizzano siano reali, non conversioni fantasma o duplicate.
- Revisione del feed prodotti, intercettando errori e disapprovazioni prima che riducano silenziosamente la portata, e un controllo di coerenza per Google/ads social.
- Raccomandazioni oneste, inclusa una visione “smetta di fare questo” su dove il budget sta colando, e un consiglio sull'idoneità dei moduli dove un modulo PrestaShop è la risposta migliore.
Il valore è semplice: quando la Sua misurazione è pulita, ogni decisione che prende, budget, offerte, pubblici, landing page, poggia su dati di cui può fidarsi anziché su congetture. Quella fondamenta è ciò che fa funzionare davvero la gestione delle campagne (che la faccia internamente o con un media buyer). Se desidera un unico team responsabile di ops, SEO e fondamenta di tracciamento insieme, Complete Care Plan combina tutti e tre, con le sue ore destinate a ops, SEO, tracciamento e feed, non alla gestione delle campagne.
Growth Care Plan comporta un impegno di risposta chiaro e a due livelli così che Lei sappia sempre cosa aspettarsi.
- Risposta standard: 1 giorno lavorativo. Per richieste ordinarie, una domanda sul tracciamento, una modifica al feed, una raccomandazione da discutere o una piccola correzione entro le Sue ore incluse, prendiamo in carico e iniziamo a lavorare entro un giorno lavorativo.
- Guasto al tracciamento di una campagna a pagamento attiva: entro 8 ore lavorative. Quando il tracciamento si rompe su una campagna a pagamento attiva, ogni ora di dati interrotti costa denaro reale, il budget continua a spendere mentre la Sua misurazione è cieca. Questi casi vengono escalati e gestiti entro 8 ore lavorative.
Perché il livello più rapido conta
Un tag GA4 rotto, un pixel di conversione che si attiva male o una disapprovazione del feed durante una campagna attiva non perde solo un giorno di reportistica, può silenziosamente distorcere l'ottimizzazione della piattaforma, fuorviare le Sue offerte e sprecare spesa finché non viene intercettato. Il livello di 8 ore lavorative esiste proprio per quello scenario: i momenti in cui l'integrità della misurazione sta bruciando denaro e aspettare un giorno intero non è accettabile.
Questi sono impegni di risposta, quanto rapidamente ci attiviamo e iniziamo a lavorare, non promesse che ogni problema si risolva istantaneamente, poiché alcune correzioni dipendono da piattaforme di terzi (Google, Meta, GA4) e dai loro tempi di revisione. Le 4 ore al mese (cap 8h, nessun riporto) incluse coprono la sistemazione pratica per piccole correzioni di tracciamento e feed. Se il Suo negozio ha bisogno anche di una risposta agli incidenti operativi, Complete Care Plan aggiunge un livello di 3 ore lavorative per gli incidenti di storefront e checkout e un add-on opzionale di emergenza 24/7.
Growth Care Plan è costruito per i negozi che spendono attivamente in pubblicità, Google, Shopping o social, e vogliono che il livello dati sotto quella spesa resti onesto. Se investe budget reale in acquisizione a pagamento, il costo di un tracciamento sbagliato o di un feed silenziosamente disapprovato si moltiplica in fretta, e questo piano esiste per fermare quella deriva.
È adatto a Lei se…
- Gestisce campagne a pagamento e ha bisogno di un conversion-tracking accurato e validato così che la Sua reportistica e l'ottimizzazione delle piattaforme lavorino da numeri reali.
- Desidera un feed prodotti pulito, errori e disapprovazioni intercettati presto anziché scoperti quando la portata cala.
- Dà valore a un secondo parere mensile su dove il budget viene sprecato, inclusa una visione esplicita “smetta di fare questo”, più un consiglio sull'idoneità dei moduli per la Sua configurazione PrestaShop.
- Lei (o il Suo media buyer) gestisce la vera e propria gestione di campagne e offerte, e ha solo bisogno che la fondamenta resti solida, perché Growth Care Plan non gestisce campagne né garantisce il ROAS.
Potrebbe volere di più se…
Se desidera anche che le operazioni (monitoraggio, controlli di core-health e piccole correzioni quali configurazione, cache, cron e impostazioni dei moduli) e la SEO tecnica vengano seguite nella stessa relazione, Complete Care Plan combina Store Care Plan, SEO Care Plan e Growth Care Plan in un unico team responsabile con 10 ore al mese, una revisione strategica trimestrale e un unico report esecutivo, anziché gestire tre piani in parallelo. Growth Care Plan Le permette di iniziare in modo ristretto con la sola fondamenta dei dati di marketing; Complete Care Plan è il passo di crescita quando vuole l'intero negozio sotto un unico tetto. Le 4 ore al mese (cap 8h, nessun riporto) incluse mantengono in movimento le piccole correzioni senza una quotazione separata ogni volta.
Complete Care Plan combina Store Care Plan, SEO Care Plan e Growth Care Plan in un'unica relazione responsabile, così che un solo team sia responsabile dell'intero negozio anziché tre fornitori ciascuno padrone di una fetta. È progettato per i negozi che hanno superato il supporto frammentario e vogliono ops, SEO tecnica e fondamenta dei dati di marketing mantenute sotto revisione regolare e congiunta.
Cosa è incluso
- Tutto ciò che c'è in Store Care Plan, monitoraggio, controlli di core-health e piccole correzioni operative quali configurazione, cache, cron, impostazioni dei moduli ed errori PHP evidenti.
- Tutto ciò che c'è in SEO Care Plan, salute della SEO tecnica mantenuta sotto revisione così che il negozio resti scansionabile, indicizzabile e strutturalmente solido.
- Tutto ciò che c'è in Growth Care Plan, salute di GA4 e dell'event-tracking, validazione del conversion-tracking, revisione del feed prodotti e raccomandazioni oneste.
- 10 ore al mese (cap 18h, nessun riporto) condivise su tutto, le ore vanno a ops, SEO, tracciamento e feed, non alla gestione delle campagne pubblicitarie.
- Revisione strategica trimestrale, più indicazioni sull'idoneità di moduli e tema per il Suo stack PrestaShop.
Come funziona
Invece di tre report scollegati, Lei ottiene una dashboard esecutiva più un report mensile che mette insieme tutto: ogni punteggio di salute, il registro delle ore che mostra esattamente dove è andato il tempo, le azioni intraprese, i rischi aperti e una tabella di marcia per il mese successivo. Questo significa un unico elenco di priorità, il team decide dove le ore di questo mese creano il maggior valore tra ops, SEO e tracciamento, anziché tre piani che competono per l'attenzione.
Vale la pena essere chiari su cosa Complete Care Plan non è: non gestisce campagne, non gestisce le offerte e non garantisce posizionamenti, traffico o ROAS. Come i singoli piani Care, il tono è misurato e onesto, mantiene solide le fondamenta e Le dice chiaramente cosa vale la pena fare poi. Se Le serve solo una di queste aree, i piani individuali (Store Care Plan, SEO Care Plan, Growth Care Plan) Le permettono di iniziare in modo più ristretto e crescere in seguito.
Complete Care Plan include 10 ore al mese (nessun riporto, cap 18h) di tempo pratico, condivise e distribuite tra ops, SEO, tracciamento e feed. Poiché è un unico monte condiviso anziché tre allocazioni separate, il team può indirizzare le ore dove creano il maggior valore in un dato mese, una correzione tecnica SEO un mese, una riparazione del tracciamento o una pulizia del feed il successivo, senza dover gestire tre budget. Le ore vanno al lavoro operativo, SEO, di tracciamento e di feed; non vengono spese per gestire campagne pubblicitarie.
SLA di risposta
- Incidenti P1 di storefront / checkout, entro 3 ore lavorative. Quando il negozio è giù o i clienti non possono completare il checkout, il fatturato sta sanguinando di minuto in minuto, quindi questi ottengono l'attivazione più rapida.
- Problemi SEO / di marketing, entro 1 giorno lavorativo. Il lavoro importante ma non critico-per-il-fatturato-ora, segnali di posizionamento, domande sul tracciamento, aggiustamenti del feed, viene preso in carico e avviato entro un giorno lavorativo.
Uptime e copertura ininterrotta
Complete Care Plan punta a un uptime monitorato del 99,7%. Quello è un obiettivo di monitoraggio e risposta, sorvegliamo la disponibilità di continuo e rispondiamo rispetto agli SLA di cui sopra, non una garanzia di zero downtime, poiché hosting, reti e servizi di terzi possono tutti guastarsi al di fuori del nostro controllo. Per i negozi che hanno bisogno di copertura al di fuori dell'orario lavorativo, esiste un add-on opzionale di emergenza 24/7 che estende la risposta agli incidenti su base ininterrotta.
Questi sono impegni di risposta, quanto rapidamente ci attiviamo e iniziamo a lavorare, con la sistemazione vera e propria che attinge alle ore mensili (e al cap di 18h per i mesi insolitamente intensi). È la stessa impostazione onesta dei singoli piani Care: livelli chiari, un obiettivo di uptime misurato e nessuna promessa di risultato.
Le aree di servizio sono gli stessi mattoni in entrambi i casi, la differenza è responsabilità e coordinamento. Acquisti Store Care Plan, SEO Care Plan e Growth Care Plan separatamente e ottiene tre relazioni, tre arretrati e tre report, ciascuno che ottimizza il proprio angolo. Con Complete Care Plan ottiene un unico team responsabile dell'intero negozio, il che cambia il modo in cui il lavoro si svolge davvero.
Un unico elenco di priorità, non tre
Invece di tre piani che competono per l'attenzione, Complete Care Plan produce un unico elenco di priorità e un unico report esecutivo, ogni punteggio, il registro delle ore, le azioni intraprese, i rischi aperti e la tabella di marcia per il mese successivo in un solo posto. Quando qualcosa conta più questo mese rispetto allo scorso, il team semplicemente indirizza lì lo sforzo condiviso, anziché lasciarLe arbitrare tra fornitori separati.
Un monte ore combinato e più flessibile
Le 10 ore al mese di Complete Care Plan (cap 18h, nessun riporto) stanno in un unico monte tra ops, SEO, tracciamento e feed. È più flessibile di tre allocazioni fisse: un mese carico di SEO tecnica e leggero sul tracciamento usa semplicemente le ore dove servono, anziché lasciare tempo arenato in un piano mentre un altro va a corto.
Una strategia che lega tutto insieme
La revisione strategica trimestrale collega ops, SEO e marketing in un'unica direzione di marcia, ad esempio, assicurando che una modifica SEO, una correzione del tracciamento e un aggiornamento operativo si rafforzino a vicenda anziché tirare in direzioni diverse. Acquistando i piani singolarmente, nessuno possiede quella visione trasversale.
In breve: separatamente, ottiene tre servizi competenti ma a compartimenti stagni; combinati, ottiene un unico team responsabile, un solo report, un monte ore condiviso flessibile e una visione strategica trimestrale. Complete Care Plan continua a non offrire alcuna garanzia di risultato, nessun posizionamento, traffico o ROAS promesso, rende solo il tutto più facile da gestire da un unico posto. Se davvero Le serve solo un'area, iniziare con il piano individuale è perfettamente sensato.
Complete Care Plan è per i negozi seri che vogliono un unico team responsabile di mantenere sotto revisione regolare le fondamenta di ops, SEO tecnica, tracciamento e feed, e una voce onesta su cosa vale la pena fare poi tra ops, SEO e marketing. Se ha raggiunto il punto in cui destreggiarsi tra fornitori separati (o fare tutto da solo) Le costa più in coordinamento di quanto Le faccia risparmiare, questo è il piano che mette insieme il tutto.
È adatto a Lei se…
- Gestisce un negozio PrestaShop rilevante per il fatturato dove il downtime, un checkout rotto o un guasto al tracciamento hanno un costo reale, e vuole SLA di risposta chiari alle spalle.
- Desidera un unico team responsabile tra operazioni, SEO tecnica e livello dati di marketing, un unico elenco di priorità e un solo report esecutivo anziché tre scollegati.
- Dà valore a una revisione strategica trimestrale che lega insieme ops, SEO e marketing, più indicazioni sull'idoneità di moduli e tema per il Suo stack.
- Apprezza un partner onesto e misurato, uno che mantiene solide le fondamenta, segnala i rischi con chiarezza e non fa alcuna promessa su posizionamenti, traffico o ROAS.
Potrebbe preferire iniziare in modo più ristretto se…
Se Le serve solo una di queste aree in questo momento, i singoli piani Care Le permettono di iniziare dove fa male: Store Care Plan per la stabilità operativa, SEO Care Plan per la salute della SEO tecnica, o Growth Care Plan per la fondamenta dei dati di marketing. Può sempre salire a Complete Care Plan in seguito, quando vuole tutto sotto un unico tetto. Le 10 ore al mese (cap 18h, nessun riporto) del piano combinato, condivise tra tutte le aree, e la sua unica dashboard esecutiva sono ciò che lo rende la casa naturale per i negozi che hanno superato la gestione di queste cose una alla volta, con le ore destinate a ops, SEO, tracciamento e feed anziché alla gestione delle campagne.
hide ai riferimenti dei corrieri selezionati.hide rimuove il corriere interessato quando la sua regola corrisponde. show_only mantiene solo i corrieri interessati quando almeno uno di essi è attualmente disponibile; le regole corrispondenti vengono ordinate per priorità e vince l'azione show-only valida con la priorità più alta.actionCartGetPackageShippingCost. Su PrestaShop 1.7 e 8 il modulo mostra i risultati di supplementi e spedizione gratuita nelle etichette, nei dati frontend e nell'output del simulatore, ma non modifica il costo di spedizione nativo addebitato.free_over confronta la propria soglia con il subtotale del carrello tasse escluse. Anche gli importi dei supplementi fissi sono configurati tasse escluse e possono essere convertiti dalla valuta predefinita del negozio alla valuta del carrello durante la valutazione.EvaluationRequest ed esegue il RuleEngine condiviso, poi mostra le decisioni sui corrieri, le regole corrispondenti, le tracce delle condizioni, le righe dei supplementi, le etichette finali, i valori ETA e gli avvisi di assenza di corrieri.NO CARRIER LEFT. Nei dati del checkout il modulo espone has_no_carrier_left; il layer frontend 1.7 può mostrare un banner di assenza corrieri e la protezione della selezione corriere cancella il corriere selezionato se è diventato nascosto.match_priority del feed, ad esempio ean,sku,supplier_id. Le mappe del modulo esistenti vengono riutilizzate quando sono coerenti, le chiavi feed duplicate vengono bloccate e le corrispondenze basate solo sul riferimento fornitore sono considerate a bassa affidabilità per impostazione predefinita.create_missing e le opzioni di sincronizzazione pertinenti sono abilitate. La creazione rimane comunque limitata da impostazioni di sicurezza come limite di creazione prodotti, limite di creazione combinazioni e soglie percentuali di creazione.location_quantities; quando sync_location_stock è abilitato, il modulo registra lo stock per sede e aggiorna l'aggregato del negozio usando la strategia selezionata. Le sedi possono restare virtuali o essere mappate ai magazzini PrestaShop Advanced Stock Management.percentuale, un importo fisso di sconto o un prezzo fisso di destinazione in un intervallo di date di inizio e fine definito.priorità. Quando più campagne corrispondono allo stesso prodotto nello stesso momento, vince quella con priorità più alta, così i prezzi restano prevedibili.Puoi aggiornare il prezzo di vendita al dettaglio oppure il prezzo di acquisto (costo). Ogni esecuzione lavora su un solo campo prezzo, quindi un lotto non modifica mai entrambi contemporaneamente. In questo modo le modifiche al prezzo di vendita e al costo restano separate e prevedibili.
Dopo l'accesso, i clienti vedono nell'area Il mio account un link all'account commerciale che apre una pagina di richiesta. Qui inseriscono ragione sociale, partita IVA, referenze commerciali, tipo di attività e un messaggio facoltativo. La richiesta arriva poi in una coda nel tuo Back Office per la revisione.
Ogni esecuzione ha un ambito definito. Puoi interessare tutti i prodotti attivi oppure restringere la selezione a una singola categoria, produttore o fornitore prima di applicare. L'ambito scelto viene registrato con l'esecuzione, così sai sempre quali prodotti sono stati interessati.
Sì. Puoi mantenere il flusso manuale predefinito, in cui il tuo team approva o rifiuta ogni richiesta dalla coda del Back Office, oppure attivare l'approvazione automatica così che le nuove richieste ottengano subito lo stato commerciale. È una singola impostazione, quindi puoi iniziare in manuale e automatizzare in seguito.
Sì. L'anteprima elenca ogni prodotto interessato con ID, nome, prezzo attuale, nuovo prezzo e differenza, così puoi verificare il risultato esatto prima di confermare. Nulla viene scritto nel catalogo finché non confermi il lotto.
Quando approvi una richiesta, il gruppo di clienti che hai configurato come gruppo commerciale viene aggiunto a quel cliente e impostato come suo gruppo predefinito. Da quel momento vede i prezzi all'ingrosso o l'accesso B2B che gestisci già tramite i gruppi di clienti di PrestaShop, senza modifiche manuali dei gruppi da parte tua.
Puoi rendere obbligatori in modo indipendente ragione sociale, partita IVA e referenze commerciali, così che il modulo rispecchi il livello di verifica che applichi. Anche il tipo di attività e un messaggio libero vengono raccolti come contesto, e il modulo del negozio convalida i campi richiesti prima dell'invio della richiesta.
Puoi applicare un aumento percentuale, una riduzione percentuale, un aumento fisso o una riduzione fissa. Le riduzioni sono limitate a zero, così un prezzo non può mai diventare negativo. I valori sono elaborati con precisione decimale.
Sì. Un cliente che ha già una richiesta in attesa o approvata non può inviarne un'altra, così la tua coda di revisione non si riempie di doppioni. La sua area Il mio account mostra invece lo stato attuale: da richiedere, in attesa, attivo o rifiutato.
Email facoltative tengono informate entrambe le parti: il tuo team può essere avvisato quando viene inviata una nuova richiesta e il cliente può ricevere un'email quando il suo stato cambia. Ogni notifica è un'impostazione separata, quindi attivi solo quelle di cui il tuo flusso ha bisogno.
Gli aggiornamenti vengono eseguiti come job con un orario di esecuzione pianificato, e il modulo include un endpoint cron per elaborare i lotti automaticamente in background. I job vengono bloccati durante l'esecuzione per evitare che due esecuzioni si sovrappongano sullo stesso catalogo.
Ogni esecuzione riuscita viene registrata con formula, ambito, campo prezzo, numero di prodotti interessati, il membro dello staff che l'ha applicata e la data. Questo offre al tuo team una chiara traccia di controllo per le modifiche di prezzo sensibili.
Sì. Crea un account su chatra.io, poi apri Impostazioni > Generali > Codice widget e copia il Widget ID dallo snippet di installazione. Incolla quell'ID nel campo Widget ID del modulo. Finché un Widget ID non viene salvato, il modulo resta inattivo e il back-office mostra un promemoria: il widget non si carica mai senza un ID valido.
Sì. Un interruttore di visibilità mobile consente di nascondere il widget sugli schermi mobili mantenendolo su desktop. Quando è disattivato, il modulo salta completamente lo script Chatra su mobile: nessun pulsante di chat viene aggiunto sui telefoni e nessuno script aggiuntivo viene caricato.
Filter Revolution si collega tramite il product search provider di PrestaShop e prende il controllo di una pagina di elenco solo quando hai creato un modello di filtro per quel contesto. Supporta le pagine categoria, ricerca, produttore, fornitore, più venduti, novità e offerte.
Se alla pagina visualizzata non è assegnato alcun modello, il modulo restituisce il controllo a PrestaShop, così la tua navigazione a faccette esistente o nativa continua a funzionare lì senza modifiche. In questo modo puoi attivarlo gradualmente, categoria per categoria, invece di convertire l'intero negozio in una volta. Funziona su PrestaShop 1.7.6 e successivi, incluse le versioni 8.x e 9.x.
No. Il modulo commuta le regole di routing degli URL integrate in PrestaShop verso schemi puliti e senza ID dal back-office e gestisce i reindirizzamenti dai vecchi ai nuovi indirizzi tramite un proprio controller front-office. Non devi toccare la configurazione del server, il file .htaccess o i file del tema. La disinstallazione ripristina le regole di routing originali di PrestaShop.
Support Revolution funziona su PrestaShop 1.7, 8.x e 9.x. Uno strato di compatibilità interno mantiene funzionanti i modelli dati di ticket, reparti e base di conoscenza su tutte e tre le versioni, quindi lo stesso ZIP si installa su ognuna di esse.
L'unica funzione con un requisito aggiuntivo è l'acquisizione facoltativa delle e-mail in ticket tramite IMAP: richiede l'estensione PHP imap sul server. Se l'estensione manca, il resto dell'helpdesk funziona normalmente. È indisponibile solo l'acquisizione via e-mail.
Sì. L'opzione Consenti ticket ospite è attiva per impostazione predefinita, quindi un visitatore non registrato può inviare un ticket con nome, e-mail, oggetto e messaggio.
Ogni ticket ospite riceve un link privato e sicuro basato su un token di 64 caratteri, che consente al visitatore di seguire e rispondere a quel ticket specifico senza account. Se preferisci richiedere l'accesso, disattiva l'opzione nelle impostazioni del modulo: solo i clienti registrati potranno aprire ticket.
Ogni gruppo di filtri può essere mostrato con il controllo più adatto ai suoi valori: caselle di spunta e pulsanti di opzione per elenchi brevi, un menu a discesa per elenchi lunghi, un cursore di intervallo per prezzo e valori numerici, campioni di colore e campioni immagine.
I clienti possono filtrare per attributi di prodotto (come taglia o colore), caratteristiche, fascia di prezzo, produttore o marca e disponibilità in magazzino. I campioni di colore e immagine vengono abbinati automaticamente dalle immagini presenti per ciascun valore di attributo, e ogni etichetta di faccetta viene letta nella lingua del visitatore, così un unico modello mostra il testo corretto in ogni lingua del negozio.
No. Quando il nostro modulo SEO Revolution è installato e attivo, Friendly URL Manager gli delega automaticamente la gestione degli URL, così i due non si contendono le stesse rotte. Usato da solo, gestisce direttamente la logica degli URL puliti e dei reindirizzamenti. Come regola, mantieni attivo un solo motore di URL per evitare riscritture in conflitto.
Per impostazione predefinita ogni allegato è limitato a 10 MB e le estensioni consentite sono jpg, jpeg, png, gif, pdf, doc, docx, xls, xlsx, txt, zip, rar.
Sia la dimensione massima sia l'elenco delle estensioni sono modificabili nelle impostazioni del modulo. Prima di salvare un file, il modulo ne verifica l'estensione rispetto al tuo elenco, quindi tutto ciò che ne è escluso viene rifiutato. Riduci l'elenco se vuoi accettare meno tipi di file.
Nel back office crei un modello di filtro riutilizzabile, aggiungi i gruppi di filtri desiderati (attributi, caratteristiche, prezzo, marca, disponibilità) e li disponi nell'ordine che preferisci, poi assegni quel modello a una o più categorie con il selettore di categorie.
I modelli sono memorizzati per negozio, così negozi diversi in un'installazione multistore possono usare configurazioni di filtri diverse, e ogni modello è legato a un tipo di controller di elenco come categoria, ricerca o produttore. Poiché i modelli sono riutilizzabili, puoi applicare la stessa disposizione di filtri a molte categorie invece di configurarle una a una.
Sì. Gli schemi di URL, i link in cache, i reindirizzamenti salvati e le sovrascritture manuali vengono memorizzati per lingua e per negozio. Così, in un'installazione multinegozio, ogni negozio e ogni lingua mantiene i propri indirizzi puliti e la propria cronologia dei reindirizzamenti.
Sì. Puoi bloccare un URL personalizzato su un determinato prodotto, categoria, pagina CMS, marca o fornitore, oppure puntare un indirizzo verso un'altra entità o un URL di destinazione personalizzato. Ogni sovrascrittura consente di scegliere il tipo di reindirizzamento - 301 permanente oppure 302/307 temporaneo - limitato alla lingua e al negozio scelti.
No. Il modulo risponde all'hook di esportazione dati GDPR di PrestaShop dichiarando che non memorizza dati personali sul server, perché il filtraggio si basa sui tuoi dati esistenti di catalogo e indice, non sui profili dei clienti.
Il limitatore anti-abuso opzionale, che interviene solo quando un bot tempesta gli URL dei filtri, funziona con contatori Redis a breve durata e non conserva dati personali. Per questo la scheda indica che questo modulo non è rilevante ai fini del GDPR.
Facoltativamente sì, tramite l'acquisizione IMAP, ma è disattivata per impostazione predefinita. Quando la attivi e inserisci host della casella, nome utente e password, un controllo pianificato legge i messaggi non letti dalla casella.
Se l'oggetto di un messaggio contiene un riferimento di ticket esistente (il prefisso configurato, ad es. SR-00001), l'e-mail viene aggiunta come risposta a quel ticket; in caso contrario ne viene creato uno nuovo. Richiede l'estensione PHP imap e un cron job che richiama l'endpoint cron del modulo con il tuo token.
Un ticket memorizza l'identità del cliente, l'intera conversazione, il reparto, la priorità e lo stato, il negozio di appartenenza e l'indirizzo IP di chi lo invia, offrendo allo staff una vera cronologia di assistenza dentro PrestaShop.
Il modulo nel front office richiede una casella di consenso GDPR esplicita; se non è spuntata, il ticket non viene creato. Le note interne dello staff sono memorizzate separatamente e non vengono mai mostrate nella conversazione visibile al cliente.
Il modulo è costruito per mantenere veloci le pagine di elenco molto trafficate senza appesantire il database. Legge dalle tabelle di indice esistenti di PrestaShop e mantiene aggregati di conteggio delle faccette compatti e precalcolati, così il negozio non esegue query pesanti in tempo reale per ogni filtro a ogni richiesta.
Puoi ricostruire questi aggregati e controllare lo stato dell'indice dalla dashboard del back office, e le combinazioni di filtri senza prodotti possono essere nascoste in modo che clienti e crawler non finiscano su pagine vuote. Così i tempi di risposta dei filtri restano stabili man mano che il catalogo cresce.
Lo decidi per ciascun tipo di entità. Una pagina rimossa o disattivata può reindirizzare alla categoria superiore, reindirizzare alla home page, restituire un 410 Gone oppure non fare nulla; il suo vecchio indirizzo viene registrato nella cronologia dei reindirizzamenti, così i link in entrata continuano a funzionare invece di incappare in un vero errore 404.
Possono farlo, se lo desideri. L'impostazione Chiudi automaticamente dopo è predefinita a 14 giorni: un'attività pianificata chiude i ticket risolti che non hanno avuto attività per quel numero di giorni. Imposta il valore a 0 per disattivare del tutto la chiusura automatica.
L'attività viene eseguita tramite l'endpoint cron del modulo, il comando CLI cron.php --token=IL_TUO_TOKEN oppure una chiamata URL con lo stesso token, cioè lo stesso pianificatore che interroga l'IMAP.
Il modulo dichiara compatibilità da PrestaShop 1.6.1.0 fino all'attuale linea 9.x e richiede PHP 7.1 o successivo. Mantiene percorsi di codice separati per PS 1.6 e 1.7+ (ad esempio la pagina dell'ordine nel back office e la gestione degli indirizzi), così gli strumenti finanziari funzionano sia su un vecchio negozio 1.6 sia su PrestaShop 8 o 9.
Lavora insieme a esse. La schermata Documenti elenca le fatture d'ordine PrestaShop esistenti, riferimento ordine, cliente, e-mail, totali, spedizione, stato dell'ordine, data e il download del PDF nativo, invece di sostituire la fatturazione del core. In aggiunta introduce flussi di correzione (nota di credito) e proforma, inclusa la conversione da proforma a fattura dove l'ordine lo consente. Le tue fatture PrestaShop native restano la fonte di verità.
Per le partite IVA UE il modulo chiama il servizio ufficiale VIES dell'UE (l'endpoint SOAP checkVatService) per una risposta autorevole valido/non valido. Se VIES è irraggiungibile o va in timeout non ti blocca, ripiega su un controllo del solo formato e registra il risultato con la sua origine (vies oppure format), così vedi sempre se un numero è stato confermato in modo autorevole o solo convalidato nel formato. I numeri extra-UE sono controllati solo nel formato, poiché VIES non li copre.
Per la dichiarazione IVA il modulo memorizza le partite IVA dei clienti insieme all'origine della convalida, ai dati restituiti dal controllo, a eventuali messaggi e a marche temporali in tabelle proprie. Sono dati aziendali/fiscali che tu, come commerciante, controlli e che di norma devi conservare a fini contabili. Non invia questi dati a terzi oltre alla stessa interrogazione VIES dell'UE e non registra hook GDPR automatici di esportazione/cancellazione di PrestaShop: quindi se un cliente richiede la cancellazione, rimuovi il suo record IVA direttamente nel back office.
Sì. Le tabelle del modulo, record finanziari, costi, documenti, dati IVA e impostazioni, contengono tutte una colonna id_shop, così le voci sono associate al negozio a cui appartengono. Ogni negozio mantiene i propri dati, la propria numerazione dei documenti e la propria configurazione, anziché condividere un unico registro comune su tutto il multinegozio.
Entrambe le cose, a seconda del tipo di record. I record lato ricavi vengono creati automaticamente: il modulo si aggancia alla convalida dell'ordine e ai cambi di stato dell'ordine e assicura che per ogni ordine esista un record finanziario. Costi e spese li inserisci tu, ogni costo riporta un riferimento, un partner, una categoria, importi al netto e al lordo dell'imposta, importi rimborsati/scontati, stato del pagamento, scadenza, allegati e un'eventuale allocazione a un prodotto o a una categoria, così che i valori di profitto e IVA riflettano la spesa reale verso i fornitori.
Questo modulo carica lo script di tracciamento di terze parti di ActiveCampaign (diffuser.js da diffuser-cdn.app-us1.com) direttamente nel browser del visitatore. Viene mostrato quando il modulo è abilitato ed è salvato un ID account, nel codice non esiste alcun gate di consenso ai cookie, quindi la gestione del consenso spetta a te.
L'unico dato personale trasmesso dal modulo stesso è l'indirizzo e-mail di un cliente autenticato, inviato con vgo('setEmail', ...) per collegare le visite al contatto corretto. Gli ospiti sono tracciati senza e-mail. Il modulo memorizza in PrestaShop solo due impostazioni (ENABLED e ACCOUNT_ID) e non conserva dati dei visitatori.
Poiché si tratta di tracciamento marketing/analitico che può trasmettere un identificatore personale, caricalo dietro il tuo meccanismo di consenso dove richiesto dalla legge e cita ActiveCampaign nella tua informativa sulla privacy.
No. Questa integrazione usa solo il tracciamento del sito lato client di ActiveCampaign. L'unico valore richiesto è l'ID account numerico, che copi da Impostazioni > Tracciamento > Tracciamento del sito in ActiveCampaign.
Il modulo memorizza solo ENABLED e ACCOUNT_ID e inserisce il tracker ufficiale diffuser.js nel browser. In questo percorso di codice non ci sono chiave API, URL API o sincronizzazione server-a-server, quindi nessuna credenziale API viene memorizzata sul tuo server o inviata da esso, tutti i dati passano dal browser del visitatore ad ActiveCampaign.
Ricorda di attivare il tracciamento del sito anche nel tuo account ActiveCampaign, altrimenti le visite raccolte dallo script non compariranno.
Il modulo è pensato per PrestaShop dalla 1.6 alla 9.x e non modifica alcun file del tema. Registra un unico hook front-office, displayBeforeBodyClosingTag, e inserisce lo script di tracciamento appena prima del tag di chiusura </body>, non nell'header della pagina.
Poiché dipende da quell'hook, lo script compare solo se il tuo tema esegue davvero displayBeforeBodyClosingTag, cosa che i temi PrestaShop standard fanno. Nulla viene copiato in un template, quindi un cambio o un aggiornamento del tema non farà perdere l'integrazione.
Se il tracciamento non compare mai nel sorgente della pagina, verifica che il modulo sia abilitato, che l'ID account sia compilato e che il tuo tema personalizzato richiami displayBeforeBodyClosingTag in fondo alla pagina.
Il modulo dichiara compatibilità da PrestaShop 1.6.1.0 fino alla versione attuale, quindi funziona su 1.6, 1.7, 8.x e 9.x. La protezione del negozio si attiva solo mentre il modulo è attivo e le schermate del Back Office restano raggiungibili anche con la protezione disattivata, perciò abilitarlo non ti chiuderà fuori dal tuo negozio.
No. Il firewall parte in modalità monitoraggio: all'installazione registra le richieste che verrebbero bloccate senza fermarle davvero. Esamini prima quei registri dei tentativi bloccati e i dati di sicurezza, poi passi alla modalità di applicazione quando sei certo che le regole siano sicure. I limiti di frequenza si configurano per tipo di azione (registrazione, contatto, commenti, carrello) invece che con un'unica soglia generale.
Il modulo include una via di fuga da riga di comando da eseguire sul server, quindi funziona anche quando non riesci ad accedere: php bin/console mprsecurityrevolution:admin-security:escape. Usa --disable-enforcement per disattivare il blocco di accesso, il gate 2FA, l'obbligo di 2FA, il blocco sessione-IP e i controlli step-up; --clear-lockouts per azzerare i blocchi; --trust-ip per aggiungere un IP o CIDR admin attendibile; oppure --all per fare entrambe le cose.
I controlli di protezione e monitoraggio girano sulle normali richieste di pagina, quindi la difesa principale non dipende dal cron. Un cron job serve per la manutenzione pianificata e i backup: cron.php (richiamato con un token di sicurezza mostrato nel pannello di amministrazione) esegue le attività di pulizia che eliminano vecchi log di sicurezza, record di rate-limit scaduti, tentativi bloccati, log delle richieste e dati di sessione/visualizzazioni, e gestisce i backup pianificati. Senza cron queste attività non vengono eseguite e le tabelle dei log continuano a crescere.
Registrazione, moduli di contatto e commenti sui prodotti sono protetti da un controllo a più livelli: un campo honeypot invisibile, limiti di frequenza per azione, il rifiuto dei domini e-mail usa e getta o bloccati e un'analisi dei contenuti per individuare testo senza senso, troppi link e input rischiosi o offensivi. Ogni tipo di azione (registrazione, contatto, commento, carrello) ha limiti propri, così puoi essere severo sulle iscrizioni senza rallentare la normale navigazione. Tutti i dati di tracciamento e sicurezza restano nel database del tuo negozio, nulla viene inviato a servizi di terzi, e le attività di pulizia integrate li eliminano su base pianificata.
Nelle impostazioni del modulo scegli uno dei tre provider: Google reCAPTCHA v2 (la nota casella "Non sono un robot"), Google reCAPTCHA v3 (invisibile, basato su punteggio) o hCaptcha (un'alternativa a casella attenta alla privacy). È attivo un solo provider alla volta e si applica a tutti i moduli protetti.
reCAPTCHA v2 e hCaptcha mostrano un widget al visitatore, mentre reCAPTCHA v3 funziona in modo discreto in background e restituisce un punteggio da 0 a 1. Con la v3 imposti anche una soglia di punteggio (0,5 per impostazione predefinita) per regolare la severità del controllo invisibile senza cambiare provider.
Sì. Il modulo non gestisce un proprio servizio CAPTCHA: si collega a Google o a hCaptcha. Crei quindi un account gratuito presso il provider scelto, generi una chiave del sito e una chiave segreta e le incolli entrambe nelle impostazioni del modulo.
La protezione resta completamente inattiva finché il modulo non è abilitato e non sono inserite entrambe le chiavi. Prima di allora non viene mostrato alcun widget né controllato alcun invio, così una configurazione incompleta non può mai bloccare o danneggiare i moduli dei clienti. Il back office mostra anche un avviso su quali chiavi mancano ancora.
All'invio di un modulo protetto, il modulo trasmette il token di risposta CAPTCHA, la tua chiave segreta e l'indirizzo IP del visitatore al servizio di verifica del provider (il servizio siteverify di Google o hCaptcha) per confermare la risposta. Anche il widget JavaScript del provider viene caricato nel browser del visitatore, esattamente come su qualsiasi sito che usa reCAPTCHA o hCaptcha.
Il modulo stesso non memorizza né il token, né il punteggio, né i dati del visitatore nel tuo database. Poiché è coinvolto un servizio di terze parti, l'uso del CAPTCHA è rilevante ai fini del GDPR: indica quindi il provider scelto nella tua informativa sulla privacy. Per questo motivo, nella pagina contatti il widget viene mostrato tramite l'area di consenso GDPR.
reCAPTCHA v3 restituisce un punteggio da 0 a 1 per ogni invio. Il modulo lo confronta con la soglia che imposti (0,5 per impostazione predefinita): gli invii che la raggiungono o la superano passano, quelli inferiori sono considerati automatici e bloccati. Una soglia più alta è più severa, una più bassa più permissiva.
Poiché il punteggio invisibile può a volte valutare male un cliente reale, puoi attivare un ripiego con casella facoltativo. Quando un invio v3 è sotto la soglia, al visitatore viene chiesto di completare una casella reCAPTCHA v2 (con una coppia di chiavi v2 separata) per dimostrare di essere umano e proseguire, così i clienti autentici non finiscono in un vicolo cieco.
No. Il modulo rileva quando il modulo nativo contactform di PrestaShop è attivo e viene già mostrato nell'area contatti e, in tal caso, non aggiunge lì un secondo widget. Colloca invece il CAPTCHA tramite l'area di consenso GDPR della pagina contatti, così ottieni un solo CAPTCHA nel punto giusto anziché due widget sovrapposti.
Questa gestione riguarda specificamente il modulo di contatto. I moduli di login, registrazione e newsletter mostrano ciascuno il proprio CAPTCHA tramite il proprio hook dedicato e ogni modulo ha un proprio interruttore, così proteggi solo quelli che vuoi.
È destinato a PrestaShop 1.6, 1.7, 8.x e 9.x, il modulo dichiara la compatibilità dalla versione 1.6.0.0 fino alla versione installata e funziona con PHP 7.1+. Il fallback iframe GTM in
Sì. Se il modulo di consenso mprcookiesrevolution è installato e attivo, questo modulo riordina automaticamente il proprio hook di intestazione affinché venga caricato per ultimo, così i valori predefiniti del Consent Mode della CMP vengono impostati prima del caricamento del contenitore GTM (gtm.js). Se non è presente alcuna CMP e l'opzione di fallback del consenso è attiva, il modulo emette un valore predefinito Google Consent Mode v2 denied per ad_storage, ad_user_data, ad_personalization e analytics_storage prima dell'avvio di GTM, in modo che i tuoi tag Consent Mode abbiano sempre uno stato definito.
Sì. Quando è attiva l'opzione di esclusione dei dipendenti, i membri del personale collegati al back office non vengono monitorati. Crawler e strumenti di audit noti (Googlebot, Bingbot, SemrushBot, AhrefsBot, Lighthouse/PageSpeed, Pingdom e altri) vengono rilevati dallo user-agent e ignorati, e ogni visitatore con il cookie di opt-out mpr_notrack viene escluso. Il monitoraggio viene eseguito solo sulle pagine del front office, non nell'amministrazione né sulle chiamate AJAX/API.
Non se è attivo il fallback Measurement Protocol. Alla convalida dell'ordine il modulo può inviare l'acquisto lato server direttamente a GA4 (Measurement Protocol), così la vendita viene comunque registrata anche se l'acquirente non raggiunge mai la pagina di conferma, blocca il tag o rifiuta il consenso lato client. Google deduplica in base al transaction_id, quindi se anche l'evento del browser viene attivato l'ordine non viene conteggiato due volte. Ciò richiede un ID di misurazione GA4 (G-XXXXXX) e un API Secret nella configurazione.
Enhanced Conversions viene eseguito solo quando l'opzione è attiva e il cliente ha effettuato l'accesso. Il modulo inserisce e-mail, nome e cognome, telefono, città, CAP e regione del cliente nel dataLayer come hash SHA256, mai in chiaro, in un evento enhanced_conversions_data. Con questo push nessun dato personale in chiaro lascia il browser; solo i valori con hash che Google si aspetta per la corrispondenza delle conversioni.
No. Il pulsante è fornito come un unico template inline: il suo CSS e JavaScript sono incorporati direttamente nell'output del footer, quindi nel front office non vengono caricati file .css o .js aggiuntivi e non vengono aggiunte richieste HTTP.
Non carica jQuery né alcuna libreria esterna. Lo scorrimento verso l'alto usa la funzione nativa del browser window.scrollTo({ top: 0, behavior: 'smooth' }), e il listener di scroll è registrato con { passive: true } in modo da non bloccare mai lo scorrimento. Il modulo imposta inoltre un flag buttonRendered affinché il pulsante venga generato una sola volta per pagina, anche se il tema attiva più hook supportati.
Il markup generato è un singolo <button> di 48x48 pixel con un'icona freccia SVG inline, quindi l'impatto sul peso della pagina è minimo.
No. Il pulsante è un comportamento visivo puramente lato client. Non imposta cookie, non scrive nulla in localStorage, non invia richieste AJAX o di analytics e non chiama alcun servizio esterno o di terze parti.
Il template generato contiene solo un blocco <style>, un <button> e un piccolo <script> autonomo che attiva una classe CSS durante lo scorrimento e scorre in cima al clic. Poiché nessun dato personale viene letto, memorizzato o trasmesso, il pulsante non aggiunge obblighi GDPR o di consenso ai cookie propri.
È progettato per un'ampia compatibilità. Il modulo dichiara il supporto per PrestaShop 1.6.0.0 fino alla versione installata e viene visualizzato tramite gli hook standard displayFooter, displayFooterAfter e displayBeforeBodyClosingTag - quindi qualsiasi tema che ne esegua almeno uno mostrerà il pulsante, e viene usato quello che si attiva per primo.
Il pulsante usa position: fixed con un z-index elevato, quindi galleggia sopra il contenuto della pagina sia nei layout desktop sia in quelli mobili/touch, e appare non appena il visitatore supera la soglia di pixel configurata. Non è necessaria alcuna modifica ai file del tema - basta installare e attivare il modulo.
Il motore è self-hosted. Le query vengono confrontate con il tuo indice nel database e tutte le statistiche, termini cercati, clic e ricerche senza risultati, sono memorizzate nelle tabelle del modulo all'interno del tuo database PrestaShop. Per impostazione predefinita nulla viene inviato a un cloud di ricerca di terze parti.
La cronologia di ricerca dei clienti registrati viene salvata per singolo cliente e può essere cancellata dall'acquirente. L'attribuzione clic-verso-ordine utilizza un cookie proprietario con durata predefinita di 30 giorni. Una funzione di ricerca AI opzionale può chiamare un fornitore di AI esterno, ma è disattivata per impostazione predefinita e si attiva solo se la abiliti e fornisci la tua chiave API.
Il modulo dichiara compatibilità da PrestaShop 1.6 fino alla versione in esecuzione (ps_versions_compliancy min 1.6.0.0) e richiede PHP 7.2 o successivo.
Il caricamento delle risorse si adatta alla piattaforma: su PrestaShop 1.7 e successivi registra CSS e JavaScript tramite actionFrontControllerSetMedia, mentre su 1.6 li carica da displayHeader con addCSS/addJS. Lo stesso hook displayHeader inietta le impostazioni in window.mprcustomerpassword_config.
Lo script front gestisce entrambe le generazioni di form: prende di mira il campo password di PrestaShop 1.7+ e i campi passwd e confirmation di 1.6. Il percorso e-mail del link di configurazione usa reset_password_token sugli oggetti cliente 1.7+ e un aggiornamento SQL legacy su 1.6. Il modulo registra tre hook: displayHeader, actionFrontControllerSetMedia e actionCustomerAccountAdd.
La lunghezza è configurabile e per impostazione predefinita è 12, ma il generatore impone un minimo fisso di 8 caratteri anche se si imposta un valore inferiore (Math.max(8, length)).
Le lettere minuscole sono sempre incluse come set di base. Tre interruttori indipendenti aggiungono poi lettere maiuscole, numeri e caratteri speciali (!@#$%^&*_+-=); per impostazione predefinita tutti e tre sono attivi. Quando un set è attivo, il generatore garantisce almeno un carattere da esso, completa la lunghezza restante dal pool combinato e mescola il risultato con Fisher-Yates in modo che i caratteri richiesti non restino in una posizione prevedibile.
La generazione avviene interamente nel browser in front.js usando i valori iniettati tramite window.mprcustomerpassword_config (PWD_LENGTH, PWD_UPPERCASE, PWD_NUMBERS, PWD_SPECIAL). Viene creata una password per pagina e lo stesso valore viene scritto in ogni campo password e conferma corrispondente.
Sì. Sinonimi, boost dei prodotti, reindirizzamenti di ricerca, pagine di atterraggio SEO, statistiche delle query e cronologia cliente salvata sono tutti separati per negozio, quindi ogni store di un'installazione multistore mantiene la propria configurazione e i propri dati.
In questo modo puoi definire sinonimi diversi o dare priorità a prodotti diversi per un negozio senza influenzare gli altri, e i report di ricerca di ciascun store restano separati.
È realizzato per PrestaShop 1.7, 8 e 9, la compatibilità dichiarata va dalla 1.7.0 fino alla versione attuale di PrestaShop, e funziona con PHP 7.1 o successivo.
Il modulo crea e mantiene automaticamente le proprie tabelle nel database all'installazione e tiene aggiornato lo schema, quindi non devi eseguire alcun SQL manuale durante l'installazione o l'aggiornamento nell'intervallo supportato.
No. Il modulo non ha una propria tabella di database per le password; la sua configurazione di integrità non elenca tabelle critiche. La password viene generata lato client nel browser e inviata con il normale modulo dell'account, e PrestaShop la cifra e la memorizza esattamente come qualsiasi password cliente.
Ciò che viene conservato dopo dipende dalla modalità e-mail. Con send_password (predefinita) la password in chiaro viene inviata una sola volta al cliente. Con setup_link il modulo memorizza solo un token di reset a tempo limitato, random_bytes(32) su PrestaShop 1.7+ o un token MD5 su 1.6, con validità di 24 ore nel record del cliente, e invia un link di configurazione invece della password. Con silent non viene memorizzato nulla in più e non viene inviata alcuna e-mail con la password.
Poiché la generazione è JavaScript lato client, i clienti con JavaScript disattivato vedono semplicemente il normale campo password senza compilazione automatica, quindi la registrazione standard di PrestaShop continua a funzionare.
La ricerca viene eseguita sul tuo server anziché tramite un'API remota, quindi non c'è alcun viaggio di andata e ritorno esterno. Le richieste vengono inoltre limitate durante la digitazione: una soglia di caratteri minimi (2 per impostazione predefinita) impedisce le query con una sola lettera, e un ritardo di debounce (150 ms per impostazione predefinita) unisce le battute rapide in un'unica richiesta.
Le anteprime di autocompletamento e il numero di risultati sono limitati da valori configurabili, così un menu a discesa non carica mai più righe del necessario. Tutte queste soglie possono essere regolate nel Back Office in base alle dimensioni del catalogo e al server.
No. Dopo l'installazione funziona con impostazioni predefinite sensate, potenzia il campo di ricerca esistente del tuo tema e restituisce prodotti, categorie, pagine CMS, produttori e fornitori mentre l'acquirente digita, con la tolleranza agli errori di battitura già attiva.
Gli strumenti avanzati, sinonimi, boost dei prodotti, riscritture e reindirizzamenti delle query, pagine di atterraggio SEO e simulatore di ranking. Sono tutti opzionali e gestibili dal Back Office senza scrivere codice, così puoi iniziare in modo semplice e ottimizzare la ricerca nel tempo usando le statistiche integrate.
Il modulo supporta PrestaShop 1.6, 1.7, 8.x e 9.x. Aggiunge lo script di Microsoft Clarity tramite l'hook dell'header del negozio, quindi Clarity funziona con il proprio codice di tracciamento asincrono e le tue registrazioni e heatmap vengono elaborate nel tuo account Microsoft Clarity, non sul tuo server. Il modulo non crea tabelle di database aggiuntive per i dati di tracciamento.
Il modulo dichiara la compatibilità da PrestaShop 1.6.0.0 fino alla versione installata, quindi funziona su 1.6, 1.7, 8 e 9. Registra due hook nella pagina dell'ordine, displayAdminOrder per la schermata ordine di PrestaShop 1.6 e displayAdminOrderMain per la schermata ordine dalla 1.7 in poi, così l'azione di eliminazione appare nel punto giusto in ogni versione.
Sì. Il modulo include due impostazioni, entrambe attive per impostazione predefinita: ENABLED, che controlla se l'azione di eliminazione compare sulla pagina dell'ordine, e REQUIRE_CONFIRMATION, che fa mostrare al pulsante una conferma del browser prima di eseguirla. Quando ENABLED è disattivato, l'hook non produce nulla e lo staff non vede mai il pulsante. Entrambe si regolano dalla pagina Impostazioni del modulo nel back office.
Puoi escludere le sessioni del back-office da Clarity. Quando l'opzione "Escludi la navigazione dei dipendenti" è attiva, come da impostazione predefinita, il modulo non carica lo script di Clarity mentre un dipendente connesso naviga nel negozio, quindi le visite del tuo team non vengono registrate. Le normali sessioni dei clienti continuano a essere tracciate.
Sì. Il modulo richiama il metodo nativo Order::delete() di PrestaShop, che rimuove l'ordine insieme ai record collegati gestiti in cascata dal core, fatture, dettagli dell'ordine, movimenti di magazzino e righe di pagamento. Il cestino non conserva una copia completa: memorizza solo un piccolo riepilogo JSON (id ordine, riferimento, id cliente, totale pagato, data di creazione e stato attuale), quindi è un registro di ciò che è stato rimosso, non un backup da cui ricostruire l'ordine. Considera l'eliminazione come definitiva e usala per ordini di test, duplicati o indesiderati.
Il modulo allega il contesto di acquisto come tag di sessione ed eventi di Clarity: tipo di pagina e controller, nome del prodotto, categoria e ID, valore del carrello e dell'ordine, valuta, numero di articoli, riferimento dell'ordine e termine di ricerca. Non invia nomi dei clienti, indirizzi e-mail, password o dati di pagamento. Il tracciamento funziona solo quando il modulo è attivo con un ID progetto valido e, se configurato, dopo aver ottenuto il consenso marketing.
No. Automatic Internal SEO Linker agisce solo all'interno delle aree di contenuto che configuri, descrizioni di prodotti e categorie, contenuti CMS, testi di blog, produttori o fornitori. Prima di inserire qualcosa estrae il <body> della pagina e lascia volutamente intatti <head>, i blocchi <script> e i dati strutturati JSON-LD, così i tuoi rich snippet e i meta tag non vengono mai riscritti.
Conta i link esistenti solo all'interno di queste aree di contenuto, non nel menu, nell'intestazione o nei breadcrumb. I link di navigazione quindi non consumano mai il budget di link di un gruppo e il modulo non trasforma le voci di menu o il percorso breadcrumb in ancore aggiuntive. Per impostazione predefinita salta anche i titoli, evita il testo già collegato e non collega mai una pagina a se stessa.
Il modulo è realizzato per PrestaShop 1.6, 1.7, 8.x e 9.x (compatibilità dichiarata da 1.6.1.0 a 9.x) e funziona con le versioni PHP standard fornite con quelle release. Non dipende da un tema specifico.
Funziona tramite l'hook di output actionOutputHTMLBefore: legge l'HTML finito dello store e inserisce i link nella risposta al momento dell'invio. Non modifica mai i file template del tuo tema e non riscrive mai le descrizioni salvate nel database. Disattivare un gruppo di link o disinstallare il modulo rimuove immediatamente i link generati, perché erano stati aggiunti solo all'output e mai salvati nel tuo contenuto.
Sì. Ogni gruppo di link può impostare i propri attributi: un valore rel (ad esempio nofollow o noopener), un target (come _self, oppure _blank per aprire in una nuova scheda) e una classe CSS. C'è anche un'opzione per racchiudere l'ancora in <strong> per il grassetto.
Quando un gruppo lascia questi campi vuoti, si applicano i valori predefiniti a livello di negozio: i link si aprono nella stessa scheda (_self), l'attributo rel è vuoto e la classe CSS predefinita è mpr-autolink, che puoi personalizzare nel tuo tema. I limiti per pagina e per gruppo (per impostazione predefinita 5 link per pagina e 3 per gruppo) mantengono il collegamento naturale anziché spam.
No. Automatic Internal SEO Linker lavora interamente lato server: su ogni pagina del front-office legge i tuoi gruppi di link salvati, esamina l'HTML già generato da PrestaShop e inserisce le ancore prima dell'invio della risposta. Memorizza solo la tua configurazione, i gruppi di link, le parole chiave e le impostazioni che crei nel Back Office.
Non imposta cookie, non traccia né profila i visitatori, non memorizza alcun dato personale e non effettua chiamate ad API esterne per generare i link. Poiché non viene raccolto né condiviso alcun dato dei visitatori, il modulo non è rilevante ai fini del GDPR sul lato storefront.
No. Il rilevatore di duplicati si limita a individuare ed elencare i duplicati, non unisce né elimina mai nulla da solo. Cerca prodotti duplicati (raggruppati per nome, oppure per riferimento, EAN-13, UPC o ISBN), categorie duplicate (stesso nome sotto lo stesso genitore), caratteristiche e valori di caratteristiche duplicati e gruppi di attributi duplicati con i relativi valori, mostrando ogni gruppo insieme agli ID corrispondenti così da poterli confrontare.
Da lì esamini i risultati e decidi tu stesso cosa fare nel catalogo. È una scelta voluta: unire prodotti o attributi incide su combinazioni, giacenze, prezzi e ordini passati, quindi il modulo lascia a te queste modifiche irreversibili invece di indovinare quale record conservare.
Sì, e il modulo agisce con prudenza. Elenca le cartelle dei moduli presenti su disco ma non installate in PrestaShop e propone la rimozione di una cartella solo quando si tratta di un modulo realmente disinstallato. Non elimina una cartella il cui nome corrisponde, senza distinzione tra maiuscole e minuscole, a un modulo installato (una cartella foo non viene mai rimossa finché Foo è installato) e non segue mai i collegamenti simbolici, entrambi casi frequenti in cui una cartella "disinstallata" appartiene in realtà a codice attivo.
Separatamente, rileva tabelle di database orfane e chiavi di configurazione residue il cui modulo proprietario non è più installato, ma queste vengono mostrate solo per revisione: il modulo non elimina tabelle o configurazioni al posto tuo. Come per ogni attività, esegui prima l'anteprima ed effettua un backup prima di rimuovere qualsiasi cosa.
L'ottimizzazione delle tabelle esegue il comando MySQL OPTIMIZE TABLE per recuperare lo spazio libero lasciato dopo grandi eliminazioni. Il modulo misura innanzitutto la frammentazione di ogni tabella (spazio libero rispetto alla dimensione dei dati, letto da information_schema) e ottimizza solo le tabelle che superano la soglia di frammentazione da te configurata e che hanno effettivamente spazio da recuperare, saltando quelle che non ne trarrebbero beneficio. Ogni esecuzione registra lo spazio liberato e la durata nel registro di controllo.
Un aspetto da pianificare: su InnoDB, OPTIMIZE TABLE ricostruisce la tabella e la blocca per tutta la durata dell'operazione, quindi le tabelle grandi andrebbero ottimizzate fuori dagli orari di punta. Per questo la pianificazione integrata colloca l'ottimizzazione delle tabelle in una finestra notturna settimanale (04:00), separata dalle pulizie quotidiane di database e file che vengono eseguite alle 03:00 e alle 03:30.
No. L'elenco di confronto è memorizzato interamente nel localStorage del browser del visitatore, sotto la chiave mprcompare, e il modulo non imposta alcun cookie a tale scopo. Nulla viene scritto nel database o in una sessione del server, quindi la funzione di confronto non contiene dati personali e non aggiunge alcun requisito di consenso.
Da questa scelta deriva un limite: una selezione esiste solo nel browser che l'ha creata, non viene condivisa tra telefono e computer e scompare quando il visitatore cancella i dati del sito.
No, non per impostazione predefinita. Facebook Pixel include un'opzione escludi i dipendenti collegati, attiva fin da subito: così, quando qualcuno che ha effettuato l'accesso al back office di PrestaShop naviga nel negozio, non viene inviato per lui alcun evento Pixel o Conversions API. Per evitare che una pagina in cache serva poi quel codice privo di eventi ai clienti reali, il modulo aggiunge anche intestazioni di cache no-store (comprese CDN e Cloudflare) su queste visite dei dipendenti. Disattiva l'opzione se preferisci conteggiare le sessioni del tuo team.
Il modulo dichiara compatibilità da PrestaShop 1.7.0.0 fino alla linea 9.x e il suo codice contiene due insiemi di hook distinti. Su 1.7, 8 e 9 usa actionFrontControllerSetMedia, displayAfterProductAddCartBtn, displayNav2 e displayBeforeBodyClosingTag, mentre i temi 1.6 più datati ricorrono a displayHeader, displayProductButtons, displayNav e displayFooter con un template di confronto dedicato alla 1.6.
I prezzi nella pagina di confronto sono formattati tramite un wrapper che tiene conto della versione, così la funzione continua a operare su PrestaShop 9, dove il vecchio helper di visualizzazione dei prezzi è stato rimosso.
La Conversions API è facoltativa. Il Pixel del browser funziona da solo: inserisci il tuo ID Pixel, attiva il tracciamento e invierà PageView, ViewContent, AddToCart, InitiateCheckout, Purchase, Search, AddToWishlist e CompleteRegistration direttamente dal browser del visitatore. La Conversions API è un livello separato, lato server, che attivi solo se vuoi inviare l'evento Purchase anche dal tuo server, cosa che aiuta a recuperare le conversioni perse dal tracciamento del browser a causa di ad blocker o impostazioni sulla privacy. Richiede un proprio token di accesso Meta e, una volta attivata, il modulo invia ogni acquisto sia dal browser sia dal server con un ID evento condiviso, così Meta li unisce in un'unica conversione deduplicata.
Sì. Quando la pagina di confronto richiede i dati dei prodotti, il modulo carica ciascun prodotto in base al negozio e alla lingua correnti presi dal contesto di PrestaShop, così nomi, descrizioni brevi, prezzi e caratteristiche vengono mostrati per il negozio e la lingua che il visitatore sta consultando.
I prodotti disattivati, o che non è più possibile caricare, vengono ignorati automaticamente e semplicemente non compaiono nella tabella, anche se il loro ID è ancora salvato nel browser. Il confronto avviene a livello di prodotto, quindi la tabella non crea una colonna separata per ogni combinazione di un prodotto.
Il Pixel del browser viene eseguito interamente lato client e non richiede alcun dato personale dal tuo database. Solo quando attivi anche la Conversions API il modulo costruisce eventi Purchase lato server a partire dall'ordine: questi dati di corrispondenza possono includere i dettagli del cliente e il suo indirizzo di fatturazione o di spedizione, oltre ai cookie del browser _fbp/_fbc di Facebook quando presenti. Tali eventi vengono messi in coda e inviati dal tuo server alla versione dell'API Graph di Meta che hai configurato tramite un'attività in background; puoi convalidarli con un codice evento di test di Meta prima che vengano conteggiati dal vivo. Poiché riguarda dati del cliente, mantieni attiva l'opzione del consenso affinché gli eventi si attivino solo dopo che un visitatore ha concesso il consenso al marketing.
No. Database Cleanup rimuove solo il disordine operativo. Le sue sette attività interessano soltanto queste tabelle: carrelli abbandonati, statistiche di ricerca, prezzi speciali scaduti, log, connessioni, ospiti orfani e vecchi record di posta. Non esegue mai un DELETE sui tuoi clienti, ordini, fatture o indirizzi.
Due regole proteggono in particolare la tua cronologia: un carrello viene rimosso solo se un LEFT JOIN sulla tabella degli ordini mostra che non è mai diventato un ordine, e un record ospite viene rimosso solo se non ha più alcuna connessione associata. I carrelli convertiti, la cronologia reale degli ordini e gli account clienti restano quindi intatti, lo strumento cancella i dati senza valore aziendale, non i tuoi record commerciali.
No. Le query di pulizia vengono eseguite sulle tabelle condivise di PrestaShop (cart, log, statssearch, mail ecc.) sull'intero database e non sono limitate al contesto del negozio. In un'installazione multistore un'esecuzione cancella quindi tutti i vecchi record corrispondenti per tutti i negozi in una volta, non solo quello che stai visualizzando nel Back Office.
Per uno strumento di manutenzione è voluto, i dati interessati (carrelli scaduti, vecchi log, connessioni obsolete) sono dati di manutenzione, non dati di catalogo o clienti specifici del negozio. Se ti serve più controllo, verifica i conteggi prima di eseguire e pulisci in un momento tranquillo.
Non c'è annullamento. Ogni attività esegue un vero DELETE SQL, quindi le righe rimosse spariscono definitivamente, il modulo non tiene alcun cestino né punto di ripristino. L'azione esegui tutto viene mostrata proprio per questo con una conferma di azione irreversibile.
Esegui sempre un backup del database prima della prima pulizia. La schermata mostra il conteggio esatto per ogni attività prima di eseguirla, quindi il flusso sicuro è: verifica i conteggi, fai il backup e poi pulisci una categoria alla volta o avvia il passaggio completo quando sei sicuro.
Il modulo dichiara compatibilità con PrestaShop dalla 1.6 alla 9.x (ps_versions_compliancy min 1.6.0.0, max 9.99.99) ed è usato su 1.7, 8.x e 9.x. I tuoi clienti non devono mai accedere a Facebook per vedere il feed.
Per collegare il feed servono tre cose da Facebook: un'app Facebook Developer con la Pages API, un Page Access Token a lunga durata (l'aiuto nel pannello richiede i permessi pages_read_engagement e pages_read_user_content) e il tuo Page ID numerico. Il nome della pagina è opzionale e imposta solo l'intestazione.
- I post vengono recuperati lato server dalla Facebook Graph API
v21.0, quindi il server necessita di HTTPS in uscita. Il modulo usa cURL se disponibile, altrimenti uno streamfile_get_contents. - Il timeout della richiesta è di 15 secondi; se Facebook restituisce un errore o nessun dato, il blocco non mostra nulla invece di rompere la pagina.
- Finché non salvi sia il Page Access Token sia il Page ID, un avviso nel pannello mantiene il feed autonomo inattivo.
Poiché il token appartiene a te come proprietario della pagina e il recupero avviene sul server, i visitatori non devono mai autenticarsi con Facebook.
Il feed viene reso con il template e il CSS propri del modulo anziché con un embed ufficiale di Facebook, quindi si adatta al tuo tema invece di essere un widget rigido. Scegli il layout e regoli spaziature e comportamento dalle impostazioni del modulo.
- Modalità layout:
grid,slider(carosello) olist. - Colonne: da 2 a 6 su desktop e 1 o 2 su mobile.
- Numero di post: da 1 a 25, predefinito
6. - Tema: chiaro o scuro. Effetto hover: elevazione (ombra), glow, evidenziazione bordo o nessuno.
- Spaziature: spazio della griglia (predefinito
16px) e raggio dei bordi delle card (predefinito8px). - Slider: scorrimento automatico opzionale a una velocità da 2s a 10s, più lo swipe tattile su mobile.
- Immagini: il lazy loading è attivo per impostazione predefinita per proteggere la velocità delle pagine.
Puoi anche impostare un titolo di sezione, mostrare o nascondere un pulsante Segui con testo personalizzato e nascondere l'intero blocco su mobile con l'opzione Mostra su mobile.
No. Il modulo non inserisce né l'SDK né il pixel di Facebook (connect.facebook.net / fbevents) nel tuo negozio. Sull'hook di visualizzazione aggiunge solo il proprio CSS e JavaScript, quindi non imposta cookie di terze parti di Facebook né segnala i tuoi visitatori a Facebook al caricamento delle pagine.
I post vengono recuperati lato server: il tuo server chiama la Facebook Graph API e il risultato normalizzato viene scritto in un file di cache JSON (mprfb_feed_cache.json). Viene memorizzato solo il contenuto pubblico della pagina – testo dei post, URL delle immagini, permalink e i conteggi pubblici di reazioni, commenti e condivisioni. Il modulo non raccoglie né invia a Facebook alcun dato personale dei clienti.
- Il token di accesso è memorizzato nella configurazione del negozio e usato solo per il recupero lato server; non viene mai esposto al browser.
- Le immagini dei post e i link "vedi su Facebook" puntano a URL Facebook / fbcdn, quindi il browser di un visitatore carica quelle immagini dal CDN di Facebook come farebbe con qualsiasi immagine remota – il modulo stesso non invia nulla che identifichi il cliente.
Se preferisci, aumenta la durata della cache (fino a 24 ore) per ridurre ulteriormente la frequenza con cui il server contatta Facebook.
No. La data viene calcolata allo stesso modo per tutto il catalogo a partire dalle impostazioni globali, giorni di lavorazione, orario limite, regola dei fine settimana e formato della data. Non considera la giacenza, il peso o il fornitore di un prodotto, né il Paese o l'indirizzo del cliente. Il calcolo usa l'orologio del tuo server e non il fuso orario locale del visitatore, quindi ogni scheda prodotto mostra la stessa stima in un dato momento. Se ti servono regole di trasporto specifiche per prodotto o corriere, è un altro compito, vedi la domanda sui tempi di transito qui sopra.
No. Il blocco di consegna viene generato mentre la scheda prodotto viene visualizzata; non viene scritto nulla nel database, non viene impostato alcun cookie e non viene raccolto alcun dato personale come indirizzo IP, nome o posizione. La data è calcolata al volo dalle tue impostazioni e dall'orologio del server, quindi non c'è nulla su un visitatore da conservare, esportare o cancellare, lato visitatore non sorgono obblighi GDPR.
Il modulo è realizzato per PrestaShop dalla 1.6 alla 9.x. La stima viene aggiunta tramite l'hook displayProductAdditionalInfo; nei temi che usano questo hook il blocco compare nell'area delle informazioni aggiuntive della scheda prodotto, vicino al pulsante di aggiunta al carrello. Le etichette (“Consegna stimata”, “Ordina entro … ore”) sono traducibili nelle sei lingue del negozio, ma i nomi dei giorni e dei mesi nella data stessa sono prodotti da PHP e appaiono in inglese indipendentemente dalla lingua attiva.
No. Il modulo funziona interamente tramite due hook di PrestaShop: filterCmsContent per i titoli delle pagine CMS e actionOutputHTMLBefore per il testo dei link visualizzato nei footer e nei menu. Entrambi vengono registrati durante l'installazione e non viene creato alcun override di template .tpl né alcun override delle classi del core, quindi resta compatibile con il tuo tema e sopravvive agli aggiornamenti del tema. Poiché actionOutputHTMLBefore riscrive l'HTML finale, le etichette dei tuoi link CMS vengono sostituite ovunque compaiano le ancore standard cms-page-link di PrestaShop, senza toccare un solo file di template.
No. L'unica tabella del modulo (mprcmsnames) memorizza quattro colonne: id_cms, id_lang, id_shop e il testo display_name che digiti, e nulla riguardo a clienti, ordini o visitatori. Non legge né scrive alcun dato personale, quindi non ha alcuna rilevanza sui tuoi obblighi GDPR o sulla tua informativa sulla privacy. È puramente uno strumento editoriale di etichettatura per le tue pagine CMS.
La disinstallazione elimina la tabella propria del modulo mprcmsnames, quindi ogni nome visualizzato personalizzato che avevi salvato viene rimosso. Le tue pagine CMS native di PrestaShop rimangono intatte: i loro nomi originali e i meta titoli non sono mai stati modificati, quindi il front office torna semplicemente a mostrare i titoli CMS standard. Nulla nelle tabelle ps_cms o ps_cms_lang viene modificato in alcun momento.
No. È un modulo con pulsanti di pagamento express, non un sostituto del checkout in una pagina. Il tuo normale checkout PrestaShop, i flussi ospite e account e la conferma d'ordine restano invariati, e i metodi di pagamento standard di PrestaShop restano disponibili al momento del pagamento. Il modulo aggiunge solo scorciatoie più rapide Apple Pay, Google Pay, PayPal, Link e carta sulle pagine che scegli (prodotto, carrello, elenco prodotti o un posizionamento personalizzato), così migliori la velocità di pagamento senza ricostruire il funnel di checkout.
Sì, se abiliti il salvataggio delle carte nelle impostazioni del modulo. Quando è attivo, il modulo aggiunge un link nell'area account del cliente e una pagina dedicata alle carte salvate, dove i clienti connessi possono vedere e rimuovere i metodi di pagamento salvati per acquisti futuri più rapidi. I dati della carta sono conservati da Stripe e non vengono memorizzati nel tuo database PrestaShop. Se lasci il salvataggio delle carte disattivato, nessuna carta viene salvata e il link nell'account non viene mostrato.
Per il recupero dei carrelli abbandonati e la diagnostica il modulo registra il contesto di sessione come l'identità del cliente o dell'ospite, la sorgente di traffico e i dettagli della campagna, il tipo di dispositivo, il browser e i wallet in esso disponibili, oltre ai dati della prima visita. I numeri di carta effettivi sono elaborati da Stripe e non vengono memorizzati in PrestaShop. Puoi facoltativamente abilitare una casella di consenso sulla privacy con un'etichetta personalizzata nel flusso di pagamento express, con collegamento alla pagina della privacy del tuo negozio, così gli acquirenti acconsentono prima di pagare.
FAQ Manager dichiara la compatibilità da PrestaShop 1.6.1.0 fino alla versione 9.x installata e include un livello ObjectModel sicuro per PrestaShop 1.6, così gli stessi modelli funzionano su tutte queste versioni.
Ogni categoria FAQ, domanda, risposta, URL semplificato, meta title e meta description viene memorizzata per lingua nelle tabelle _lang del modulo, quindi la FAQ è completamente multilingua - ogni lingua mantiene il proprio testo e il proprio slug.
Il multinegozio è supportato tramite la tabella di associazione domanda-negozio, così una domanda può essere limitata ai negozi scelti invece di essere imposta a tutti i negozi del gruppo.
La scheda FAQ prodotto carica solo le domande assegnate direttamente a quel prodotto; se non è assegnato nulla, la scheda non mostra niente invece di inserire contenuti di categoria non correlati.
Per mantenere leggere le pagine prodotto, il modulo tratta le risposte in base all'ambito: una domanda legata a un solo prodotto può avere la risposta resa nell'HTML iniziale della pagina, mentre una domanda condivisa tra più prodotti è considerata correlata e la sua risposta viene caricata in modo differito (lazy-load) solo quando un cliente la apre.
L'elenco rispetta anche la data di pubblicazione, le restrizioni per gruppo clienti e la data di rivelazione della risposta; i risultati sono ordinati per bilancio dei voti utili e attualità, così le risposte più utili compaiono per prime.
Le funzioni interattive memorizzano solo ciò che serve per funzionare. Un voto utile o non utile viene registrato in una tabella dei voti con il tipo di entità, l'id dell'entità e l'indirizzo IP del visitatore, usato per applicare un solo voto per IP per ogni domanda o risposta; un cookie PrestaShop viene impostato solo affinché l'interfaccia ricordi come hai votato.
Quando un visitatore invia una domanda, il record in attesa conserva nome, email, testo della domanda, lingua, negozio, contesto prodotto o categoria e IP con stato in attesa, così nulla appare pubblicamente finché un membro dello staff non lo approva. I moduli limitano il testo di domande e risposte a 5000 caratteri e usano un campo honeypot e un limite di domande in attesa per email e per categoria (predefinito 2) per contenere lo spam.
Sulle pagine FAQ in sola lettura il modulo disabilita la scrittura dei cookie, quindi la semplice consultazione delle domande non genera scritture di sessione.
Sì. Le richieste vengono memorizzate per negozio e per lingua, e gli URL pubblici sono localizzati per ogni lingua del negozio.
- Isolamento per negozio: ogni richiesta ha un
id_shop, lo slug è unico per(slug, id_shop)e la query della roadmap filtra suid_shop, così le idee di un negozio non compaiono mai nella bacheca di un altro. - Contenuto per lingua: ogni richiesta salva la propria lingua e per le sei lingue sono definiti prefissi URL localizzati, inglese
feature-requests, tedescofunktionswuensche, francesedemandes-de-fonctionnalites, polaccopropozycje-funkcji, italianorichieste-funzionalita, spagnolosolicitudes-de-funciones, con ripiego sufeature-requestsper altre lingue. - URL leggibili: l'hub, le pagine per prodotto, le singole pagine di richiesta e gli elenchi paginati hanno ciascuno il proprio URL localizzato.
Il modulo registra l'identità e l'indirizzo IP di chi invia la richiesta per la moderazione e la prevenzione degli abusi, poi rimuove queste informazioni dalle risposte pubbliche.
- Cosa viene memorizzato: per ogni richiesta l'ID cliente, oppure per gli ospiti un nome e un'email validata, più l'indirizzo IP del visitatore da
Tools::getRemoteAddr(), insieme a titolo, descrizione, stato, lingua e negozio. - Perché l'IP: serve a limitare gli invii a un massimo di 3 per prodotto per IP al giorno e a deduplicare i voti degli ospiti, che per impostazione predefinita non richiedono l'accesso.
- Non mostrato pubblicamente: prima di restituire un elenco al browser il modulo rimuove
customer_email,ip_addresseid_customerdalla risposta, così gli altri clienti non vedono mai chi ha inviato un'idea né la sua email o IP.
Poiché memorizza email e IP, è bene indicare questi dati nell'informativa sulla privacy del negozio.
Il modulo è destinato a PrestaShop 1.7.6.0 e successivi, coprendo 1.7, 8.x e 9.x. La compatibilità dichiarata è min 1.7.6.0 fino alla versione di PrestaShop in esecuzione.
È un modulo di back-office bootstrap configurato interamente dal Back Office, senza scrivere codice. La scheda nella pagina prodotto viene aggiunta tramite un hook di visualizzazione, quindi non serve alcun override del template né modifica al tema. Compare solo quando ENABLED e SHOW_ON_PRODUCT sono attivi e il prodotto può essere identificato. La roadmap pubblica e le pagine delle richieste usano le rotte leggibili del modulo anziché file del tema.
Solo il nome dell'evento. L'Events API di Hotjar funziona lato browser e accetta soltanto un nome di evento, non le proprietà. Il modulo invia quindi a Hotjar nomi puliti come product_view, add_to_cart e purchase tramite hj('event', '...').
Dettagli come valore dell'ordine, valuta e ID prodotto vengono comunque preparati dal modulo, ma per trasparenza sono mostrati nel monitor eventi della demo e non inviati a Hotjar. I nomi degli eventi ti servono per filtrare registrazioni, heatmap, funnel e sondaggi attorno ai momenti di acquisto più significativi.
Ogni evento ha il proprio interruttore nel back office, così invii solo ciò che ti serve. Gli eventi integrati sono: visualizzazione pagina, visualizzazione prodotto, visualizzazione categoria, aggiunta al carrello, aggiunta alla lista dei desideri, avvio del checkout, ricerca, acquisto e registrazione cliente.
Le regole per gli eventi personalizzati sono un'impostazione separata e disattivata per impostazione predefinita, quindi non viene inviato nulla di aggiuntivo finché non aggiungi le tue regole.
Sì. Oltre agli eventi e-commerce integrati, nel back office puoi definire regole di eventi personalizzati in formato JSON. Una regola può attivarsi su un clic corrispondente a un selettore CSS, quando l'URL contiene un frammento, su uno specifico controller o modulo PrestaShop, oppure su un evento DOM che invii tu.
Le regole vengono eseguite dallo script front-office del modulo, quindi non tocchi i file del tema. Gli eventi personalizzati restano disattivati finché non li abiliti e aggiungi almeno una regola.
Ogni livello fedeltà è collegato a un gruppo di clienti nativo di PrestaShop. Quando un cliente raggiunge un livello, il modulo lo aggiunge a quel gruppo e rimuove il gruppo del livello precedente, mantenendo sempre il gruppo di clienti predefinito del tuo negozio. La riduzione di prezzo effettiva è gestita dai prezzi per gruppo nativi di PrestaShop e dalle regole di prezzo del catalogo che associi a quel gruppo, così i tuoi sconti di gruppo, le regole fiscali e le restrizioni esistenti continuano a funzionare. La percentuale mostrata nell'account del cliente è il valore indicativo del livello; lo sconto reale va quindi configurato sul gruppo di clienti collegato.
La spesa è tracciata per negozio. Ogni record fedeltà è univoco per cliente e negozio e sia l'accumulo al momento dell'ordine sia il ricalcolo sommano solo gli ordini appartenenti a quel negozio. Un cliente che acquista in due negozi della stessa installazione costruisce quindi un totale di spesa e un livello separati in ciascun negozio. Il gruppo di clienti collegato viene aggiunto sull'account del cliente e il gruppo di clienti predefinito del negozio viene sempre mantenuto.
L'installazione non recupera automaticamente lo storico; la nuova spesa si accumula a partire dal successivo ordine convalidato. Per inizializzare i clienti esistenti, esegui il ricalcolo, che per ogni cliente somma gli ordini passati che si trovano negli stati d'ordine validi configurati (per negozio) e assegna il livello corrispondente. Lo stesso ricalcolo viene eseguito automaticamente quando un ordine passa in seguito a uno stato di annullamento o rimborso configurato, così il totale di un cliente riflette sempre la spesa effettivamente mantenuta e non un semplice contatore che non scende mai.
Il modulo dichiara ps_versions_compliancy da 1.6.0.0 fino alla versione di PrestaShop in esecuzione, e la sua intestazione indica PS da 1.6 a 9.x. composer.json richiede PHP 7.2 o superiore. Registra solo l'hook displayHeader, quindi non dipende dalle API del controller di front-office cambiate tra le versioni principali.
Sì. La schermata di configurazione ha una scheda Autorizzazioni con interruttori indipendenti: consenti cambio cliente, cambio indirizzo, cambio corriere, gestione degli sconti e aggiunta di prodotti. Ogni interruttore è memorizzato come valore booleano, quindi puoi, ad esempio, lasciare attive le modifiche a prodotti e quantità disattivando al contempo la riassegnazione del cliente. Dopo l'installazione tutti gli interruttori sono attivi per impostazione predefinita.
No. Blog Revolution determina la visibilità a ogni caricamento di pagina, quindi non c'è alcun cron job o attività pianificata da configurare.
Prima che un articolo compaia nel negozio vengono verificate due condizioni:
- Lo stato deve essere Pubblicato, le bozze e gli articoli archiviati non vengono mai mostrati ai visitatori.
- La data di pubblicazione deve essere raggiunta, ogni query del front-office filtra su
date_published <= NOW().
Per pubblicare un articolo a una data precisa, impostalo su Pubblicato e indica una data futura. Resterà nascosto fino a quel momento, poi comparirà automaticamente al successivo caricamento di una pagina del blog, senza alcun processo in background. Lo stesso controllo sulla data tiene gli articoli con data futura fuori da elenchi, categorie, tag, archivi, feed RSS e sitemap XML finché non arriva il loro momento.
Poiché il controllo è valutato in tempo reale e non da uno scheduler, non serve accesso shell o cron sull'hosting, utile negli ambienti PrestaShop limitati o condivisi.
Nella schermata Pagamenti in sospeso, l'azione Segna come pagato richiama markAsPaid(), che imposta is_paid a 1, registra la data di pagamento e memorizza l'ID del dipendente che ha confermato. Se l'ordine PrestaShop collegato è ancora nello stato In attesa di pagamento differito, il modulo lo porta anche a Pagamento accettato (PS_OS_PAYMENT); un ordine già in un altro stato resta invariato. Poiché l'importo non è più considerato in sospeso, viene liberato anche il credito disponibile del cliente per nuovi ordini differiti.
No. Registra solo hook del back-office, displayBackOfficeHeader, displayAdminOrder, displayAdminOrderMainBottom e actionOrderStatusPostUpdate, e non include alcun controller front-office. Team, stati del workflow, commenti, promemoria e notifiche sono strumenti interni per lo staff, quindi i clienti non vedono nulla di aggiunto nel negozio.
Sì. Blog Revolution memorizza i contenuti del blog per lingua e per negozio, così un PrestaShop multistore o multilingua può gestire blog diversi (o condivisi) senza che i contenuti passino da un negozio all'altro.
Come funziona nel modello dati:
- Articoli, categorie e autori mantengono i campi traducibili, titolo, estratto, contenuto, meta title/description e lo slug
link_rewrite, in tabelle specifiche per lingua, una riga per lingua. - Ogni query del front-office unisce la traduzione dell'articolo sulla lingua corrente e la sua associazione al negozio sul negozio corrente, così ogni negozio elenca solo gli articoli assegnati, ciascuno nella lingua del visitatore.
- Anche l'importatore WordPress e l'esportatore XML/JSON operano per il negozio e la lingua con cui li avvii.
Una nota onesta: multilingua significa che i campi sono traducibili, non tradotti automaticamente. Scrivi tu stesso ogni versione linguistica (o la importi); un articolo deve inoltre essere associato a un negozio per comparirvi. Se durante un'importazione di massa lo slug di una traduzione resta vuoto, il modulo può rigenerare i valori link_rewrite mancanti in modo che gli elenchi non ricadano sull'URL dell'indice del blog.
Su ogni pagina del negozio l'header invia un evento $pageViewed alla coda omnisend e carica il launcher-v2.js esterno di Omnisend da omnisnippet1.com. Quando un cliente ha effettuato l'accesso, hookDisplayHeader() passa inoltre il suo indirizzo email in una chiamata identify; gli ospiti non inviano alcuna email. Il modulo non invia dati di carrello, ordine o pagamento. Poiché l'email di un cliente autenticato lascia il tuo negozio verso una terza parte, resti responsabile del consenso e dell'informativa sulla privacy adeguati.
Prima di applicare le modifiche l'editor verifica se l'ordine ha una fattura e il personale viene avvisato che potrebbe essere necessaria una correzione. Un'impostazione di documento di correzione automatico, attiva per impostazione predefinita, genera un documento di correzione (nota di credito) per la differenza quando si modifica un ordine fatturato. Puoi disattivarla se preferisci creare i documenti di correzione manualmente.
Sì. Ogni team memorizza un id_shop e utilizza per impostazione predefinita il contesto del negozio corrente (Shop::getContextShopID()); le ricerche dei team sono filtrate per negozio. Quando un dipendente apre il pannello del workflow di un ordine o pubblica un commento, il modulo verifica prima con hasAuthOnShop() che sia autorizzato sul negozio a cui appartiene l'ordine, prima di mostrare o salvare qualcosa.
Sì. Ogni ordine differito viene salvato con l'id_shop in cui è stato effettuato e il controllo del saldo residuo (getOutstandingByCustomer()) è calcolato per negozio: il totale non pagato di un cliente su un negozio non viene quindi conteggiato sugli ordini effettuati su un altro. Anche l'elenco nell'area cliente è filtrato sul negozio corrente. I limiti di credito, invece, sono memorizzati per gruppo di clienti in mpr_pt_credit_limit, indicizzata solo per id_group senza colonna del negozio: lo stesso valore limite si applica quindi a quel gruppo su ogni negozio in cui esiste.
Sì. L'impostazione Ambito di protezione offre due modalità: Intero negozio e Pagine CMS, categorie e prodotti selezionati. Nella modalità selezionata la barriera intercetta solo le pagine prodotto, categoria e CMS i cui ID corrispondono alla selezione salvata (memorizzata in PROTECTED_ENTITIES); tutte le altre pagine si caricano normalmente. La modalità predefinita protegge l'intero negozio.
Quando l'opzione Scoraggia i motori di ricerca è attiva (impostazione predefinita), la pagina della password risponde con HTTP 503 Service Temporarily Unavailable, un'intestazione Retry-After: 86400 e X-Robots-Tag: noindex, nofollow. Questo comunica ai crawler che il blocco è temporaneo e chiede loro di non indicizzare il negozio protetto. Disattiva l'opzione se hai bisogno che la barriera restituisca una normale risposta 200.
No. L'unica tabella di database che crea è mpr_pack_content, che contiene tre interi per riga: id_pack, id_product e position. Non imposta cookie, non usa l'archiviazione locale e non legge dati dei clienti. Gli script del front office aggiungono solo un badge Bundle alle schede prodotto e mostrano l'elenco dei prodotti inclusi, quindi non c'è nulla di personale da esportare o cancellare per le richieste GDPR.
Sì. Lo script del front office osserva il contenitore #js-product-list con un MutationObserver e riapplica il badge Bundle ogni volta che l'elenco viene aggiornato via AJAX, ad esempio con la ricerca a faccette o lo scorrimento infinito, così anche le schede dei pacchetti appena caricate vengono decorate.
L'esportatore chiama Shop::isFeatureActive(). Quando la modalità multinegozio è attiva, la query viene limitata al negozio del contesto corrente (o.id_shop = current shop), quindi il file contiene solo gli ordini di quel negozio. Quando il multinegozio è disattivato, non viene aggiunta alcuna condizione sul negozio e vengono esportati tutti gli ordini.
Sì. Il file viene inviato come text/csv; charset=utf-8 con un BOM UTF-8 (EF BB BF) all'inizio, così Excel rileva l'UTF-8 e mostra correttamente gli accenti. Ogni valore è racchiuso tra virgolette doppie, quindi un separatore o un ritorno a capo all'interno di un campo non rompe le colonne.
Sì. RESPECT_CONSENT è attivo per impostazione predefinita: quando mprcookiesrevolution o mprcookiebanner è attivo, il tracciamento attende il consenso marketing. Legge il cookie mprcr_consent o mprcookie_consent e si attiva solo dopo che il marketing è stato accettato. EXCLUDE_EMPLOYEES è anch'esso attivo per impostazione predefinita, quindi un dipendente connesso che naviga nel negozio non viene tracciato. Entrambe le opzioni possono essere disattivate nelle impostazioni del modulo.
Su ogni pagina lo script dell'header legge ob_click_id (accetta anche outbrain_click_id o dicbo) dall'URL di arrivo e lo memorizza per 90 giorni in un cookie proprietario mproutbr_ob_click_id. Quando S2S è attivo, un evento in coda viene inviato a Outbrain solo se contiene un ID di clic valido (lettere, numeri, punti, trattini bassi, due punti e trattini, fino a 500 caratteri); gli eventi senza ID vengono ignorati. L'opzione S2S_SEND_IP_UA controlla se i metadati di IP e user-agent vengono conservati.
Sì. Durante l'installazione, Lightweight Cookie Banner legge i fogli di stile del tuo tema attivo e ne ricava una palette di colori iniziale, così che il banner sembri parte del tuo negozio anziché una sovrapposizione generica.
Il rilevamento legge i file custom.css e theme.css del tema e, se mancano, la cache CCC compilata, quindi ricava i colori da:
- le variabili CSS Bootstrap 5 / Hummingbird.
--bs-primarydiventa il pulsante Accetta,--bs-darklo sfondo del banner. - la regola
.btn-primary, che ha la precedenza sulle variabili quando è presente, per lo sfondo e il testo del pulsante Accetta. - lo sfondo di
.header-top, riutilizzato come sfondo del banner.
Controlla inoltre la luminanza di ogni colore affinché il testo resti leggibile: un banner scuro riceve testo chiaro e un'etichetta Rifiuta più chiara, un banner chiaro riceve testo scuro. Se non trova alcun CSS del tema, applica un ripiego sensato: banner scuro, testo bianco e pulsante Accetta blu.
Una precisazione onesta: questa palette viene calcolata una sola volta, al momento dell'installazione, come punto di partenza. Non viene rilevata di nuovo automaticamente se in seguito cambi tema. Ogni colore, sfondo e testo del banner, colori dei pulsanti Accetta e Rifiuta, è una normale impostazione che puoi sovrascrivere manualmente in qualsiasi momento nella configurazione del modulo.
Lightweight Cookie Banner è realizzato per PrestaShop 1.6, 1.7, 8.x e 9.x. La compatibilità di versione è dichiarata da 1.6.0.0 fino alla versione di PrestaShop installata, quindi si installa su tutto questo intervallo.
Il modulo carica il CSS e il JavaScript del front-office in base alla versione. Su PrestaShop 1.7 e successivi registra il foglio di stile e lo script tramite actionFrontControllerSetMedia, con lo script caricato in fondo alla pagina; su PrestaShop 1.6 ricorre a addCSS e addJS dall'hook di intestazione. Il markup del banner viene generato dagli hook del footer ed è protetto in modo da comparire una sola volta, anche se è agganciato sia a displayFooter sia a displayFooterAfter.
È un banner di front-office con una schermata di configurazione nel back-office e non richiede alcun account o servizio esterno. La scelta del visitatore è conservata in un cookie proprietario sul tuo dominio. Una regola da conoscere all'installazione: non si installa mentre Cookies Revolution è attivo, perché un solo modulo di consenso dovrebbe controllare il negozio.
Da PrestaShop 8.2 in poi il modulo si aggancia all'hook actionGenerateDocumentReference (tipo order) e restituisce il riferimento formattato. Su PrestaShop 1.7.x, dove questo hook non esiste, usa un override di Order::generateReference() che delega al modulo. Se la numerazione è disattivata o non restituisce nulla, PrestaShop torna al suo riferimento casuale predefinito.
No. L'impostazione dell'hook di visualizzazione è una scelta unica: il widget viene mostrato sotto il prodotto (displayFooterProduct) oppure nella home page (displayHome), non in entrambe le posizioni contemporaneamente. Scegli la posizione più adatta al tuo flusso di navigazione. Lo script di tracciamento registra comunque le visualizzazioni su ogni pagina prodotto, indipendentemente da dove viene mostrato il blocco.
Il modulo dichiara la compatibilità con PrestaShop 1.6, 1.7, 8.x e 9.x. La compatibilità di versione è impostata con un minimo di 1.6.0.0 e un massimo corrispondente al PrestaShop in esecuzione, quindi si installa sui negozi attuali senza forzature manuali.
Il modulo rileva e applica le regole su cinque tipi di pagina del front-office: pagine prodotto, pagine categoria, pagine CMS, pagine produttore e pagine fornitore. Quando un visitatore apre una di queste pagine, Product Canonical Manager identifica l'entità dal controller e cerca una regola corrispondente per quel product, category, cms, manufacturer o supplier.
Le pagine non collegate a una di queste entità, come la home page, i risultati di ricerca, il carrello o le pagine account. Non sono interessate dalle regole, perché il modulo non ha un'entità con cui abbinarle. Il suo compito è controllare i segnali canonical, robots e hreflang sulle pagine di catalogo e contenuto che i motori di ricerca indicizzano davvero.
No. Quando entrambi i percorsi sono attivi, il modulo genera un unico ID evento per l'acquisto e passa lo stesso ID sia al pixel del browser sia all'evento Conversions API in coda. Quora usa l'ID evento condiviso per riconoscere l'evento del browser e quello del server come un'unica conversione e deduplicarli.
Sì. I contatori sono memorizzati per negozio: la tabella mprordernumber_counter ha una chiave univoca su (id_shop, scope_type, scope_id) e il generatore legge l'ID del negozio dal contesto corrente. Ogni negozio incrementa il proprio contatore, quindi gli ordini di un negozio non consumano i numeri di un altro.
L'elenco conserva fino al numero impostato in Numero massimo di prodotti (8 per impostazione predefinita) e il cookie del browser che memorizza gli ID viene rinnovato con una durata di 30 giorni a ogni visualizzazione di un prodotto. Il prodotto attualmente visualizzato viene rimosso dall'elenco e la ricerca lato server limita inoltre la richiesta a 20 ID prima di caricarli. Vengono restituiti solo prodotti validi e attivi, quindi gli articoli eliminati o disattivati escono automaticamente dal blocco.
No. Product Canonical Manager non modifica mai i record dei prodotti, delle categorie o delle pagine CMS e non altera i file del tema. Opera interamente al momento dell'output, tramite l'hook actionOutputHTMLBefore, riscrivendo l'<head> HTML finale appena prima che la pagina venga inviata al browser, sostituisce o inserisce il tag canonical, aggiunge le direttive robots e ricostruisce i link hreflang secondo le tue regole.
Poiché nulla viene scritto nel catalogo o nei template, la modifica è completamente reversibile: disattiva una regola e la pagina torna all'output predefinito di PrestaShop; disinstalla il modulo e la sua tabella delle regole viene rimossa. Il modulo memorizza solo le tue regole SEO, nessun dato dei clienti o personale, quindi non aumenta i tuoi obblighi GDPR.
Sì. Oltre agli eventi standard puoi definire regole di eventi del browser personalizzate che si attivano al clic su un elemento, su URL specifici, su controller o pagine corrispondenti, oppure su azioni del DOM. Nome dell'evento, selettore, URL e chiavi dei parametri di ogni regola vengono convalidati e ripuliti prima del salvataggio, così vengono memorizzate solo regole ben formate.
Sì, JavaScript deve essere abilitato: il cookie viene letto e scritto e le schede prodotto vengono recuperate via AJAX, interamente nel browser del visitatore. Poiché l'elenco personalizzato viene caricato lato client dopo il rendering della pagina, il blocco resta corretto per ogni visitatore anche quando la pagina circostante viene servita dalla cache a pagina intera o dalla cache CDN, nulla di specifico del visitatore viene incorporato nell'HTML memorizzato nella cache. Se JavaScript è disattivato, il blocco resta semplicemente nascosto.
Sì. Ogni regola ha un ambito negozio: può applicarsi a un singolo negozio o a tutti i negozi quando il suo id_shop è impostato su 0. In un'installazione multistore il resolver carica solo le regole il cui negozio corrisponde al negozio corrente o al valore tutti-i-negozi, così ogni negozio può avere la propria politica di canonical e indicizzazione pur condividendo regole globali.
Quando più regole corrispondono alla stessa pagina, il modulo le ordina per priority (dalla più alta) e la prima regola con un'azione canonical determina l'URL canonical della pagina. I flag noindex e nofollow sono cumulativi, se una regola corrispondente li imposta, vengono applicati, così una regola ampia noindex di gruppo e una regola canonical specifica funzionano insieme senza conflitti.
Sì. Una regola di sottotitolo può contenere segnaposto che il modulo compila per ogni pagina a partire dai dati del catalogo, così una stessa formulazione resta pertinente su un'intera categoria o marca. Quando un sottotitolo contiene segnaposto, il resolver li elabora tramite il motore di sostituzione usando l'entità, la lingua e il negozio correnti prima dell'output.
I token supportati sono {name} (nome di prodotto, categoria, pagina CMS, produttore o fornitore), {reference} ed {ean13} per i prodotti, {price} (il prezzo prodotto formattato), {manufacturer} e {category} (nome della categoria predefinita), oltre a {feature:X} per il valore di una caratteristica e {attribute:X} per il valore di un attributo di combinazione.
Poiché i segnaposto vengono risolti al momento del rendering nella lingua corrente, un'unica regola massiva assegnata per categoria, marca o fornitore mantiene ogni pagina corretta senza modificare i prodotti uno per uno. Il testo del sottotitolo senza segnaposto viene stampato esattamente come scritto.
Sì. Ogni visualizzazione viene salvata con il negozio in cui è avvenuta e ogni conteggio, visualizzazioni, vendite, visitatori in tempo reale ed elenco degli acquisti recenti, viene filtrato in base al negozio corrente. Le vendite provengono solo dagli ordini validi di quel negozio. Così ogni negozio di un multistore PrestaShop mostra i propri numeri e nulla viene mescolato tra i negozi.
Il sottotitolo è stampato dal hook displayMprSubtitle, che deve trovarsi subito dopo il titolo nel tema. Il Template Placement Manager analizza i file .tpl del tema attivo per individuare l'h1 (o l'h2/h3 usato nelle schede degli elenchi) per ogni tipo di pagina, quindi inserisce la chiamata del hook subito dopo.
Il posizionamento non sovrascrive il tema padre. Quando il titolo si trova in un tema padre, il modulo crea un override minimo del tema figlio usando {extends} più un override {block}, copiando solo il blocco che contiene il titolo invece dell'intero file.
Se preferisci il pieno controllo puoi saltare lo scanner e aggiungere a mano {hook h='displayMprSubtitle'} ovunque nei tuoi template; i temi che usano già displayProductSubtitle possono richiamare quell'alias. Poiché l'output passa sempre attraverso un hook standard, i sottotitoli vengono resi senza inserire il markup del modulo nei file del core.
No. Prima di salvare una visualizzazione, il modulo verifica se il visitatore sembra umano. Quando i dati di sessione condivisi sono disponibili, salta tutto ciò che è contrassegnato come bot, datacenter o traffico interno; altrimenti ricorre a un controllo dello user-agent rispetto a un lungo elenco di crawler e strumenti di automazione noti (Googlebot, Bingbot, AhrefsBot, SemrushBot, GPTBot, browser headless, curl/wget e simili). Le visite dei bot non vengono salvate e le visite ripetute dello stesso cliente vengono ignorate per 30 minuti, così una persona che ricarica la pagina non può gonfiare il contatore.
Il tracker delle visualizzazioni salva solo quattro cose per visita: l'ID del prodotto, l'ID del negozio, l'ID ospite anonimo di PrestaShop e un timestamp, nessun nome, email o indirizzo IP. Il popup degli acquisti recenti legge gli ordini e i clienti esistenti direttamente dal tuo database anziché copiarli in una nuova tabella, e i nomi degli acquirenti possono essere ridotti a un'iniziale. Le vecchie righe di visualizzazione vengono ripulite automaticamente a circa il doppio del periodo configurato, e la disinstallazione del modulo elimina completamente la sua tabella.
Sì. Advanced SEO Sitemap Builder è pensato per la generazione pianificata: indirizzi il cron del tuo server (o un servizio cron esterno) verso un URL cron dedicato. Il modulo non ricostruisce silenziosamente tutti i file a ogni caricamento di pagina, l'esecuzione pianificata tiene questo lavoro lontano dalle richieste dei tuoi visitatori.
L'endpoint cron è protetto da un token di accesso privato, creato automaticamente all'installazione e rigenerabile in qualsiasi momento dal Back Office. Una richiesta priva del token corretto viene respinta con un 403, così l'URL di generazione non resta aperto al pubblico.
Due protezioni evitano esecuzioni sovrapposte o troppo frequenti: se una generazione è già in corso, una seconda chiamata viene saltata (un'esecuzione bloccata viene rilasciata automaticamente dopo circa 30 minuti) e un intervallo minimo, un'ora per impostazione predefinita, impedisce di ricostruire la sitemap troppo spesso. Puoi chiamare il cron con la frequenza che preferisci: fino allo scadere dell'intervallo segnala semplicemente che la generazione è avvenuta di recente.
Sì. Advanced SEO Sitemap Builder funziona per singolo negozio. Ogni negozio ha il proprio file di indice sitemap e i propri file secondari, e la generazione viene eseguita nel contesto del negozio della richiesta: gli URL vengono quindi rilevati e scritti per quello specifico negozio invece di essere mescolati.
La protezione che impedisce la sovrapposizione di due generazioni è tracciata per negozio, così un'esecuzione lunga su un negozio non disturba i file di un altro. Anche il link alla sitemap che il modulo aggiunge nell'intestazione della pagina punta all'indice sitemap del negozio che il visitatore sta consultando.
Sì. Nelle impostazioni del modulo puoi limitare il widget a tutte le pagine, solo alle pagine prodotto, solo alle pagine categoria o solo alle pagine di checkout (carrello e ordine), e un interruttore separato "Mostra su mobile" ne impedisce il caricamento sui dispositivi mobili. La regola di pagina viene verificata lato server prima di inserire il loader di Smartsupp, quindi sulle pagine escluse non viene aggiunto alcuno script di chat.
No. Il compito di questo modulo è caricare il widget Smartsupp sul tuo negozio a partire dalla tua Website Key. Funzioni come chatbot, registrazioni video delle sessioni e messaggistica multicanale si configurano nel tuo account Smartsupp e dipendono dal tuo piano Smartsupp, non da PrestaShop. Una volta collegato il widget, tutto ciò che attivi in Smartsupp viene erogato tramite esso.
No. Nome ed e-mail del cliente vengono trasmessi a Smartsupp solo quando l'opzione "Trasmetti dati cliente" è attiva e il cliente ha effettuato l'accesso. Per gli ospiti o i visitatori non autenticati non viene precompilato nulla: la chat funziona comunque, ma parte senza quel contesto. Puoi anche disattivare del tutto "Trasmetti dati cliente" se preferisci non inviare alcun dato personale.
mpr_tax_display, e la richiesta di cambio evita deliberatamente di scrivere il cookie di sessione privato di PrestaShop ed è contrassegnata come no-store e noindex. Poiché le regole di chiave di cache e cookie variano, verifica il comportamento sulla tua configurazione CDN / cache a pagina intera.Non si perde nulla, perché il modulo non memorizza mai il testo alternativo nel database. Automatic SEO Images Alt Tags imposta il valore del campo legend (alt) dell'immagine in memoria, mentre ogni pagina prodotto, di elenco o di categoria viene preparata, non scrive nei record delle immagini. Il testo alternativo generato esiste solo finché il modulo è attivo.
Se disattivi il modulo con l'interruttore enabled o lo disinstalli completamente, gli hook del presenter smettono di funzionare e le pagine tornano al testo alternativo salvato in PrestaShop. Le didascalie inserite a mano restano intatte; smette di comparire solo il testo generato dai modelli. Per impostazione predefinita (con override_existing disattivato) il modulo riempie solo i campi vuoti, quindi non ha mai sostituito il tuo testo manuale.
La disinstallazione rimuove esclusivamente le impostazioni e il menu di amministrazione del modulo, e nient'altro. Non analizza, non riscrive né elimina alcun dato di immagini, prodotti o categorie, perciò il modulo può essere provato e rimosso in tutta sicurezza.
Il modulo è pensato per PrestaShop 1.7, 8.x e 9.x (compatibilità dichiarata fino a 9.99.99). Registra tre hook del presenter: actionPresentProduct per le pagine prodotto, actionPresentProductListing per gli elenchi di categoria, ricerca e home page, e actionPresentCategory per le immagini di copertina delle categorie.
Il testo alternativo delle immagini di prodotto e degli elenchi funziona su tutta la gamma supportata. La didascalia dell'immagine di categoria, però, dipende dall'hook actionPresentCategory, che esiste solo a partire da PrestaShop 9.1. Nelle versioni precedenti i modelli prodotto ed elenco si applicano normalmente; solo il modello separato della copertina di categoria richiede la 9.1 o successiva.
Poiché tutto avviene a livello di presenter e non tramite analisi del tema o riscrittura dell'HTML, il modulo non dipende da un tema specifico e resta compatibile finché il tuo tema utilizza i presenter standard di PrestaShop per prodotti e categorie.
No. Il modulo è volutamente leggero e compatibile con la cache. Durante la costruzione del testo alternativo non esegue query al database, non analizza né riscrive l'HTML generato e non tocca mai i file delle immagini. Il testo alternativo viene prodotto con una semplice sostituzione di stringhe sui dati che PrestaShop ha già caricato per la pagina.
Le impostazioni vengono lette una sola volta e mantenute in una cache in memoria per la richiesta, e il generatore di testo viene creato solo al primo utilizzo. Ogni didascalia viene prodotta sostituendo le variabili del modello come {product_name} o {category}, ripulendo spazi e separatori e troncando alla lunghezza massima (125 caratteri per impostazione predefinita).
Poiché lavora sui dati di prodotto e categoria presentati, il risultato viene catturato dalla cache a pagina intera che utilizzi, quindi le pagine in cache mantengono il testo alternativo generato senza lavoro aggiuntivo a ogni visita. Non c'è alcun cron, attività in background o elaborazione di massa da pianificare.
Sì. Nel Back Office il pulsante può essere mostrato su tutte le pagine, solo sulle pagine prodotto, solo sulle pagine categoria o solo sulle pagine di ordine (carrello, ordine e checkout in una pagina). Un interruttore separato controlla se compare sui dispositivi mobili.
Puoi anche impostare un ritardo di visualizzazione in secondi, così il pulsante appare dopo il primo caricamento, e un margine affinché non copra i pulsanti del prodotto o gli elementi del checkout. Il pulsante viene mostrato solo quando il widget è abilitato ed è stato salvato un numero di telefono valido.
Warehouse Revolution è compatibile da PrestaShop 1.6.1.0 fino all'attuale linea 9.x e un livello di compatibilità integrato consente alle sue classi dati di funzionare sia sul vecchio ramo 1.6 sia su 1.7, 8 e 9. Richiede PHP 7.1 o successivo. Tutte le schermate di gestione utilizzano l'interfaccia nativa del Back Office, quindi non è necessario alcun software server aggiuntivo.
ORDER BY RAND() sui prodotti con active = 1) ed esclude qualsiasi prodotto già promosso entro la finestra di protezione dalle ripetizioni che imposti (12 settimane per impostazione predefinita). Non esiste alcun filtro per categoria, prezzo o giacenza, quindi ogni prodotto attivo del negozio è un candidato possibile. Per vedere quale prodotto, codice e prezzi verrebbero generati prima di creare qualcosa, usa il pulsante Dry Run nel Back Office: restituisce la selezione senza creare una regola del carrello né pubblicare sui social. Eseguire di nuovo Dry Run o Run Now rigenera la selezione a caso.Funzionano entrambi. Puoi inserire un nome utente Telegram personale o il nome utente di un bot, con o senza il prefisso @; deve avere da 5 a 64 caratteri composti da lettere, numeri e trattini bassi. Il modulo crea un link https://t.me/… verso quell'account, e questo è tutto ciò che fa dal lato Telegram.
Il modulo non invia automaticamente risposte, messaggi di benvenuto o menu di bot da solo. Se desideri risposte automatiche, crea un bot con @BotFather in Telegram e imposta il modulo su quel bot; l'automazione risiede quindi in Telegram, non in questo modulo.
Il messaggio precompilato è facoltativo. Quando ne imposti uno, il modulo lo aggiunge al link Telegram come testo codificato per l'URL, così il cliente lo vede già digitato in Telegram e può modificarlo prima di inviarlo. È una frase di partenza, non un messaggio inviato automaticamente per conto del cliente.
Puoi includere il segnaposto {url} in quel testo. Il modulo lo sostituisce con l'indirizzo della pagina su cui si trova il cliente prima di aprire la chat, fornendo al tuo team il contesto di ciò che il cliente stava guardando. Lascia il campo vuoto se preferisci che siano i clienti a scrivere il primo messaggio.
No. Il modulo non incorpora l'SDK di WhatsApp Business né alcun JavaScript di terze parti. Nel negozio registra solo un proprio piccolo file CSS e mostra un semplice collegamento a https://wa.me/<numero>. L'unico script inline è un timer opzionale aggiunto quando imposti un ritardo di visualizzazione.
Il modulo stesso non imposta alcun cookie. Quando un visitatore fa clic sul pulsante, WhatsApp (o WhatsApp Web su desktop) si apre in una nuova scheda e la conversazione avviene lì, sul servizio di WhatsApp.
Warehouse Revolution non elimina lo stock nativo. Mantiene un proprio registro, magazzini, ubicazioni e movimenti di stock, come fonte di verità, quindi riscrive la quantità risultante nello stock_available di PrestaShop, in modo che vetrina, catalogo e altri moduli vedano sempre la disponibilità corretta. Per i prodotti assemblati da componenti con una distinta base (BOM), la quantità vendibile è ricavata dal collo di bottiglia della ricetta e aggiornata a intervalli programmati (un'attività cron eseguita circa ogni 15 minuti), così il front office resta accurato senza interventi manuali.
Il modulo conserva le sue impostazioni in una propria tabella di configurazione invece di mescolarle con la configurazione standard di PrestaShop. Queste impostazioni sono globali: lo stesso nome utente Telegram, lo stesso aspetto e lo stesso comportamento di visualizzazione si applicano a tutti i negozi di un'installazione multinegozio.
Questa versione non offre una destinazione Telegram separata per ogni negozio, quindi se hai bisogno di account Telegram diversi per negozi diversi, al momento non è supportato. La disinstallazione del modulo rimuove le impostazioni memorizzate.
cron.php del modulo con il token di sicurezza mostrato nel Back Office, per esempio * * * * * php .../modules/mprweeklysale/cron.php --token=YOUR_TOKEN (funziona anche un URL HTTP con lo stesso token). PrestaShop non esegue attività in background da solo, quindi senza quel cron la vendita non verrà attivata nel giorno e nell'ora pianificati. Puoi avviare una vendita in qualsiasi momento con il pulsante Run Now nella pagina di configurazione, che mostra anche la pianificazione, la prossima e l'ultima esecuzione e il comando cron esatto da copiare.Sì. Warehouse Revolution aggiunge una pagina Resi lato cliente che richiede l'accesso, quindi ogni richiesta di reso è collegata all'account e agli ordini del cliente. Nel Back Office gestisci ogni RMA attraverso un flusso definito, richiesto, approvato, in attesa del reso, ricevuto, ispezionato e infine risolto o rifiutato, e assegni ai prodotti restituiti una classe da A (come nuovo, accredito completo a magazzino) fino a F (invendibile, storno), che determina se un articolo rientra nello stock vendibile. I clienti dispongono inoltre di una pagina di spedizione per seguire il proprio ordine.
No. Per funzionare con temi diversi il modulo si registra sia sul hook del footer sia su quello prima della chiusura del tag body, ma una protezione interna garantisce che il widget venga mostrato una sola volta per pagina, anche se il tema richiama più di uno di questi hook.
Ottieni quindi sempre un unico pulsante WhatsApp, indipendentemente da quante posizioni compatibili offre il tuo tema. Se un pulsante sembra fuori posto, regola posizione, margine e impostazioni di pagina nel Back Office invece di modificare il tema.
Sì. Warehouse Revolution è pensato per operazioni multi-magazzino: puoi definire più magazzini e mantenere una quantità di stock separata per prodotto in ciascuno, così il modulo sa sempre quanto possiedi e dove. All'interno di ogni magazzino puoi organizzare lo stoccaggio fisico in scaffali e singole celle o contenitori, e associare una nota di ubicazione allo stock di un prodotto, così gli addetti al picking vengono indirizzati direttamente allo scaffale giusto invece di cercare in magazzino. Movimenti di stock, trasferimenti tra magazzini, ordini di acquisto e resi sono tutti registrati sul magazzino di competenza, offrendoti una vista accurata e per ubicazione dell'inventario sull'intera operazione.
No. L'elemento titolo renderizzato dal server non viene mai modificato: il prefisso contatore e i promemoria sono applicati via JavaScript dopo il caricamento, solo nel browser di un visitatore reale, e al focus viene ripristinato il titolo originale esatto. I bot noti sono esclusi del tutto e i link delle icone chiara/scura sono markup statico. Ciò che i motori indicizzano è identico con o senza modulo.
Con una sola icona caricata, il tema corrispondente la usa e l'altro mantiene con eleganza la favicon nativa del negozio. Senza icone il modulo non tocca affatto il markup della favicon. Il badge può comunque disegnarsi sull'icona nativa e le funzioni del titolo della scheda continuano a funzionare in modo indipendente.
Su PrestaShop 1.7, 8 e 9 il modulo ascolta gli eventi del carrello del core (updateCart / updatedCart): ogni aggiunta, rimozione o cambio quantità via AJAX ridisegna subito badge e titolo. Su PrestaShop 1.6 osserva invece il contatore del blocco carrello. La bolla si limita al tuo tetto («9+») e sparisce del tutto quando il carrello si svuota.
Sì. Il badge è un hub. Qualsiasi script registra un contatore con una riga di JavaScript (window.mprFavicon.registerSource), e un modulo può esporre la propria sorgente tramite l'hook actionRegisterFaviconBadge ottenendo il proprio interruttore nel back office: wishlist, risposte del supporto non lette, avvisi di magazzino. Scegli tu se il badge mostra la somma di tutte le sorgenti o una prioritaria.
Icone: ICO, PNG, SVG e WebP (gli SVG caricati vengono ricostruiti da un sanitizzatore rigoroso prima del salvataggio). Piattaforme: PrestaShop da 1.6.0.4 a 9.x su PHP 7.1 o successivo. Il motore front-office è JavaScript puro senza dipendenze, niente jQuery, nulla che blocchi il rendering, e funziona con qualsiasi tema.
È volutamente gentile: il promemoria funziona solo mentre la scheda è in secondo piano E il carrello non è vuoto, ruota i messaggi scritti da te (per lingua, al tuo ritmo), e nell'istante in cui il visitatore torna il titolo originale esatto viene ripristinato al carattere. Puoi disattivare il promemoria, il prefisso contatore o l'intero modulo con un interruttore.
Sì, dalla versione 1.1. Da un singolo PNG o WebP il modulo genera icone di collegamento 16/32/48 px (le icone nei risultati di Google richiedono un multiplo di 48 px), un'icona Apple touch 180 px, icone web-app 192/512 px, un manifest web e una favicon.ico multi-dimensione. Un interruttore opzionale scrive quella favicon.ico nella root del negozio, esattamente il file che leggono Bing, DuckDuckGo e Yahoo, con l'originale salvato una volta e ripristinato automaticamente alla disattivazione o disinstallazione.
Sì. Dalla 1.1 puoi caricare un'icona dedicata al back office (o lasciare che il modulo riusi la tua icona chiara) e ogni scheda admin la mostra al posto del logo PrestaShop predefinito. Se gestisci più negozi, ogni back office ha finalmente una scheda riconoscibile, un interruttore disattiva la funzione.
No. Il modulo cambia soltanto a quale indirizzo salvato fa riferimento l'ordine. Prezzi, spese di spedizione, imposte, totali e i documenti già generati restano esattamente com'erano. Il ricalcolo è escluso di proposito, così una correzione dell'indirizzo non può mai alterare quanto deve il cliente.
Ogni documento blocca il proprio indirizzo. L'indirizzo di fatturazione si blocca appena esiste una fattura. Quello di consegna si blocca quando l'ordine ha un numero di tracciamento, una bolla o una data di consegna, è mai passato per uno stato di spedito o consegnato, oppure ha una spedizione di magazzino attiva se è installato MPR Warehouse Revolution. Una regola del corriere opzionale può inoltre bloccare l'indirizzo di consegna per corrieri selezionati, tipico degli ordini punto di ritiro e click-and-collect, dove l'indirizzo di consegna è il luogo di ritiro. Il cliente vede una breve spiegazione al posto dell'opzione di modifica, e le stesse regole vengono applicate di nuovo sul server al salvataggio.
L'ordine deve appartenere al cliente connesso, trovarsi in uno degli stati che autorizzate nelle impostazioni del modulo e non superare l'età massima configurata in ore. Sono esclusi gli ordini ospite, gli ordini solo virtuali, gli ordini con più corrieri o spedizioni e gli ordini con consegna frazionata o multi-indirizzo. Tutte le condizioni vengono ricontrollate in una transazione bloccata subito prima della scrittura.
Il cliente sceglie tra gli indirizzi salvati nella rubrica del proprio account. Il pop-up include il link «Aggiungi un nuovo indirizzo» al modulo indirizzi standard di PrestaShop; dopo averlo creato, torna alla pagina dell'ordine e lo seleziona. Il server verifica prima di salvare che l'indirizzo scelto appartenga davvero a quel cliente.
Sì. Ogni modifica confermata scrive una voce di audit in sola aggiunta con l'ordine, chi ha effettuato il cambio, l'indirizzo vecchio e quello nuovo con copie complete di entrambi, l'indirizzo IP e la marca temporale. Le voci si caricano per numero d'ordine nella pagina di configurazione del modulo. La tabella di audit sopravvive di proposito alla disinstallazione.
Sì. Dopo il salvataggio, il modulo attiva l'hook actionOrderAddressChanged con gli identificativi di ordine, carrello e cliente, gli ID dell'indirizzo vecchio e nuovo e le istantanee complete di entrambi, così i moduli di magazzino, ERP o modifica ordini possono sincronizzarsi. Il negoziante riceve inoltre una notifica, e facoltativamente il cliente una conferma, ciascuna nella lingua del destinatario quando è disponibile la traduzione dell'e-mail corrispondente, con l'inglese come ripiego.
No. Se una variabile manca, il suo segnaposto viene rimosso prima che la pagina parta. Se un calcolo fallisce, il negozio riusa l'ultimo valore salvato quando ce l'ha e rimuove il segnaposto quando non c'è. Il visitatore legge la frase senza il numero, mai una pagina da cui trapela del codice. Vale su ogni percorso di output ed è coperto dai test del modulo.
No. Scrivi il segnaposto della variabile direttamente nel contenuto che già modifichi, una descrizione prodotto, un testo di categoria o una pagina, e viene risolto quando la pagina viene mostrata. Content Variables offre anche un tag Smarty per i template e una chiamata PHP per i moduli, ma l'uso quotidiano non ne ha bisogno.
Sì, ed è il caso più comune. Descrivi il gruppo componendo condizioni: una categoria, una marca, un fornitore, un tag, una caratteristica, un attributo come il colore o una fascia di prezzo. Le condizioni dentro un gruppo devono valere tutte, mentre un secondo gruppo offre un'alternativa.
Sì. Ogni variabile salva le parole che seguono il numero per ciascuna lingua installata, e la forma viene scelta dal valore stesso, così 1, 2 e 155 possono avere desinenze diverse. Le lingue a cui bastano singolare e plurale funzionano allo stesso modo.
Le visite ordinarie non ripetono la query sul catalogo. Un valore calcolato viene determinato una volta e poi conservato per un periodo che imposti nel modulo, così le visite normali leggono il valore salvato. Ogni negozio conserva i propri valori. Analizzare l'output e leggere i valori ha comunque un piccolo costo.
Sì. Una variabile ha un valore proprio per ogni lingua, così lo stesso dato si legge correttamente in tutte e si modifica in un unico punto. I valori calcolati sono salvati per negozio, quindi in un'installazione multinegozio ciascuno conta il proprio catalogo.
Sì. Aggiungi un punto esclamativo dopo le parentesi di apertura: [[!mpr:product_count]] mostra [[mpr:product_count]]. Il punto esclamativo è l'escape e non viene visualizzato, così una pagina di aiuto può spiegare la sintassi senza che l'esempio diventi un numero.
Altre categorie
Hai ancora domande?
Non trovi quello che cerchi? Inviaci la tua domanda e ti risponderemo.