Prestashop

FAQ

Soluzioni a domande e problemi comuni durante l'utilizzo di Clerk con PrestaShop

Stai riscontrando problemi con la tua integrazione PrestaShop? Questa FAQ copre i problemi più comuni e le loro soluzioni, dai formatter agli errori di sincronizzazione.

Utilizzo dei formatter #

Clerk.js ti permette di scrivere funzioni JavaScript personalizzate che aggiungono nuove funzionalità ai tuoi Designs.

I formatter possono essere aggiunti in due modi:

  • Tramite my.clerk.io > Developers > Formatters, dove ogni Formatter può essere creato come voce separata.

  • Come configurazione per Clerk.js, nello tracking-script che è inserito in tutte le pagine, dove possono essere aggiunti più formatter contemporaneamente.

Per PrestaShop, questo file contiene lo tracking-script:

modules->clerk->views->templates->hook->clerk_js.tpl

Esempio di formatter #

Un esempio è visibile qui sotto. Nota che si tratta di Clerk V2 (ultima versione):

<!-- Start of Clerk.io E-commerce Personalisation tool - www.clerk.io -->
<script type="text/javascript">
  (function(w,d){
    var e=d.createElement('script');e.type='text/javascript';e.async=true;
    e.src='https://cdn.clerk.io/clerk.js';
    var s=d.getElementsByTagName('script')[0];s.parentNode.insertBefore(e,s);
    w.__clerk_q=w.__clerk_q||[];w.Clerk=w.Clerk||function(){ w.__clerk_q.push(arguments) };
  })(window,document);

  Clerk('config', {
        key: '{$clerk_public_key}',
        collect_email: {$clerk_datasync_collect_emails},
        language: '{$language}',
        formatters: {
             log_price: function(price) {
             console.log(price);
          }
      },
    });
</script>
<!-- End of Clerk.io E-commerce Personalisation tool - www.clerk.io -->

Formatter multipli #

Puoi scrivere qualsiasi numero di Formatters, separati da virgola:

formatters: {
  log_price: function(price) {
    console.log(price);
  },
  calculate_discount: function(price, special_price) {
    return price - special_price;
  },
  substring: function(text) {
    var short_string = text.substring(0, 20);
    return short_string;
  }
}

Utilizzo nei designs #

Dopo aver creato i tuoi Formatters, puoi usarli nei tuoi Designs usando questa sintassi:

{% raw %}{{ price | log_price }} {{ price | calculate_discount | special_price }}{% endraw %}

Questo ti permette di creare qualsiasi funzionalità nei tuoi Designs di cui hai bisogno.

Autenticazione HTTP #

L’autenticazione HTTP è spesso usata su siti di staging per evitare visite indesiderate.

Questo bloccherà l’importatore Clerk e mostrerà un errore 401 Unauthorized nel registro di sincronizzazione.

Puoi risolvere il problema inserendo le informazioni di autenticazione nell’URL di importazione.

In my.clerk.io > Data > Configuration, aggiorna il tuo URL di importazione in questo modo:

https://USER:PASS@www.ewoksRus.com
HTTP authentication in import URL

Errori comuni di sincronizzazione #

Nota: Si consiglia sempre di aggiornare il modulo alla versione più recente per ottenere tutte le funzionalità aggiornate da Clerk.

Quando importi dati con il modulo PrestaShop di Clerk, il server del tuo webshop è responsabile dell’invio dei dati di prodotto, categoria e vendite a Clerk.

Tuttavia, in alcuni casi, la configurazione del server potrebbe bloccare l’importazione dall’accedere ai dati, causando un errore in Data Sync.

Di seguito è riportato un elenco degli errori più comuni e come risolverli.

401 Unauthorized #

Questo errore si verifica se il tuo webshop o ambiente di sviluppo richiede l’autenticazione HTTP per accedervi.

Si risolve inserendo Username e Password come parte dell’Import URL:

http://username:password@prestashop.clerk.io/clerk/api/store/1

403 Forbidden #

Questo errore si verifica se il tuo server blocca l’importatore dall’accedervi.

Nella maggior parte dei casi, è sufficiente autorizzare l’indirizzo IP dell’importatore per consentirgli l’accesso.

L’IP più recente può essere trovato qui.

Verifica anche che la tua public key, private key e import URL siano corrette per lo store su cui stai operando all’interno di my.clerk.io.

In alcuni casi, questo errore viene mostrato anche se utilizzi domini per lingua diversi, come http://webshop.com/it.

In questo caso, assicurati di includere il dominio completo che vuoi sincronizzare:

Language domain configuration

Cosa fare se ho già autorizzato ma l’errore si presenta ancora?

Ci sono alcune situazioni in cui hai già autorizzato l’IP dell’importatore, ma l’errore persiste.

In questi casi, ti consigliamo di analizzare questi aspetti:

  • La parte di autenticazione del body potrebbe essere rimossa dalla richiesta dal server del negozio.

  • Limite di richieste per il server in relazione a Cloudflare.

  • Controlla attentamente se l’URL dell’importatore include https.

404 Not Found #

Questo errore si verifica se l’importatore non riesce ad accedere al link che invia dati dal webshop.

Nella maggior parte dei casi, succede perché il modulo è:

  • Non installato del tutto

  • Una cache fa sì che il link non venga inizializzato

Prima di tutto, assicurati di aver installato correttamente il modulo.

Poi, svuota la cache del tuo webshop prima di provare una nuova importazione.

429 Too Many Requests #

Questo errore si verifica se il tuo server nega l’accesso all’importatore a causa di troppe richieste in arrivo.

Puoi risolverlo impostando un limite di richieste più alto per il tuo server oppure impostando il Page Size a un valore maggiore in my.clerk.io > Data > Configuration, facendo sì che l’importatore effettui meno richieste, ma più grandi:

Page size configuration

Se utilizzi il provider Byte.nl, l’importatore solitamente restituisce questo errore a causa del loro rate limiter. In questo caso, contatta Byte.nl e chiedi loro di autorizzare l’User-Agent dell’importatore “clerk”.

500 Internal Server Error #

Questo errore significa che il tuo server ha riscontrato un errore interno e non è stato in grado di specificare quale errore si sia verificato.

In questi casi, controlla il tuo Server Log per identificare quale processo è andato in crash e perché.

Nella maggior parte dei casi, è semplicemente a causa di un prodotto con un attributo non valido, o di una funzione chiamata in modo errato nel webshop.

Se hai installato la Facebook Pixel App, è noto che questa provochi un errore 500.

Prova a disattivare l’app e avvia una nuova sincronizzazione. Se poi funziona, lascia l’app disattivata e copia manualmente il Facebook Pixel nel file principale del tuo tema.

Puoi anche provare ad attivare la Modalità Debug in PrestaShop, che stamperà il messaggio di errore esatto quando otterrai un errore 500.

ATTIVA SEMPRE la Modalità Debug da FTP, per evitare di rimanere potenzialmente bloccato fuori dal pannello Admin di PrestaShop. Guarda come farlo tramite FTP.

503 Service Unavailable #

Questo errore è solitamente temporaneo e causato dal server troppo occupato per gestire la richiesta.

Riprova dopo un po’.

Se il problema continua a verificarsi, potrebbe significare che il server è sovraccarico di processi e vicino alla capacità massima.

Controlla il carico del server per verificare se è così.

520 Unknown Error #

Di solito questo errore viene restituito da Cloudflare, e spesso si verifica a causa di un collo di bottiglia in PrestaShop che causa problemi con Page Size elevati.

Per risolverlo, imposta il Page Size a 50 ed esegui una nuova sincronizzazione:

Page size set to 50

Risposta non valida #

Questo errore spesso è causato dall’utilizzo del Facebook Pixel Module, che inserisce un pixel in cima a tutti i file in PrestaShop.

Questo spesso porta al fallimento della Data Sync, perché il pixel interferisce con i dati che Clerk dovrebbe ricevere da PrestaShop.

Risolvere questo problema è piuttosto semplice: devi solo fare una piccola modifica a pspixel.php, il file che genera il pixel.

Spesso si trova in uno dei seguenti 4 percorsi:

  • /modules/pspixel/pspixel.php

  • /modules/alcapixel/alcapixel.php

  • /modules/facebookpixel/facebookpixel.php

  • /modules/canonicalseo/canonicalseo.php

Nel file, attorno alla linea 196, devi inserire la seguente riga di codice all’interno di public function hookHeader($params):

if (strpos($_SERVER['REQUEST_URI'], '/module/clerk/') !== false) {
    return;
}

Per supportare i nuovi data-sync:

if (Tools::getValue('module') == 'clerk') {
    return;
}

Alla fine, il file dovrebbe apparire così:

Facebook Pixel code modification

Questo rimuoverà il pixel specificatamente dai link che Clerk utilizza per importare i dati da PrestaShop.

Disattivazione del CCC #

CCC (Concatenate, Combina e Cache) è una funzionalità integrata in PrestaShop che permette di ridurre il numero di richieste del tuo template e poi di memorizzarle in cache.

A volte questa funzionalità può interferire con il nostro Data Sync e bloccarlo.

Se stai riscontrando errori di Data Sync, accedi al backend di PrestaShop e vai su:

Advanced Parameters > Performance

Quindi vai alla sezione chiamata:

CCC (Combine, Compress and Cache)
CCC settings in PrestaShop

Disattiva tutte le sue sotto-funzionalità, poi salva, svuota la cache di PrestaShop e divertiti!

P.S: Puoi ottenere lo stesso livello di compressione dei dati—e quindi prestazioni di caricamento pagina—utilizzando un CDN o un modulo PrestaShop dedicato che applica la stessa compressione e combinazione di librerie.

Aggiornamento a Clerk.js 2 #

Clerk.js 2 è una versione più veloce e flessibile della nostra libreria JavaScript.

Rende più semplice installare Clerk su qualsiasi webshop.

Tuttavia, poiché le due versioni funzionano in modo leggermente diverso, devi seguire questi passaggi per aggiornare con successo.

Le due principali differenze in Clerk.js 2 sono che i Designs in my.clerk.io utilizzano il linguaggio di template Liquid, ma possono anche essere facilmente creati usando il Design Editor.

Creare i designs #

Poiché Clerk.js 2 ha un approccio diverso ai Designs, devi crearne di nuovi.

Puoi creare i tuoi Designs per Clerk.js 2 in due modi:

Opzione Design Editor #

  1. Vai su my.clerk.io > Recommendations/Search > Designs > New Design.
New design in Clerk
  1. Nella schermata successiva, dai al tuo Design un Nome (consigliamo di aggiungere “V2” così è evidente che stai usando Clerk.js 2).

  2. Scegli il Tipo di Design.

  3. Quando hai finito, clicca su Create Design.

Create design button
  1. Nel Design Editor, clicca su uno degli elementi esistenti come nome, immagine, pulsante, ecc. per modificarlo, oppure trascina e rilascia nuovi elementi sul Design per aggiungere maggiori informazioni sui prodotti.

  2. Clicca su Save Design quando hai finito, e passa a Step 2 della guida.

Design Editor interface
  1. Vai su Recommendations/Search > Elements e cambia il tuo Element Clerk per usare il nuovo Design.

  2. Clicca su Update Element. Questo farà sì che temporaneamente non vengano mostrati sul tuo webshop fino a quando non completi Step 2. Seleziona il nuovo Design per tutti gli Element che devono essere aggiornati.

Update content with new design

Ora sei pronto per passare a Clerk.js 2.

Aggiornamento del modulo #

ATTENZIONE: ricordati di fare il backup di tutti i file modificati, poiché verranno sovrascritti.

Inizia scaricando l’ultima versione da questo link:

https://github.com/clerkio/clerk-prestashop/releases/latest

Download latest PrestaShop module

Poi accedi al tuo admin di PrestaShop e vai su Modules And Services > Modules And Services.

Modules and Services in PrestaShop

In questa pagina, fai quanto segue:

  1. Clicca su Add New Module.

  2. Clicca su Choose a file e carica il file clerk.zip che hai appena scaricato.

  3. Clicca su Upload this module.

Upload module in PrestaShop

PrestaShop ora mostrerà un messaggio di successo, confermando che il modulo è stato aggiornato.

Ora hai installato l’ultima versione di Clerk per PrestaShop e Clerk.js 2 è attivo sul tuo webshop!

La documentazione completa di Clerk.js 2 si trova qui:

https://docs.clerk.io/docs/clerkjs-quick-start

Gestione di require.js #

Questa guida si applica solo quando utilizzi fino alla versione v.4.4.1 dell’estensione Clerk per PrestaShop.

In alcune configurazioni, Require.js impedisce il caricamento di Clerk.js, il che significa che non verranno mostrati slider o risultati di ricerca.

Quando ciò accade, nel console verrà mostrato il seguente errore:

Uncaught ReferenceError: Clerk is not defined

Ci sono due modi per gestire Require.js. Entrambi gli approcci richiedono di modificare lo tracking-script in questo file:

modules->clerk->views->hook->visitor_tracking.tpl

Includere in Require.js #

L’approccio migliore è provare a far riconoscere Clerk a Require.js.

Puoi farlo inserendo require(['clerk'], function() {}); in fondo allo tracking script:

Include clerk in Require.js

Ignorare Require.js #

Se la soluzione precedente non funziona, è possibile ignorare Require.js.

Puoi farlo inserendo window.__clerk_ignore_requirejs = true; all’inizio dello tracking script:

Ignore Require.js

Dopo aver usato uno di questi approcci, Require.js sarà ora compatibile con Clerk.

Questa pagina è stata tradotta da un'utile intelligenza artificiale, quindi potrebbero esserci errori linguistici. Grazie per la comprensione.