lderome Posted April 9, 2015 Share Posted April 9, 2015 Bonjour à tous, J'ai créé un prestashop en multi-boutique avec partage de clients. Mais lorsqu'un client se connecte sur la boutique A, je souhaiterais qu'il n'ai pas besoin de se reconnecter sur la boutique B. Qu'il soit connecté des deux côtés. Que le partage de cookie se fasse entre les deux boutique ? Avez-vous une idée ? Merci d'avance ! Link to comment Share on other sites More sharing options...
Myst26 Posted April 14, 2015 Share Posted April 14, 2015 (edited) Bonjour, j'ai le même besoin. Pour PS 1.6.X cela se passe dans le fichier config/config.inc.php à la ligne 151. if ($context->shop->getGroup()->share_order) $cookie = new Cookie('ps-sg'.$context->shop->getGroup()->id, '', $cookie_lifetime, $context->shop->getUrlsSharedCart(), false, $force_ssl); else { $domains = null; if ($context->shop->domain != $context->shop->domain_ssl) $domains = array($context->shop->domain_ssl, $context->shop->domain); $cookie = new Cookie('ps-s'.$context->shop->id, '', $cookie_lifetime, $domains, false, $force_ssl); } On voit que le partage de Cookie se fait que si le mode partage de commande est actif dans un group de boutique. j'ai rajouté ce bout de code en elsefi elseif($context->shop->getGroup()->share_customer) $cookie = new Cookie('ps-sgc'.$context->shop->getGroup()->id, '', $cookie_lifetime, $context->shop->getUrlsSharedGroup(), false, $force_ssl); j'ai reécris une function qui renvoie l'ID des boutiques du groupe en question : public function getUrlsSharedGroup() { if (!$this->getGroup()->share_customer) return false; $query = new DbQuery(); $query->select('domain'); $query->from('shop_url'); $query->where('main = 1'); $query->where('active = 1'); $query .= $this->addSqlRestrictionOverride(Shop::SHARE_CUSTOMER); $domains = array(); foreach (Db::getInstance()->executeS($query) as $row) $domains[] = $row['domain']; return $domains; } /** * Add an sql restriction for shops fields * * @param int $share If false, dont check share datas from group. Else can take a Shop::SHARE_* constant value * @param string $alias */ public static function addSqlRestrictionOverride($share = false, $alias = null) { if ($alias) $alias .= '.'; $group = Shop::getGroupFromShop(Shop::getContextShopID(), false); /*if ($share == Shop::SHARE_CUSTOMER && Shop::getContext() == Shop::CONTEXT_SHOP && $group['share_customer']) $restriction = ' AND '.$alias.'id_shop_group = '.(int)Shop::getContextShopGroupID(); else*/ $restriction = ' AND '.$alias.'id_shop IN ('.implode(', ', Shop::getContextListShopID($share)).') '; return $restriction; } Cela fonctionne, mais je n'ai pas pu test en profondeur. Merci de me retourner les problèmes. Je suis en debuggage de ceci... Si quelqu'un peut contribuer, ca serait sympa ++ Edited April 14, 2015 by Myst26 (see edit history) Link to comment Share on other sites More sharing options...
lderome Posted April 19, 2015 Author Share Posted April 19, 2015 Merci pour ta réponse ! Peux-tu me dire ou je place les deux suites de codes ? Thanks ! Link to comment Share on other sites More sharing options...
Myst26 Posted April 20, 2015 Share Posted April 20, 2015 Après des tests plus approfondi, le panier reste le même pour les deux boutiques. j'ai donc opté pour un autre moyen. Il faut faut tout d'abord partager le compte des clients dans le groupe des boutiques. Ensuite, il faut rajouter ce code code dans un fichier .js $("#login_form").submit(function(e) { e.preventDefault(); var $form = $(this); email= $form.find("input[name='email']").val(); passwd = $form.find("input[name='passwd']").val(); $.ajax({ type: 'POST', //url: baseDir + 'index.php?controller=authentication', url: url_to_first_shop+'/index.php?controller=authentication', data: { 'SubmitLogin_x': 'SubmitLogin', 'ajax': true, 'passwd' : passwd, 'email' : email }, dataType: 'json', success: function(json) { } }); $.ajax({ type: 'POST', url:url_to_second_shop+'/index.php?controller=authentication', data: { 'SubmitLogin_x': 'SubmitLogin', 'ajax': true, 'passwd' : passwd, 'email' : email }, dataType: 'json', success: function(json) { } }); }); Link to comment Share on other sites More sharing options...
lderome Posted April 20, 2015 Author Share Posted April 20, 2015 Merci beaucoup ! Dans un fichier js, je le nomme comment ? Ou doit-il etre ? Merci beaucoup Link to comment Share on other sites More sharing options...
Myst26 Posted April 20, 2015 Share Posted April 20, 2015 Peu importe son nom. vous le mettez dans le sous dossier autoload du dossier js. il se chargera tt seul. 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