DataFirefly All in One SEO — Documentazione completa
Modulo SEO premium tutto-in-uno per PrestaShop 8 e 9: meta dinamici, schemi JSON-LD, sitemap multilingue, redirect, 404, robots.txt intelligente, tracking e analizzatore di contenuti.
Suite SEO premium tutto-in-uno per PrestaShop 8 e 9: template meta dinamici, schemi JSON-LD completi, sitemap XML multilingue, redirect, monitoring 404, Open Graph e Twitter Cards, GA4 e GTM, robots.txt intelligente con blocco crawler IA e analizzatore di contenuti — tutto in un unico modulo.
Requisiti
- PrestaShop: 8.0 a 9.x
- PHP: 8.1 o superiore (8.2 e 8.3 raccomandati)
- MySQL: 5.7+ o MariaDB 10.3+
- Modulo productcomments (ufficiale PrestaShop): opzionale, richiesto solo per AggregateRating sui prodotti
- mod_rewrite attivato su Apache (o equivalente Nginx) per le URL riscritte
id_shop. Potete avere configurazioni totalmente diverse per ciascun negozio.Installazione
- Scaricate
dfallinoneseo-vX.Y.Z.zipdal vostro account cliente DataFirefly. - Accedete al back-office PrestaShop.
- Andate in Moduli → Module Manager.
- Cliccate Carica un modulo in alto a destra.
- Trascinate il file ZIP o cliccate Seleziona un file.
- L’installazione crea automaticamente le 11 tabelle SQL, registra gli hook e aggiunge il menu Migliora → DataFirefly SEO.
Configurazione iniziale in 10 minuti
- Impostazioni → Generale: attivate il modulo, indicate il nome del sito e l’etichetta “Home” per il breadcrumb.
- Meta e template: definite almeno un template Prodotto e un template Categoria.
- Schema → Identità dell’organizzazione: compilate logo, telefono, email, indirizzo e URL dei social (
sameAs). - Sitemap: attivate la sitemap e cliccate Rigenera ora.
- Tracking: aggiungete il vostro GA4 Measurement ID e/o GTM ID.
- Tracking → Verifiche: incollate il valore di verifica Google Search Console.
- Robots.txt: cliccate Carica predefiniti (PS + blocco IA).
Template meta
Il modulo sostituisce l’inserimento manuale di meta_title e meta_description con template dinamici per tipo di entità. Al salvataggio di una scheda con meta vuoti, il template corrispondente viene applicato automaticamente.
Tipi di entità supportati
- Prodotto: schede prodotto (tutti i tipi, inclusi virtuali e pack)
- Categoria: pagine categoria
- Pagina CMS: pagine di contenuto statico
- Marca / Produttore: pagine produttore
- Fornitore: pagine fornitore
- Home: home page del negozio
- Pagine generiche:
/contact,/sitemap, ecc.
Token disponibili
{shop_name}— nome del negozio{sep}— separatore (default|){product_name}— nome del prodotto (lingua corrente){product_reference}— riferimento interno{product_sku}— alias del riferimento{product_ean13}— codice a barre EAN13{product_brand},{brand}— marca/produttore{category}— categoria predefinita (prodotto) o nome della categoria (pagina categoria){category_parent}— nome della categoria padre{category_description}— descrizione breve (max 160 car.){short_description}— descrizione breve del prodotto (max 160 car.){price}— prezzo IVA inclusa formattato con valuta{price_tax_excl}— prezzo IVA esclusa formattato{title}— titolo della pagina CMS{summary}— estratto del contenuto CMS (max 160 car.)
Blocchi condizionali
Per non renderizzare un token vuoto, usate la sintassi condizionale:
{?product_brand}{product_brand} | {/?}{product_name} - {shop_name}
Se product_brand è vuoto, l’intero blocco tra {?token} e {/?} viene eliminato.
Esempi di template consigliati
Prodotto:
Title: {?product_brand}{product_brand} {/?}{product_name} - {category} | {shop_name}
Description: Scopri {product_name}{?product_brand} di {product_brand}{/?}. {short_description} Spedizione rapida su {shop_name}.
Categoria:
Title: {category} - {?category_parent}{category_parent} - {/?}{shop_name}
Description: Tutti i prodotti della categoria {category} su {shop_name}. {category_description}
Home:
Title: {shop_name} - Negozio online
Description: Benvenuti su {shop_name}. Scoprite il nostro catalogo, spedizione rapida, pagamento sicuro.
Sovrascrittura per entità
Per sovrascrivere una scheda specifica, cliccate l’icona Sovrascrittura meta nel menu Modifica massiva. La pagina di sovrascrittura permette di impostare meta_title, meta_description, la direttiva robots (es. noindex,follow) e un canonical personalizzato per lingua.
Schemi JSON-LD
Il modulo genera un blocco @graph unico che aggrega tutti gli schemi della pagina corrente, validato da Google Rich Results Test.
Schemi generati automaticamente
- Organization — su tutte le pagine, identità dell’azienda
- WebSite — sulla home, con
SearchActionper il sitelinks search box - LocalBusiness — se è stato indicato un indirizzo fisico
- BreadcrumbList — breadcrumb
- Product — sulle schede prodotto, con
offers,priceValidUntil,gtin13/isbn/mpn - AggregateRating — aggregato dal modulo productcomments ufficiale
- Article — sulle pagine CMS
- FAQPage — dai blocchi FAQ prodotto o pagina
Identità dell’organizzazione
Tab Schema → Identità dell’organizzazione. Campi:
- Tipo: Organization, Corporation, LocalBusiness, Store, OnlineStore, OnlineBusiness
- Logo: URL assoluta (consigliato 600×60 minimo)
- Telefono, Email: usati in
contactPoint - Indirizzo postale: via, CAP, città, paese (ISO-2)
- sameAs: una URL per riga
Validità delle offerte prodotto
Il campo Validità delle offerte prodotto (giorni) controlla il valore di priceValidUntil in Product.offers. Default: 60 giorni.
Schemi personalizzati
Tab Schema → Schemi personalizzati. Ambiti: global, home, product, product_id, category, category_id, cms, cms_id.
Variabili disponibili: {shop_name}, {base_url}, {entity_id}, {entity_type}.
@graph. Validatelo con il Rich Results Test prima di pubblicare.Sitemap XML
Il modulo genera una sitemap XML conforme alla specifica sitemaps.org, con hreflang su ogni URL e supporto delle immagini.
Configurazione
Tab Sitemap. Contenuti: Prodotti, Categorie, Pagine CMS, Marche, Fornitori, Immagini, Video.
Opzioni aggiuntive:
- Escludi out-of-stock: rimuove i prodotti esauriti
- Gzip: genera anche le varianti
.xml.gz - URL per file: dimensione dei chunk (consigliato 5000-10000, max 50000)
Rigenerazione
Manuale dall’admin. Per automatizzare, pianificate un cron:
0 */6 * * * php /var/www/html/index.php fc=module&module=dfallinoneseo&controller=sitemap&action=rebuild
Invio ai motori di ricerca
Cliccate Pinga motori per Google e Bing. Per Google Search Console, inviate la URL della sitemap index una volta in GSC → Sitemaps.
URL della sitemap index: https://vostro-negozio.com/sitemap.xml
Sitemap HTML pubblica
Una sitemap HTML leggibile dagli umani viene generata automaticamente in /plan-du-site. Aggrega categorie (albero), pagine CMS, marche, fornitori e i 200 prodotti più recenti.
Redirect
Il modulo gestisce i redirect HTTP 301, 302, 307, 308 e 410 con tre tipi di match.
Tipi di match
- Esatto: la URL sorgente deve corrispondere esattamente
- Prefisso: la URL sorgente è un prefisso della URL richiesta. Utile per migrare cartelle intere.
- Regex: espressione regolare PHP. Gruppi di cattura disponibili tramite
$1,$2.
Creazione manuale
Tab Redirect → Nuovo redirect. Campi: URL sorgente, URL destinazione (vuoto per 410), tipo di match, codice HTTP, conserva query string.
Importazione / esportazione CSV
source,destination,type,code
/prodotto-vecchio,/prodotto-nuovo,exact,301
/cartella-vecchia/,/cartella-nuova/,prefix,301
/old-(.*),/new-$1,regex,301
Redirect automatico al cambio di slug
Se l’opzione Impostazioni → Monitoring → Redirect 301 auto al cambio di URL è attivata, il modulo crea automaticamente un 301 al cambio di slug. Il created_by viene marcato come auto:urlchange.
Monitoring 404
Tab Monitor 404. Cattura tutte le URL in errore 404 servite da PrestaShop, con deduplicazione, conteggio degli hit, rilevamento dei bot e hash degli indirizzi IP (sale COOKIE_KEY di PrestaShop per conformità GDPR).
Filtri disponibili
- Non risolte: URL senza redirect copertura (vista predefinita)
- Risolte: URL per cui è stato creato un redirect a posteriori
- Bot: hit da user-agent identificati come bot
- Tutte
Creare un redirect con un clic
Su ogni riga, il pulsante Reindirizza apre un form inline che precompila la sorgente. La 404 viene automaticamente marcata come risolta.
Purga e manutenzione
Soglia Numero massimo di voci 404 conservate (default 5000). Il pulsante Purga vecchie 404 rimuove le voci non risolte più vecchie.
Robots.txt dinamico
Il modulo serve un file /robots.txt generato dinamicamente ad ogni richiesta.
Preset PrestaShop + blocco IA
Il pulsante Carica predefiniti (PS + blocco IA):
- Blocca le directory sensibili di PrestaShop (
/admin*/,/cache/,/classes/, ecc.) - Blocca le pagine tecniche (
/cart,/order,/my-account, ecc.) - Blocca i principali crawler IA non rispettosi: GPTBot, ClaudeBot, CCBot, Google-Extended, anthropic-ai
- Punta alla sitemap (
Sitemap: /sitemap.xml)
Regole personalizzate
Ogni regola ha un user-agent, una direttiva (Allow, Disallow, Crawl-delay), un valore e una posizione. Attivare/disattivare tramite il pulsante ON/OFF.
Anteprima in tempo reale
Il blocco Anteprima del file generato renderizza il robots.txt come sarà servito.
File llms.txt nativo
Il modulo serve un file /llms.txt conforme alla specifica llmstxt.org. Elenca in markdown le sezioni principali del sito per i crawler IA rispettosi.
Nessuna configurazione richiesta — generato automaticamente dall’albero di categorie, pagine CMS e marche.
Open Graph e Twitter Cards
Tab Social. Il modulo inietta i tag og:* e twitter:* su tutte le pagine.
Impostazioni
- Attiva Open Graph e Twitter Cards: master switch
- og:locale automatico: calcolato dalla lingua del contesto (es.
it_IT) - Immagine OG predefinita: URL assoluta di un’immagine 1200×630
- og:site_name, og:type predefinito
- Twitter @handle e tipo di card (
summaryosummary_large_image) - fb:app_id: Facebook App ID
Tracking: GA4, GTM, pixel
GA4 e Enhanced Ecommerce
Campo GA4 Measurement ID: formato G-XXXXXXXXXX.
Attivate Enhanced Ecommerce per gli eventi view_item, view_item_list, add_to_cart, remove_from_cart, begin_checkout, add_payment_info, purchase.
Attivate Rispetta Consent Mode v2 per un tracking conforme al GDPR.
Google Tag Manager
Campo GTM ID: formato GTM-XXXXXXX. Snippet GTM nell’head, fallback noscript dopo l’apertura del body.
Pixel pubblicitari
- Facebook Pixel ID: 15 cifre
- TikTok Pixel ID: alfanumerico
Verifiche di proprietà
- Google Search Console
- Bing Webmaster Tools
- Yandex Webmaster
- Baidu
Codice personalizzato head e body-end
- Codice iniettato nell’head: per script di terze parti
- Codice iniettato prima della chiusura del body: per widget chat, retargeting
Analizzatore di contenuti
Tab Analizzatore. Inviate prodotto, categoria, pagina CMS o HTML grezzo all’analizzatore per uno score SEO globale.
Metriche calcolate
- Score SEO globale (0-100)
- Leggibilità Flesch
- Numero di parole, numero di frasi
- Densità parola chiave (in %)
- Link interni / esterni / nofollow
- Immagini senza alt
- Struttura H1-H6
- Parola chiave in slug e primo paragrafo
Checks
- Lunghezza title (50-60 caratteri)
- Lunghezza meta description (140-160 caratteri)
- Lunghezza slug
- Lunghezza body (minimo 300 parole)
- Almeno un’immagine con alt
- Parola chiave in title, primo paragrafo, slug
- Densità parola chiave tra 0,5% e 2,5%
- Almeno un H1 e diversi H2/H3
Modifica massiva
Tab Modifica massiva. Griglia paginata (30 voci/pagina) con filtri per meta_title, meta_description, link_rewrite.
Filtri disponibili
- Tutte
- Senza title
- Senza descrizione
- Ricerca per nome
Applicare i template in massa
Il pulsante Applica template applica automaticamente il template. Attivate Applica solo a campi vuoti per evitare di sovrascrivere meta già compilati.
Metabox SEO sulla scheda prodotto
- Score SEO in diretta (7 check)
- Anteprima SERP Google
- Parola chiave principale rilevata
Impostazioni avanzate
Indicizzazione
- hreflang multilingue: tag
link rel="alternate" - Strategia x-default: Lingua predefinita (raccomandato), Inglese, Disattivato
- URL canonical:
link rel="canonical" - Canonical su paginazione: Pagina corrente (raccomandato), Sempre pagina 1, Nessun canonical
- noindex automatici: /search, carrello, mio account, novità, più venduti, promozioni, faccette
- Canonical verso pagina padre su faccette
Immagini
- Generazione automatica alt
- Template alt: default
{product_name} - {shop_name} - Lazyload nativo:
loading="lazy"edecoding="async"
Manutenzione
- Svuota cache: Smarty + PrestaShop
- Purga vecchie 404
- Esporta tutti i dati (JSON)
Multi-negozio
Tutte le funzionalità sono limitate da id_shop.
- Template: un template per coppia (tipo di entità, negozio)
- Sitemap: un sitemap_index distinto per negozio
- Robots.txt: regole per negozio
- Redirect: per negozio
- Schemi personalizzati: per negozio
Risoluzione dei problemi
La sitemap non viene generata
- Cartella
modules/dfallinoneseo/sitemaps/scrivibile? chmod 755 modules/dfallinoneseo/sitemaps/- Aumentate
max_execution_timein php.ini con 50.000+ prodotti
Gli schemi JSON-LD non appaiono
- Modulo attivato?
- Tipo di schema attivato?
- Svuotate la cache PrestaShop
- Ispezionate il sorgente HTML: blocco
script type="application/ld+json"
I redirect 301 non funzionano
- Modulo installato e attivato?
- Redirect marcati come attivi?
- Testate la regex su regex101.com in modalità PCRE
- Ordine di priorità: esatto → prefisso → regex (per
hit_countdecrescente)
GA4 / GTM non si inietta
- Formato ID corretto?
- Consent Mode v2: in modalità “denied” di default fino al consenso
- Ispezionate l’
headdella pagina
robots.txt non cambia
- File
robots.txtstatico nella radice? Eliminatelo. - URL amichevoli attivati?
Errore creazione tabelle SQL all’installazione
- Utente MySQL con permessi
CREATEeALTER? utf8mb4con collationutf8mb4_unicode_cisupportato?- Prefisso tabelle oltre 5 caratteri? Contattate il supporto.
Riferimento tecnico
Hook utilizzati
18 hook:
displayHeader— Meta, Canonical, hreflang, OG, Twitter, JSON-LD, GA4/GTMdisplayBeforeBodyClosingTag— GTM noscript, FB Pixel noscript, body-enddisplayBackOfficeHeader— CSS/JS del back-officedisplayAdminProductsExtra— metabox SEOactionDispatcherBefore,actionDispatcherAfter— routing e cattura 404actionObjectProductAddAfter,actionObjectProductUpdateAfter— auto-fill meta + auto-301actionObjectCategoryAddAfter,actionObjectCategoryUpdateAfteractionObjectCmsAddAfter,actionObjectCmsUpdateAfteractionObjectManufacturerUpdateAfter,actionObjectSupplierUpdateAfteractionAdminControllerSetMedia,actionFrontControllerSetMediadisplayProductExtraContentmoduleRoutes—/sitemap.xml,/plan-du-site,/robots.txt,/llms.txt
Tabelle SQL aggiunte
Prefisso df_seo_, utf8mb4, utf8mb4_unicode_ci:
df_seo_meta,df_seo_meta_lang— sovrascritture metadf_seo_template,df_seo_template_lang— templatedf_seo_redirect— redirectdf_seo_404— journal 404df_seo_score— snapshot di scoredf_seo_keyword— focus keyworddf_seo_robots_rule— regole robots.txtdf_seo_schema_custom— schemi JSON-LD personalizzatidf_seo_log— log diagnostico
Disinstallazione
La disinstallazione rimuove gli hook e i tab, ma conserva le tabelle SQL e i dati. Per purgare completamente:
DROP TABLE ps_df_seo_meta, ps_df_seo_meta_lang, ps_df_seo_template, ps_df_seo_template_lang,
ps_df_seo_redirect, ps_df_seo_404, ps_df_seo_score, ps_df_seo_keyword,
ps_df_seo_robots_rule, ps_df_seo_schema_custom, ps_df_seo_log;
DELETE FROM ps_configuration WHERE name LIKE 'DFSEO_%';
Aggiornamenti e supporto
- Aggiornamenti: 12 mesi inclusi. Rinnovo annuale opzionale a 49 €.
- Supporto: 12 mesi via email, risposta entro 48h lavorative.
- Changelog e download delle ultime versioni sul vostro account cliente DataFirefly.