hervehh Posted March 25, 2011 Share Posted March 25, 2011 Bonjour à tous,A force d'utiliser ma boutique et de faire des simulations en tant que client, je me suis aperçu d'une chose:Je suis sur la page d'un produit, je mets ce produit au panier (je l'achète), j'ai besoin de me logguer pour une raison X, une fois loggué j'arrive sur le menu de mon compte au lieu de retourner sur la page produit où j'étais.Sachant que j'ai mis X minutes à trouver ce produit, je ne sais plus comment y retourner...comment faire pour que le log se fasse comme un "span" en apparté.une fois loggué je reviens sur la page où j' étais ?merci de vos réponses. Link to comment Share on other sites More sharing options...
jherbaux Posted March 25, 2011 Share Posted March 25, 2011 a vérifier, mais dans authentification.php normalement à la fin de l’authentification tu as un tool::redirect($back)a toi de voir comment récupérer la dernière page vu et de la rendre à $backSi c'est juste les produits, tu as dans la bdd une table qui enregistre ton dernier produit vu Link to comment Share on other sites More sharing options...
hervehh Posted March 25, 2011 Author Share Posted March 25, 2011 merci pour la réponse,ça parait pas compliqué mais le authentification.php est bourré de lien redirect qui vont tous vers my-account, ne faudrait il pas en changer un (ou tous) et il y a aussi une fonction Back mais je ne vois pas à quoi elle sert et si je peux l'utiliser... Link to comment Share on other sites More sharing options...
jherbaux Posted March 25, 2011 Share Posted March 25, 2011 de mémoire c'est le dernier redirect de la partie : if (Tools::isSubmit('submitAccount')) peut après le mail::sendje n'ai pas de fonction back dans ma version. tu peux coller le code ?Ne change pas tous les lien. Certains sont important ^^ Link to comment Share on other sites More sharing options...
hervehh Posted March 25, 2011 Author Share Posted March 25, 2011 voici la partie dont tu me parles, mais après ... mysteres du php... if (Tools::isSubmit('SubmitLogin')) { $passwd = trim(Tools::getValue('passwd')); $email = trim(Tools::getValue('email')); if (empty($email)) $errors[] = Tools::displayError('e-mail address is required'); elseif (!Validate::isEmail($email)) $errors[] = Tools::displayError('invalid e-mail address'); elseif (empty($passwd)) $errors[] = Tools::displayError('password is required'); elseif (Tools::strlen($passwd) > 32) $errors[] = Tools::displayError('password is too long'); elseif (!Validate::isPasswd($passwd)) $errors[] = Tools::displayError('invalid password'); else { $customer = new Customer(); $authentication = $customer->getByEmail(trim($email), trim($passwd)); /* Handle brute force attacks */ sleep(1); if (!$authentication OR !$customer->id) $errors[] = Tools::displayError('authentication failed'); else { $cookie->id_customer = intval($customer->id); $cookie->customer_lastname = $customer->lastname; $cookie->customer_firstname = $customer->firstname; $cookie->logged = 1; $cookie->passwd = $customer->passwd; $cookie->email = $customer->email; if (Configuration::get('PS_CART_FOLLOWING') AND (empty($cookie->id_cart) OR Cart::getNbProducts($cookie->id_cart) == 0)) $cookie->id_cart = intval(Cart::lastNoneOrderedCart(intval($customer->id))); Module::hookExec('authentication'); if ($back = Tools::getValue('back')) Tools::redirect($back); Tools::redirect('my-account.php'); } } } merci de ton aide Link to comment Share on other sites More sharing options...
jherbaux Posted March 25, 2011 Share Posted March 25, 2011 C'est cette partie qui est concerné : if ($back = Tools::getValue('back')) Tools::redirect($back); Tools::redirect('my-account.php'); rapidement,1er ligne, on récupére la valeur contenu dans back (ici une $_GET), on l'assigne = $back.Si tous c'est bien passé, on redirige vers cette URL Sinon (si sa existe pas ou que sa n'a pas marché ) on redirige vers my-account.phpCe que tu dois faire :récupérer le dernier produit visiter (regarde du coté de la variable $cookie je crois qu'il y a un last_visited mais je ne suis pus sur)construire le lien avec le produit (new product(intval($blabla_de_lid_du_produit)))et le mettre à la place de $backpuis faire le tool:redirect($back)Bon courage,bon week-end Link to comment Share on other sites More sharing options...
hervehh Posted March 25, 2011 Author Share Posted March 25, 2011 Merci, j'ai suivi ton résonnement mais il y a qqe chose qui m'intrigue, tu me dis "si tout c'est bien pass'e, on redirige vers cette url, sinon vers my-account...mais moi à chaque fois que je me logue (tout se passe bien) et ça me dirige d'office vers my account... jamais je n'ai eu la possibilite d'être redirigé sur une autre page...je vais faire des tests et te dirai lundi como va.merci Link to comment Share on other sites More sharing options...
jherbaux Posted March 28, 2011 Share Posted March 28, 2011 tu peux mettre un exit($back); avant Tools::redirect($back); pour voir si la valeur de back est la bonne et n'est pas nul.Bon courage Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 A mon sens tu dois intervenir sur blockuserinfo.tpl , en insérant la page actuelle dans un champ hidden , pour qu'elle soit transmise à my-account.php : > </pre> <ul> {l s='Welcome' mod='blockuserinfo'}, {if $logged} {$customerName} ({l s='Log out' mod='blockuserinfo'}) {else} <input type="hidden" name="back" value="{$request_uri}"/> {l s='Log in' mod='blockuserinfo'} {/if} Ensuite il faut tweaker my-account.php car il ne prend pas $back en compte, contrairement à authentication.php <?php /* SSL Management */ $useSSL = true; include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); if (!$back = Tools::getValue('back')) $back = 'my-account.php'; if (!$cookie->isLogged()){ Tools::redirect('authentication.php?back='.$back); } Je n'ai pas testé , mais il y a des chances que celà fonctionne Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 Merci Broceliande,j'ai fait la modif mais juste après m'Être loggué, je tombe comme d'hab directement sur le menu de my-account.php avec l'historique, les remboursements, etc... au lieu de retouner vers la page de l'article ou j'etais avant de me logguer (je ne sais même plus si j'écris bien "logguer" enfin je vais essayer la modif de jherbaux au cas où.sinon ne faudrait il pas changer :if (!$back = Tools::getValue('back')) $back = 'my-account.php';if (!$cookie->isLogged()){ Tools::redirect('authentication.php?back='.$back);le my-account.php par autre chose pour qu'il retourne en arriere (que je reste loggué mais que je revienne sur la page ou j'etais ?). Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 En essayant la modif de jherbaux, quand je valide mon email + mdp pour me logguer j'arrive sur une page blanche avec en haut a gauche écrit: my-account.phpvoilà, pas simple... Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 oui forcément je me suis gourré dans blockuserinfo.tpl, car c'est un lien et non un formulaire, donc mon hidden ne sert à rien, il faut plutôt : {if $logged} {$customerName} ({l s='Log out' mod='blockuserinfo'}) {else} {l s='Log in' mod='blockuserinfo'} {/if} Avec ça et la modif suivante dans my-account.php : <?php /* SSL Management */ $useSSL = true; include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); if (!$cookie->isLogged()) { if (!$back = Tools::getValue('back')) { Tools::redirect('authentication.php?back=my-account.php'); } else Tools::redirect('authentication.php?back='.$back); } On a bien le redirect au final traîté par authentication, mais hélas , il manque un truc à ce stade , je te laisse constater par toi même....On perd au moment de la redirection final la partie qui vient avant la 'request_uri'Si je trouve 5mn , je testerais , mais là déja ton back arrive jusqu'au bout. Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 Bon ben hervehh , le / en début de l'url retournée par $request_uri pose pb , il faut l'enlever ... je cherche la fonction smarty kivabien , car $request_uri |replace:'/':'' fonctionne bien sur les urls simples mais pas si on est dans un sous dossier... Je fouille ça et je te donne un code 100% fonctionnel Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 merci beaucoup Broceliande, que ne ferai-je pas sans ton aide... Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 Voilà , j'ai eu enfin 5 mn à moi ... ou à toi lol...Ca va être beucoup plus fiable avec une regex :voici blockuserinfo.tpl au grand complet, ainsi modifié (si d'autres veulent faire comme toi ) : <!-- Block user information module HEADER --> {l s='Welcome' mod='blockuserinfo'}, {if $logged} {$customerName} ({l s='Log out' mod='blockuserinfo'}) {else} {l s='Log in' mod='blockuserinfo'} {/if} {l s='Your Account' mod='blockuserinfo'} {l s='Cart:' mod='blockuserinfo'} {$cart_qties} {l s='product' mod='blockuserinfo'} {l s='products' mod='blockuserinfo'} {if $cart_qties > 0} {if $priceDisplay == 1} {convertPrice price=$cart->getOrderTotal(false, 4)} {else} {convertPrice price=$cart->getOrderTotal(true, 4)} {/if} {/if} {l s='(empty)' mod='blockuserinfo'} <!-- /Block user information module HEADER --> Et pour rappel l'autre modif nécessaire, dans son intégralité itou (on a de la chance les fichiers sont petits), qui concerne my-account.php : <?php /* SSL Management */ $useSSL = true; include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); if (!$cookie->isLogged()) { if (!$back = Tools::getValue('back')) { Tools::redirect('authentication.php?back=my-account.php'); } else Tools::redirect('authentication.php?back='.$back); } include(dirname(__FILE__).'/header.php'); $smarty->assign(array( 'voucherAllowed' => intval(Configuration::get('PS_VOUCHERS')), 'returnAllowed' => intval(Configuration::get('PS_ORDER_RETURN')), 'HOOK_CUSTOMER_ACCOUNT' => Module::hookExec('customerAccount'))); $smarty->display(_PS_THEME_DIR_.'my-account.tpl'); include(dirname(__FILE__).'/footer.php'); ?> Merci de tester et nous dire... Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 J' ai fait l'essai et je pense qu'il y a un probleme au niveau des dossiers (j'ai 2 fois PRESTASHOP) voir photo jointe. Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 Ah ...Oui mais là tu as testé sur un presta configuré sur /prestashop et non à la racine.Ma modif ne fonctionne que si ton url boutique est à la racine.En clair si tu mets en ligne sur ton site http://www.nuestratienda.eu/ ça marcheraSi tu mets sur http://www.test.eu/prestashop , marche plus ... pas étudié ce cas de figure . Il va falloir foncer les yeux fermés lol et mettre en ligne Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 ok pardonne moi c'est que j'ai pris l'habitude de faire des essais en local avant de mettre en prod.bon allez je me lance et te dit ce qu'il en est. Link to comment Share on other sites More sharing options...
hervehh Posted March 28, 2011 Author Share Posted March 28, 2011 Broceliande comment faire pour en savoir autant que toi ?Je ne te remercierai jamais assez.Enfin pour ceux qui prennent ce post au passage, la solution fonctionne et permet donc (je le rappelle) de se logguer sans être redirigé d'office vers la page de my-account (avec le menu historiques, bons de réduction, etc...) et donc de revenir sur la page, fiche produit, sur laquelle vous étiez avant de vous logguer.En espérant avoir été assez clair.je met donc un RESOLU et encore un grand merci à Broceliande (ils devraient te donner une étoile de plus...) Link to comment Share on other sites More sharing options...
Broceliande Posted March 28, 2011 Share Posted March 28, 2011 Damned ! que de louanges... Merci à toi , mais il m'en faut pas tant Link to comment Share on other sites More sharing options...
petitemarie1 Posted May 23, 2011 Share Posted May 23, 2011 Bonjour,je m'excuse de relancer ce sujet mais je suis sur prestashop 1.4.1 et evidemment le my-account.php ne correspond plus du tout à cause des controllers... Pourriez vous m'aider pour la modification svp?A l'avance merciMarie Link to comment Share on other sites More sharing options...
nicaise Posted September 7, 2011 Share Posted September 7, 2011 Bonjour, un petit up concernant la solution proposée. Lorsque je modifie les 2 fichiers (blockuserinfo.tpl et my-account.php) comme indiqué, mon block UserInfo disparait et suite à l'identification je suis toujours redirigée vers la page "Mon compte". Je suis sur Prestshop Version 1.3.6.0. Pouvez-vous me préciser les modifications à apporter svp? Merci Link to comment Share on other sites More sharing options...
logs00 Posted June 18, 2012 Share Posted June 18, 2012 Petit Up également ! Les version 1.4.x de Presta fonctionnent avec le constroller AuthController. Comment effectuer la modification pour récupérer cette fonction ? merci d'avance Link to comment Share on other sites More sharing options...
cymp Posted September 1, 2012 Share Posted September 1, 2012 up brocéliande si tu passes par là... Link to comment Share on other sites More sharing options...
SCAMPAI Posted September 19, 2012 Share Posted September 19, 2012 Bonjour, J'avais trouvé ça, sur le forum: modif sur Presta 1.4.8.2 fichier controllers/AuthController.php si redirection après inscription - ligne 203 Changer Tools::redirect('my-account.php'); par Tools::redirect('ta_page.php'); +++++++++++++++++++++++++++++++++++++++++++++++++++++++ si redirection après connexion - ligne 275 Changer Tools::redirect('my-account.php'); par Tools::redirect('ta_page.php'); Mais apparemment, ça ne fonctionne pas. Cdlt, Philippe Link to comment Share on other sites More sharing options...
redtango2 Posted December 18, 2012 Share Posted December 18, 2012 Je relance le sujet Toujours pas de up ? pour cette modif essentielle ne pas revenir au compte quand on se connecte (surtout après avoir ajouté un produit au panier) c'est une fonction essentielle pour ne pas lasser les clients; j'ai testé les différentes solutions pas une ne marche sur une install 1.5.2 quelqu'un a t'il trouvé les fichiers à modifier (controllers - tpl -php ??????) et comment ? Ce serait une bonne nouvelle avant la fin du monde ! Best regards Link to comment Share on other sites More sharing options...
redtango2 Posted December 21, 2012 Share Posted December 21, 2012 Bonjour Brocéliande est ce que cette modif marche avec PS 1.5.2. et le onepageCheckout ou faut il modifier dd'autres fichiers Merci de votre réponse ? oui forcément je me suis gourré dans blockuserinfo.tpl, car c'est un lien et non un formulaire, donc mon hidden ne sert à rien, il faut plutôt : {if $logged} {$customerName} [url="{$base_dir}index.php?mylogout"]({l s='Log out' mod='blockuserinfo'})[/url] {else} [url="{$base_dir_ssl}my-account.php?back={$request_uri}"]{l s='Log in' mod='blockuserinfo'}[/url] {/if} Avec ça et la modif suivante dans my-account.php : <?php /* SSL Management */ $useSSL = true; include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); if (!$cookie->isLogged()) { if (!$back = Tools::getValue('back')) { Tools::redirect('authentication.php?back=my-account.php'); } else Tools::redirect('authentication.php?back='.$back); } On a bien le redirect au final traîté par authentication, mais hélas , il manque un truc à ce stade , je te laisse constater par toi même.... On perd au moment de la redirection final la partie qui vient avant la 'request_uri' Si je trouve 5mn , je testerais , mais là déja ton back arrive jusqu'au bout. Link to comment Share on other sites More sharing options...
Myst26 Posted March 7, 2013 Share Posted March 7, 2013 (edited) Bonjour, Petit aparté : En parlant de redirection vers la page courante, il serait intéressant que le forum l'applique ^^ Sous PS 1.5.3, la redirection est applicable sur le fichier AuthController.php. la fonction processSubmitLogin() (~ line 261) if (!$this->ajax) { if ($back = Tools::getValue('back')) Tools::redirect(html_entity_decode($back)); Tools::redirect('index.php?controller=my-account'); } La fonction gère la redirection vers la ligne 314. En théorie, il suffit de rajouter ?back=ma_page_ou_je_serais_redirige sur le lien d'authentification. Si on reprend la reco de brocéliande, dans l'action du formulaire : <form action="{$link->getPageLink('authentication.php', true)}?back={$request_uri|regex_replace:'/^\/(.*)$/':'$1'}" id="signin" method="post"> ... </form Mais le soucis est que cette fonction ne prend en compte que le controlleur, et tronquera le reste. Exemple si vous mettez index.php?controlleur=category&id_category=11. Vous serez redirigé vers la page index.php?controlleur=category ==> erreur 404. normal. Il faut donc modifier cette fonction, voire en utiliser une autre pour l'authentification pour qu'elle prend en compte id_category. Je vous propose une solution parmi tant d'autre.. mais j'arrive rapidement à mes fins avec ceci. Class Tools.php (override) public static function redirectOverride($url) { if (!$link) $link = Context::getContext()->link; $redirect = $link->getPageLink($url); header('Location: '.$redirect); exit; } le module qui gère la connexion du compte ( blockuserinfo.tpl?) désolé je n'utilise pas lui d'où mon point interrogation. Rajouter au niveau du fichier blockuserinfo.php dans la fonction du hookTop $return = ''; switch(Tools::getValue('controller')){ case 'category': $return = 'category&id_category='.Tools::getValue('id_category'); break; case 'product': $return = 'product&id_product='.Tools::getValue('id_product'); break; default: break; } $smarty->assign('return', $return); au niveau du tpl du module : rajouter un input dans le formulaire <form> .. .. .. {if isset($return) && $return != ''}<input type="hidden" name="return" value="{$return}" />{/if} </form> Fichier AuthController.php (override) rajouté ceci avec /* ajout */ if ($return = Tools::getValue('return')): Tools::redirectOverride($return); endif; /* fin ajout */ if ($back = Tools::getValue('back')): Tools::redirect(html_entity_decode($back)); Vous aviez bien compris que je construis mon url de retour. Je pars du principe que l'on se reconnect sur la même page que si nous sommes sur une page catégory ou product. Si vous souhaitez à avoir la meme action pour les pages CMS il vous faut rajouter dans le switch un controller cms Edited March 7, 2013 by Myst26 (see edit history) Link to comment Share on other sites More sharing options...
orangewebdesign Posted July 19, 2013 Share Posted July 19, 2013 (edited) Bonjour, moi je suis sous la version 1.5.4.1. Est-ce possible d'avoir la solution pour cette version? Ou est-ce comme la 1.5.3? Merci Edited July 19, 2013 by orangewebdesign (see edit history) Link to comment Share on other sites More sharing options...
sabrina Posted October 26, 2013 Share Posted October 26, 2013 (edited) Bonjour, encore un point qui merite une réponse, meme problème pour moi sur 1.5.6. Du meme avis que redtango2; un point essentiel à modifier!!!! San réponse... cordialement PS/ Entre la redirection apres identification qui est essentielle, et le module Mondial Relais qui n'a jamais marcher depuis sa premièere version qui lui aussi est essentiel vis a vis des tarifs appliquer..... ca commence à faire beaucoup de point important négliger....Que faire? payer un prestataire pour un logiciel open source. Autant avoir un prestashop payant mais fonctionnel. Edited October 26, 2013 by sabrina (see edit history) Link to comment Share on other sites More sharing options...
sabrina Posted October 26, 2013 Share Posted October 26, 2013 Je passe plus de temps a bidouiller la boutique que rentrer des articles 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