Home>Guide>Inviare una notifica quando un cliente si registra su PrestaShop

Inviare una notifica quando un cliente si registra su PrestaShop


Inviare una notifica quando un cliente si registra su PrestaShop

Spesso può risultare utile sapere quando un nuovo cliente si registra sul tuo e-commerce, ma purtroppo PrestaShop non fornisce questa possibilità. Ma questo non vuol dire assolutamente rinunciare a questa funzionalità!

Ecco una guida che ti indica passo dopo passo come ampliare il tuo e-commerce con questa feature.

  • Leggi l'articolo, ti bastano solo 2 minuti, 28 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!
La guida fa riferimento alle versioni 1.6.x di PrestaShop, precedenti rispetto all'attuale v1.7.x.

La logica

La prima cosa da fare, è capire qual è il modo migliore. Chi conosce PrestaShop da tempo, ma anche chi lo ha utilizzato solo qualche volta, sa che ogni qualvolta che un cliente si registra, gli viene inviata una email di benvenuto come questa:

Viene da pensare: “Bene, se quando un cliente si registra PrestaShop invia una mail, non bisogna far altro che fargliene inviare un’altra!”. In effetti è così, la soluzione più semplice è comprendere dove viene effettuato l’invio dell’email di benvenuto e provvedere ad inviarne una seconda, questa volta però avente come destinatario l’admin del negozio.

Semplice a dirsi, ma in pratica?


La classe AuthController

La classe che si occupa di gestire la creazione di un nuovo profilo cliente a seguito di una registrazione, è AuthController, che puoi trovare nella cartella di PrestaShop dedicata appunto ad ospitare le classi che fungono da controllers:

controllers/front/AuthController.php

In questa classe, è presente il metodo che fa al nostro caso, vale a dire sendConfirmationMail(), che si occupa di inviare la famosa email di benvenuto discussa in precedenza.

Come sempre, è buona norma non modificare mai direttamente i files del core di PrestaShop, così da conservare l’integrità delle modifiche in caso di aggiornamenti e quindi procediamo utilizzando il comodo e semplice sistema di override su cui PrestaShop si basa: crea un nuovo file chiamato AuthController.php e posizionalo nella cartella:

override/controllers/front/

inserendo al suo interno:

<?php

class AuthController extends AuthControllerCore {

    protected function sendConfirmationMail( Customer $customer ) {
        if ( ! Configuration::get( 'PS_CUSTOMER_CREATION_EMAIL' ) ) {
            return true;
        }

        Mail::Send(
            Configuration::get( 'PS_LANG_DEFAULT' ),
            'account',
            Mail::l( 'New client registration!' ),
            array(
                '{firstname}'   => $customer->firstname,
                '{lastname}'    => $customer->lastname,
                '{email}'       => $customer->email,
                '{passwd}'      => Tools::getValue( 'passwd' )
            ),
            Configuration::get( 'PS_SHOP_EMAIL' ),
            Configuration::get( 'PS_SHOP_NAME' )
        );

        return Mail::Send(
            $this->context->language->id,
            'account',
            Mail::l( 'Welcome!' ),
            array(
                '{firstname}'   => $customer->firstname,
                '{lastname}'    => $customer->lastname,
                '{email}'       => $customer->email,
                '{passwd}'      => Tools::getValue( 'passwd' )
            ),
            $customer->email,
            $customer->firstname . ' ' . $customer->lastname
        );
    }
    
}

Forse qualcuno sarà un po’ confuso, vero? Facciamo un po’ di chiarezza: dando un’occhiata al metodo sendConfirmationMail originale, noterai subito che a parte il codice delle righe 10-22 evidenziate, la funzione è esattamente la stessa!

Sì, è così, in effetti non dobbiamo modificare il comportamento di default, che invia una email di benvenuto ai nuovi clienti, ma estenderne la funzionalità per spedire una seconda notifica email. E per farlo, abbiamo utilizzato lo stesso metodo statico Mail::Send(), leggermente modificato.

