papich Posted May 6, 2013 Share Posted May 6, 2013 (edited) Bonjour, Je voudrais savoir s'il existe une prehome avec le choix du pays et de la devise sur prestashop? Site exemple http://www.airfrance...autres_pays.htm http://www.porsche.com/ Moi je pensais faire un menu html5 / css 3 en responsive ou une pop up mais je ne sais pas comment l'intégrer à prestashop... Peut etre en retravaillant les modules langues et devises... Edited May 7, 2013 by papich (see edit history) Link to comment Share on other sites More sharing options...
papich Posted May 13, 2013 Author Share Posted May 13, 2013 personne pour m'aider? Link to comment Share on other sites More sharing options...
Kaby Posted November 5, 2013 Share Posted November 5, 2013 Hello, Je me penche tout juste sur la question, avez-vous trouvé ? Link to comment Share on other sites More sharing options...
papich Posted November 15, 2013 Author Share Posted November 15, 2013 non avez vous une idée? Link to comment Share on other sites More sharing options...
Kaby Posted November 29, 2013 Share Posted November 29, 2013 Oui j'ai mis en place cela, je reviens sur le topix dans la journée, n'hésite pas à me relancer si j'oublie 1 Link to comment Share on other sites More sharing options...
Kaby Posted December 2, 2013 Share Posted December 2, 2013 Yo ! Alors j'ai créé une page à la racine de mon prestashop (disons international.php) avec des liens vers mes zones langues avec un paramètre que je vais définir comme cookie et que je vais utiliser par la suite: "/fr?lg=fr". Ensuite je fais des tests dans mon "index.php": - Si le cookie existe déjà -> je renvoie vers la langue en fonction du cookie - Si le cookie n'existe pas mais que je clique sur un lien intégrant le paramètre lg: je définie le cookie et je renvoie vers la langue concernée - Si le cookie n'existe pas comme seule condition: je renvoie vers ma page "international.php" Attention à bien exit; à la fin de toutes ces conditions pour ne pas créer de boucle infinie sur l'index de prestashop. Enfin, ajouter une condition préalable à toutes ces conditions: ne les tester que si on ne se trouve pas dans un appel ajax, par exemple une telle prehome empêche les traitements du panier(if(empty($_SERVER['HTTP_X_REQUESTED_WITH']))) Tu peux include tout ce que tu veux dans ton "international.php" (j'ai par exemple un formulaire de contact et je récupère la liste des pays de prestashop, mon doc de traitement est aussi à la racine pour éviter les galères de directory etc. Pour fignoler, ajouter une réécriture d'url dans le htaccess pour avoir une url propre genre "tonsite/international" sans le ".php" Voilà j'espère que ça t'aidera à avancer ! 1 Link to comment Share on other sites More sharing options...
papich Posted December 4, 2013 Author Share Posted December 4, 2013 ca a l air compliqué tu as du concret? Link to comment Share on other sites More sharing options...
aggelon Posted May 19, 2014 Share Posted May 19, 2014 Enfin, ajouter une condition préalable à toutes ces conditions: ne les tester que si on ne se trouve pas dans un appel ajax, par exemple une telle prehome empêche les traitements du panier(if(empty($_SERVER['HTTP_X_REQUESTED_WITH']))) Merci Kaby pour ces indications : c'est exactement le problème que j'ai ! Tu peux précisément indiquer ce que tu as ajouté comme code et à quel endroit ? Merci d'avance ! Link to comment Share on other sites More sharing options...
Kaby Posted May 19, 2014 Share Posted May 19, 2014 Hello, Et bien tu fais ce test avant tous tes tests sur l'existence ou non de cookie et ta redirection ! Dis moi si tu as besoin de plus d'infos... Link to comment Share on other sites More sharing options...
aggelon Posted May 19, 2014 Share Posted May 19, 2014 Salut, Merci de m'avoir répondu aussi rapidement. Je ne suis pas du tout développeur, mais grâce à tout ce que j'ai pu trouver sur ce forum j'ai toujours pu réaliser ce que je souhaitais (en modification de .tpl essentiellement). En fait mon besoin est plus simple que celui de papich et je pense n'avoir besoin que d'une partie de ta réponse initiale. Je cherche simplement à afficher une préhome toute simple : lorsque le visiteur clique n'importe où, il arrive alors si le site. J'ai donc créé un fichier genre prehome.html dans lequel ne figure qu'une seule image de bienvenue, image cliquable qui dirige vers index.php. Tout a l'air de fonctionner à merveille sauf que le panier ajax ne fonctionne plus : quand je clique sur un produit pour l'ajouter au panier, j'ai le message d'erreur dont tu parles. Je pensais donc utiliser ta solution, mais je ne sais pas du tout comment m'y prendre... Si j'ai bien compris: - index test l'existence d'un cookie, - si le cookie n'existe pas, c'est que la page prehome n'a pas été affichée, car c'est elle qui créé le cookie, donc on affiche la préhome Je ne connais pas le php. Quel code ajouter dans index.php pour tester l'existence d'un cookie ? Quel code mettre dans ma prehome.php pour créé le cookie ? Peut-on assigner une durée de validité au cookie afin que lorsque le visiteur reviendra dans... 1 semaine par exemple, la page de bienvenue s'affiche à nouveau ? Merci beaucoup pour ton aide ! Link to comment Share on other sites More sharing options...
aggelon Posted May 19, 2014 Share Posted May 19, 2014 (edited) Ecrire le message du dessus m'a obligé à formaliser un peu plus mon besoin, et je me suis rendu compte qu'il ne me manquait pas grand chose pour aboutir Ainsi, la solution était simple : j'ai créé ma prépage, qu'on appelera prepage.php par exemple, qui contient ceci : <?php setcookie("prepage"); ?> <div align=center><a href='index.php'><img src='prepage.jpg'></a></div> à enregistrer à la racine du site, évidemment. Pour les novices comme moi, ce code signifie : - créer un cookie, appelé prepage, qui s'effacera tout seul lorsque le visiteur fermera le navigateur - afficher l'image de prepage.jpg (préparée à l'avance) - si on clique sur l'image, alors le site normal (index.php) s'affiche Ensuite, dans le index.php qui existe déjà sur tout site Prestashop, modifier le Dispatcher::getInstance()->dispatch(); en if (!(isset($_COOKIE["prepage"]))) { print ("<script language = \"JavaScript\">"); print ("location.href = 'prepage.php';"); print ("</script>"); } else { Dispatcher::getInstance()->dispatch(); } Ce qui signifie : - regarde le coookie prepage - s'il n'existe pas, alors affiche la prepage - sinon (=cela veut dire que la prepage a déjà été affichée, vu que c'est elle qui créé le cookie), alors afficher le site normal C'était pourtant simple Merci à toi Kaby, je me débattais avec des histoires de .htaccess ou autre contentDirectory pour rien du tout et tu m'as mis sur la piste ! Pfff... si je connaissais le php, j'y aurais pensé avant... Edited May 19, 2014 by aggelon (see edit history) Link to comment Share on other sites More sharing options...
Kaby Posted May 20, 2014 Share Posted May 20, 2014 Hello, désolé j'ai laissé l'aprem passé hier puis je n'y ai pas repensé le soir ! Dans le principe c'est ça et tant mieux si tu as cherché et trouvé par toi même, mais comme je te sens curieux tu peux faire plus propre: Tu écris ton lien vers ta home (pas la prepage) avec un paramètre à tester: href="/?prepage=true" A l'arrivée de ton visiteur tu testes le fait de ne pas être dans un traitement AJAX if(empty($_SERVER['HTTP_X_REQUESTED_WITH'])){ Si tu n'es pas en AJAX, tu testes si le paramètre existe (en $_GET), si oui c'est que le visiteur était déjà sur ta prépage et qu'il a cliqué sur ton lien, ainsi tu le rediriges vers ta home et tu définies ton cookie pour un autre test: if(isset($_GET['prepage']) && $_GET['prepage']) { setcookie('prepage', $_GET['prepage'], time() + 86400, '/'); header('location: '.$baseHost.'/'.ta_home.'/'); exit; } Ensuite tu testes si ton cookie existe: si oui c'est que ton utilisateur a déjà visité ton site mais qu'il vient d'y revenir (grâce à la définition précédente du cookie): if(isset($_COOKIE['prepage']) && $_COOKIE['prepage']) { header('location: '.$baseHost.'/'.ta_home.'/'); exit; } Enfin si tu n'as ni paramètre en $_GET ni cookie, c'est la première visite et tu rediriges vers la prepage: if(!isset($_COOKIE['prepage'])){ header('location: '.$baseHost.'/prepage'); exit; } Tu n'as pas besoin de plus de tests dans cette dernière condition car avant tu as des redirect et des exit; donc si une condition a été remplie tu auras déjà été redirigé. Voilà je me permets de proposer cela car je n'étais pas fan de la redirection js dans le print php... Tu auras sans doute besoin de définir une réécriture d'url dans ton htaccess pour ton url avec un paramètre (/?prepage=true). J'espère que c'est pas trop fouilli. A plus 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