Michel Poulain Posted July 10, 2016 Share Posted July 10, 2016 Je cherchais une astuce pour lutter contre les paniers abandonnés. J'ai remarqué qu'après chaque mailing auprès de mes clients ayant un compte sur mon site, les paniers abandonnés augmentaient. J'ai un module de relance de paniers abandonnés, mais celui-ci ne fonctionne que si les visiteurs sont identifiés AVANT de quitter ma boutique. J'ai donc eu l'idée de fournir dans mon mailing, au lieu des traditionnels liens vers les pages produits mis en avant, des liens personnalisés qui provoquent l'identification automatique des clients. Les deux variables dans le lien sont sid et uid L'adresse email sid est codée en base64. J'ai rajouté un jeton de vérification le uid de Prestashop our éviter qu'un petit malin se fasse passer pour un autre client. Les liens vers les pages de ma boutique sont donc sur le modèle : http://www.maboutique.com/categorie/mon_produit.html?sid=XXXXXXXXXX&uid=XX Les variables sid et uid sont produites à partir de l'adresse email du client et de son ID Prestashop : $sid = base64_encode(trim(strtolower($email))); $uid = [ID Prestashop]; J'ai modifié le fichier «/index.php» à la racine gérant l'ensemble des pages : require(dirname(__FILE__).'/config/config.inc.php'); Dispatcher::getInstance()->dispatch(); En rajoutant des procédures de vérification, de redirection et d'identification : require(dirname(__FILE__).'/config/config.inc.php'); // Les variables d'identification uid et sid sont présentes ? if(isset($customer) && !$customer->id && isset($_REQUEST['uid']) && isset($_REQUEST['sid'])) { // Récupérer le client $customer = new Customer(); $customer->getByEmail(trim(base64_decode($_REQUEST['sid']))); // Le jeton de vérification est-il valide ? if(isset($customer->id) && $customer->id==$_REQUEST['uid']) { $ctx = Context::getContext(); $ctx->cookie->id_customer = (int)($customer->id); $ctx->cookie->customer_lastname = $customer->lastname; $ctx->cookie->customer_firstname = $customer->firstname; $ctx->cookie->logged = 1; $customer->logged = 1; // Récupération de l'ID guest // Guest::setNewGuest($ctx->cookie); $guest = new Guest(Guest::getFromCustomer($customer->id)); $guest->userAgent(); $guest->save(); $customer->id_guest = $guest->id; $ctx->cookie->id_guest = $guest->id; // Mise à jour de la dernière visite //$connection = new Connection();// Methode 1 //$connection->setPageConnection($ctx->cookie); //Connection::setPageConnection($ctx->cookie); // Methode 2 /* Db::getInstance()->insert('connections', array( 'id_guest' => (int)$customer->id_guest, 'id_page' => Page::getCurrentId(), 'ip_address' => (Tools::getRemoteAddr() ? (int)ip2long(Tools::getRemoteAddr()) : ''), 'id_shop' = Context::getContext()->shop->id, 'id_shop_group' = Context::getContext()->shop->id_shop_group, 'date_add' = date('Y-m-d H:i:s'), 'http_referer' => 'http://example.com/' ), false, true, Db::INSERT_IGNORE); */ $ctx->cookie->is_guest = $customer->isGuest(); $ctx->cookie->passwd = $customer->passwd; $ctx->cookie->email = $customer->email; $ctx->customer = $customer; $ctx->cookie->write(); header('Location: '.str_replace('uid=','nid=',$_SERVER['REQUEST_URI'])); exit; } } Dispatcher::getInstance()->dispatch(); Chaque client recevant mon mailing et cliquant sur un lien de sa lettre personnalisée est désormais automatiquement identifié sur ma boutique. Ses paniers abandonnés peuvent être relancés. J'espère que cette astuce aidera certains vendeurs. [Limitations : je n'arrive pas à faire fonctionner la mise à jour de la dernière visite. J'ai essayé (et désactivé) trois méthodes.] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now