PS PrestaShop Intermedio

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.

Aggiornato Versione del modulo 1.0.2

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
Il modulo è multi-negozio nativamente: tutte le tabelle sono limitate da id_shop. Potete avere configurazioni totalmente diverse per ciascun negozio.

Installazione

  1. Scaricate dfallinoneseo-vX.Y.Z.zip dal vostro account cliente DataFirefly.
  2. Accedete al back-office PrestaShop.
  3. Andate in Moduli → Module Manager.
  4. Cliccate Carica un modulo in alto a destra.
  5. Trascinate il file ZIP o cliccate Seleziona un file.
  6. L’installazione crea automaticamente le 11 tabelle SQL, registra gli hook e aggiunge il menu Migliora → DataFirefly SEO.
Dopo l’installazione, aprite il Dashboard del modulo per una panoramica dello score SEO globale e dei punti da correggere prioritariamente.

Configurazione iniziale in 10 minuti

  1. Impostazioni → Generale: attivate il modulo, indicate il nome del sito e l’etichetta “Home” per il breadcrumb.
  2. Meta e template: definite almeno un template Prodotto e un template Categoria.
  3. Schema → Identità dell’organizzazione: compilate logo, telefono, email, indirizzo e URL dei social (sameAs).
  4. Sitemap: attivate la sitemap e cliccate Rigenera ora.
  5. Tracking: aggiungete il vostro GA4 Measurement ID e/o GTM ID.
  6. Tracking → Verifiche: incollate il valore di verifica Google Search Console.
  7. 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.

La direttiva robots definita su un’entità specifica ha priorità sulle impostazioni globali di indicizzazione.

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 SearchAction per 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}.

Il JSON-LD personalizzato viene inserito così com’è nel @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.

Questa opzione evita la maggior parte dei 404 SEO classici legati al refactoring dei contenuti. Attivatela dall’installazione.

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 (summary o summary_large_image)
  • fb:app_id: Facebook App ID
Per le schede prodotto, il modulo usa automaticamente l’immagine principale della scheda.

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
  • Pinterest
  • 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
Nessuna validazione. Un errore di sintassi HTML può rompere il rendering della pagina. Testate in pre-produzione.

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
Uno score di 80+ è eccellente. Sotto 50, rivedete struttura e wording.

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" e decoding="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_time in 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_count decrescente)

GA4 / GTM non si inietta

  • Formato ID corretto?
  • Consent Mode v2: in modalità “denied” di default fino al consenso
  • Ispezionate l’head della pagina

robots.txt non cambia

  • File robots.txt statico nella radice? Eliminatelo.
  • URL amichevoli attivati?

Errore creazione tabelle SQL all’installazione

  • Utente MySQL con permessi CREATE e ALTER?
  • utf8mb4 con collation utf8mb4_unicode_ci supportato?
  • Prefisso tabelle oltre 5 caratteri? Contattate il supporto.

Riferimento tecnico

Hook utilizzati

18 hook:

  • displayHeader — Meta, Canonical, hreflang, OG, Twitter, JSON-LD, GA4/GTM
  • displayBeforeBodyClosingTag — GTM noscript, FB Pixel noscript, body-end
  • displayBackOfficeHeader — CSS/JS del back-office
  • displayAdminProductsExtra — metabox SEO
  • actionDispatcherBefore, actionDispatcherAfter — routing e cattura 404
  • actionObjectProductAddAfter, actionObjectProductUpdateAfter — auto-fill meta + auto-301
  • actionObjectCategoryAddAfter, actionObjectCategoryUpdateAfter
  • actionObjectCmsAddAfter, actionObjectCmsUpdateAfter
  • actionObjectManufacturerUpdateAfter, actionObjectSupplierUpdateAfter
  • actionAdminControllerSetMedia, actionFrontControllerSetMedia
  • displayProductExtraContent
  • moduleRoutes/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 meta
  • df_seo_template, df_seo_template_lang — template
  • df_seo_redirect — redirect
  • df_seo_404 — journal 404
  • df_seo_score — snapshot di score
  • df_seo_keyword — focus keyword
  • df_seo_robots_rule — regole robots.txt
  • df_seo_schema_custom — schemi JSON-LD personalizzati
  • df_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_%';
Prima della disinstallazione: usate Impostazioni → Manutenzione → Esporta tutti i dati (JSON).

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.
Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza