Prestashop

FAQ

Soluzioni a domande e problemi comuni quando si utilizza Clerk con PrestaShop

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

Utilizzo dei formatter #

Clerk.js ti consente 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 viene inserito in tutte le pagine, dove è possibile aggiungere più formatter contemporaneamente.

Per PrestaShop, questo file contiene lo tracking-script:

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

Esempio di formatter #

Un esempio può essere visto qui sotto. Nota che questa è la 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 -->

Più formatter #

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;
  }
}

Uso 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 che necessiti.

Autenticazione HTTP #

L’autenticazione HTTP viene spesso utilizzata sui siti di staging per evitare visitatori indesiderati.

Questo blocca l’importatore Clerk e mostra un errore 401 Unauthorized nel registro di sincronizzazione.

Puoi risolvere 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

Errori comuni di sincronizzazione #

Nota: Si consiglia di aggiornare sempre il modulo all’ultima versione per ottenere tutte le funzionalità più 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’accesso 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 essere accessibile.

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

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 dargli accesso.

L’ultimo indirizzo IP può essere trovato qui.

Controlla anche che il tuo public key, private key e import URL siano corretti per lo store in cui operi all’interno di my.clerk.io.

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

In tal caso, inserisci il dominio completo specifico per lingua che vuoi sincronizzare nell’URL di importazione.

Cosa fare se ho già autorizzato ma l’errore persiste?

Sono possibili alcune situazioni in cui hai autorizzato l’indirizzo IP dell’importatore ma l’errore si verifica ancora.

In questi casi, ti consigliamo di verificare questi punti:

  • La parte di autenticazione nel corpo della richiesta può essere rimossa dal server dello shop.

  • Limite di velocità per il server riguarda Cloudflare.

  • Ricontrolla che l’URL dell’importatore abbia https incluso.

404 Not Found #

Questo errore si verifica se l’importatore non può accedere al link che invia i dati dal webshop.

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

  • Non installato affatto

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

Assicurati innanzitutto di aver installato correttamente il modulo.

In secondo luogo, svuota la cache del tuo webshop prima di provare una nuova importazione.

429 Too Many Requests #

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

Puoi risolverlo aumentando il limite di richieste del tuo server o impostando Page Size a un valore più alto in my.clerk.io > Data > Configuration. Una dimensione di pagina maggiore fa inviare all’importatore meno richieste, ma più grandi.

Se stai utilizzando il provider Byte.nl, l’importatore solitamente restituisce questo errore a causa del loro limitatore di velocità. In tal caso, contatta Byte.nl e chiedi loro di autorizzare lo User-Agent dell’importatore “clerk”.

500 Internal Server Error #

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

In questi casi, controlla il tuo Server Log per identificare quale processo si è bloccato e perché.

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

Se hai installato la Facebook Pixel App, è noto che possa causare l’errore 500.

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

Puoi anche provare ad attivare la Debug Mode in PrestaShop, che mostrerà il messaggio di errore esatto quando si verifica un errore 500.

ATTIVA SEMPRE la Debug Mode da FTP, per evitare di essere bloccato dal pannello di amministrazione di PrestaShop. Controlla come fare tramite FTP.

503 Service Unavailable #

Questo errore di solito è temporaneo e si verifica quando il server è troppo occupato per gestire la richiesta.

Prova di nuovo tra un po’ di tempo.

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

Controlla il carico del server per capire se è questo il caso.

520 Unknown Error #

Solitamente questo errore viene restituito da Cloudflare e spesso accade a causa di un collo di bottiglia in PrestaShop che causa problemi con dimensioni di pagina elevate.

Per risolvere, imposta Page Size a 50 ed esegui una nuova sincronizzazione.

Risposta non valida #

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

Questo spesso fa fallire la Data Sync, perché il pixel interferisce con i dati che Clerk dovrebbe ricevere da PrestaShop.

Risolvere questo problema è abbastanza semplice — è sufficiente apportare una piccola modifica a pspixel.php, il file che genera il pixel.

Di solito 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, intorno alla riga 196, è necessario inserire la seguente riga di codice all’interno della public function hookHeader($params):

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

Per supportare la nuova data-sync:

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

Salva il file pspixel.php modificato dopo aver aggiunto la condizione sopra.

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

Disattivare CCC #

CCC (Concatenate, Combine and Cache) è una funzionalità integrata di PrestaShop che consente di ridurre il numero di richieste del template e poi metterle in cache.

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

Se stai riscontrando errori di Data Sync, apri il backend PrestaShop e visita:

Advanced Parameters > Performance

Poi vai alla sezione chiamata:

CCC (Combine, Compress and Cache)

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

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

Aggiornamento a Clerk.js 2 #

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

Rende l’installazione di Clerk su qualsiasi webshop più facile.

Tuttavia, poiché le due versioni funzionano leggermente diversamente, è necessario seguire questi passaggi per effettuare l’aggiornamento correttamente.

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

Creare designs #

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

Puoi creare i tuoi Designs Clerk.js 2 in uno di questi modi:

Opzione Design Editor #

  1. Vai su my.clerk.io > Recommendations/Search > Designs > New Design.

  2. Nella schermata seguente, assegna un Nome al tuo Design (consigliamo di aggiungere “V2” così è evidente che stai usando Clerk.js 2).

  3. Scegli Design Type.

  4. Quando hai terminato, clicca su Create Design.

  5. Nel Design Editor, clicca su uno degli elementi esistenti come nome, immagine, pulsante, ecc. per modificarlo, oppure trascina nuovi elementi nel Design per aggiungere più informazioni sui prodotti.

  6. Clicca Save Design quando hai finito e vai a Step 2 della guida.

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

  8. Clicca Update Element. Questo li farà temporaneamente sparire dal tuo webshop finché non hai terminato lo Step 2. Scegli il nuovo Design per tutti gli elementi da aggiornare.

Ora sei pronto per passare a Clerk.js 2.

Aggiornare il modulo #

ATTENZIONE: Ricorda di fare il backup di tutti i file modificati, perché verranno sovrascritti.

Inizia scaricando l’ultima versione da questo link:

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

Accedi quindi al tuo PrestaShop admin e vai su Modules And Services > Modules And Services.

In questa pagina, procedi così:

  1. Clicca su Add New Module.

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

  3. Clicca su Upload this module.

PrestaShop ora visualizzerà un messaggio di successo che conferma che il modulo è stato aggiornato.

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

La documentazione completa per Clerk.js 2 è disponibile qui:

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

Gestione di require.js #

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

In alcune configurazioni, Require.js impedisce il caricamento di Clerk.js, il che significa che nessun slider o risultato di ricerca verrà mostrato.

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

Uncaught ReferenceError: Clerk is not defined

Ci sono due modi per gestire Require.js. Entrambi richiedono di apportare modifiche allo tracking-script in questo file:

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

Includere in Require.js #

Il modo migliore è cercare di far riconoscere Clerk a Require.js.

Inserisci require(['clerk'], function() {}); alla fine dello script di tracking.

Ignorare Require.js #

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

Inserisci window.__clerk_ignore_requirejs = true; all’inizio dello script di tracking.

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

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