Jump to content

[Aide] Prehome avec choix Pays et devise


Recommended Posts

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 by papich (see edit history)
Link to comment
Share on other sites

  • 5 months later...
  • 2 weeks later...
  • 2 weeks later...

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 !

  • Like 1
Link to comment
Share on other sites

  • 5 months later...

 

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

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

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 :lol:

 

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 :D

 

 

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 by aggelon (see edit history)
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...