Il metodo Mail::Send(), come vedi, utilizza sei parametri:

  • $id_lang: il codice ID della lingua desiderata, utile in caso di negozi multilingue. Nell’esempio, utilizziamo la lingua predefinita dell’admin, contenuta nella variabile di configurazione PS_LANG_DEFAULT prelevata per mezzo del metodo Configuration::get() .
  • $template: il nome (senza estensione) del file di template delle email che dovrà essere spedito. Nell’esempio, account.
  • $subject: l’oggetto dell’email. Nell’esempio, New client registration! (passato alla funzione Mail::l() per rendere la stringa traducibile).
  • $template_vars: un array contenente le eventuali variabili da passare al template e che verranno stampate nell’email.
  • $to: l’indirizzo che riceverà l’email, che nel nostro caso è ovviamente l’email dell’admin del negozio, contenuto nella variabile di configurazione PS_SHOP_EMAIL prelevata per mezzo del metodo Configuration::get().
  • $to_name: il nome del destinatario dell’email. Come per l’indirizzo email, prendiamo il valore dalla variabile di configurazione PS_SHOP_NAME che contiene il nome del negozio.

Il metodo Mail::Send() accetta anche ulteriori parametri, non utili al nostro esempio, ma che consiglio di approfondire. Per prenderne visione, trovi la dichiarazione del metodo nella classe Mail nel file:

classes/Mail.php

Credi sia finita qui? Non ancora, un po’ di pazienza, ci siamo quasi!


Creare il template dell'email

Ovviamente è necessario avere a disposizione un template da utilizzare per generare l’email che viene spedita dal metodo appena creato.

Se non hai particolari necessità, puoi farti recapitare una copia esatta della email di benvenuto che riceve il nuovo cliente. Nell’esempio, infatti, noterai che i due utilizzi della funzione Mail::Send() variano soltanto nell’oggetto (3° parametro) e nell’indirizzo email e nome del destinatario (5° e 6° parametro) e PrestaShop utilizzerà il template account come email da inviare all’admin.

E se invece volessi avere un template dedicato da inviare all’admin come notifica di avvenuta iscrizione di un nuovo utente? Semplice! Ti basta modificare il nome del template (2° parametro) utilizzando ad esempio account_registration_notify e modificare l’array delle variabili utilizzate dal file di template (4° parametro): nel nostro caso, ad esempio, non ci occorre sapere la password dell’utente! Ecco quindi come diventa la nuova funzione:

<?php

class AuthController extends AuthControllerCore {

    protected function sendConfirmationMail( Customer $customer ) {
        if ( ! Configuration::get( 'PS_CUSTOMER_CREATION_EMAIL' ) ) {
            return true;
        }

        Mail::Send(
            Configuration::get( 'PS_LANG_DEFAULT' ),
            'account_registration_notify',
            Mail::l( 'New client registration!' ),
            array(
                '{firstname}'   => $customer->firstname,
                '{lastname}'    => $customer->lastname,
                '{email}'       => $customer->email
            ),
            Configuration::get( 'PS_SHOP_EMAIL' ),
            Configuration::get( 'PS_SHOP_NAME' )
        );

        return Mail::Send(
            $this->context->language->id,
            'account',
            Mail::l( 'Welcome!' ),
            array(
                '{firstname}'   => $customer->firstname,
                '{lastname}'    => $customer->lastname,
                '{email}'       => $customer->email,
                '{passwd}'      => Tools::getValue( 'passwd' )
            ),
            $customer->email,
            $customer->firstname . ' ' . $customer->lastname
        );
    }
    
}

Ma un attimo! Non esiste un template con quel nome, è necessario crearlo.

La via più semplice è copiare i files account.html e account.txt presenti nella cartella:

mails/it/

(dove IT è l’identificativo della lingua predefinita utilizzata nell’admin) e rinominare le copie in account_registration_notify.html e account_registration_notify.txt.

Adesso non ti resta che modificare a tuo piacimento i due templates (il file con estensione HMTL è utilizzato per le email appunto in formato html, quello TXT per le email in formato testo), eccone un esempio:


Ricostruiamo la cache delle classi

Tieni sempre a mente che ogni qual volta crei manualmente l’override di una classe di PrestaShop, bisogna far ricostruire la cache delle classi utilizzate. Per farlo, è necessario rimuovere il file:

cache/class_index.php

Ed ecco pronto il tuo nuovo sistema di notifica della registrazione di un nuovo cliente in PrestaShop!



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Disabilitare il Cron di WordPress

Disabilitare il Cron di WordPress


Ecco un piccolo trucchetto per risparmiare risorse, velocizzare il tuo sito e diminuire i tempi di caricamento delle pagine, migliorando ed ottimizzando il servizio Cron di WordPress.

Come ottimizzare e riparare il database di WordPress

Come ottimizzare e riparare il database di WordPress


Scopri come migliorare le performance del tuo sito WordPress ottimizzando il database e riparandone gli eventuali errori.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)