Vous n'êtes pas identifié(e).
Pages : 1
Salut,
Quelques clients me demandent parfois comment faire tel ou tel truc pour leurs sites, alors, autant vous les donnez aussi.
Eric Renaud m'a demandé dernièrement comment rediriger un visiteur suivant la langue de son navigateur.
Le but étant d'avoir une fonction simple, facile à intégrer.
J'étais partie sur une explication des sites multilangues, mais j'ai vu qu'il bloquait déjà sur les define() donc si PHP est trop dur pour vous, voila comment faire.
A la racine de votre site, il suffit de créer un fichier index.php et de coller le code suivant :
<?php
$get_lang = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$get_lang = strtolower(substr(rtrim($get_lang[0]),0,2));
if ($get_lang == 'fr')
{
header('Location:./fr/');
} else {
header('Location:./en/');
}
Donc, le fichier sera sur votre FTP dans le repertoire domaine_tld.
Dans le répertoire domaine_tld, créer 2 répertoires, un 'fr' et un 'en'
Ensuite, placez votre site html dans le repertoire fr, et le site en anglais dans le repertoire en
Les visiteurs avec un navigateur en francais seront redirigés vers le repertoire FR, et les autres, vers le repertoire EN
Vous pouvez trouver les codes des pays ici : http://www.une-geekette.com/langue_navigateur.txt
Attention, dans le script, il faut les mettre en minuscule !
Pour les liens de vos drapeaux qui permettent le changement de langue, il faut suffit de faire un lien normal vers la page mais dans le répertoire de l'autre langue.
Si vous voulez ajouter une 3ème langue, il faut ajouter 2 lignes de code, avant le } else { (exemple à 4 langues)
if ($get_lang == 'fr')
{
header('Location:./fr/');
} elseif ($get_lang == 'es') {
header('Location:./es/');
} elseif ($get_lang == 'de') {
header('Location:./de/');
} else {
header('Location:./en/');
}
Voila, c'est la méthode la plus simple que je connais, si ça peut aider certains d'entre vous.
Hors ligne
Exemple d'une fonction utilisant MingLib (disponible chez de trop rare hébergeur)
ATTENTION, CE SCRIPT DOIT ETRE PLACER DANS UNE PARTIE ADMIN OU INNACCESSIBLE AUX VISITEURS !!!
L'explication est ici : http://forum.wdmedia-hebergement.net/vi … hp?id=1141
Je me suis basée sur l'exemple ici : http://www.gazbming.com/getexample.php?id=3
J'y ai supprimé la partie "multi répertoire", puis je l'ai transformé en fonction qui vous permet de définir plusieurs parametres, et la fonction permet d'afficher le code HTML a placer sur votre site (vous aurez juste à modifier les liens)
Voici le code de la fonction :
<?php
function genere_flash($hauteur, $largeur, $bgcolorhtml, $pathtojpgs, $sortie, $nom_fichier)
{
Ming_setScale(20.0000000);
ming_useswfversion(6);
$movie=new SWFMovie();
$couleur = str_replace("#", '', $bgcolorhtml);
$rouge = substr($couleur, 0, 2);
$vert = substr($couleur, 2, 2);
$bleu = substr($couleur, 4, 2);
$rouge = '0x'.$rouge;
$vert = '0x'.$vert;
$bleu = '0x'.$bleu;
$movie->setBackground(rand(0,$rouge),rand(0,$vert),rand(0,$bleu));
$movie->setRate(31);
$movie->setDimension($hauteur,$largeur);
function easeInQuad ($t, $b, $c, $d)
{
$t/=$d;
return $c*$t*$t + $b;
};
function easeOutQuad ($t, $b, $c, $d)
{
$t/=$d;
return -$c *($t)*($t-2) + $b;
};
$strAction="
if(!init)
{
init=true;
stopped=false;
controls =
{
onMouseDown: function ()
{
if(!stopped)
{
stop();
stopped=true;
}else{
play();
stopped=false;
}
}
};
Mouse.addListener(controls);
}";
$movie->add(new SWFAction($strAction));
$i = 0;
if ($handle = opendir($pathtojpgs))
{
while (false !== ($file = readdir($handle)))
{
$tmp = explode(".",$file);
if($tmp[1]=="jpg")
{
$f[$i] = $file;
$i++;
}
}
}
closedir($handle);
$movie->nextFrame();
for($i=0;$i<count($f);$i++)
{
for($k=0;$k<count($f[$i]);$k++)
{
$img = new SWFBitmap(fopen($pathtojpgs.$f[$i],"rb"));
$pic=$movie->add($img);
$hauteur2 = $hauteur /2;
$largeur2 = $largeur /2;
$pic->moveTo( ($hauteur2 - $img->getwidth() /2),($largeur2 - $img->getheight() /2));
$transition=20;
$cnt=1; $startpos=0; $offset=1; $duration=$transition;
while($cnt<=$duration)
{
$inc=easeInQuad ($cnt++, $startpos, $offset, $duration);
$pic->multColor(1,1,1,$inc);
$movie->nextFrame();
}
for($j=1;$j<=$transition*2;$j++)
{
$movie->nextFrame();
}
$cnt=1; $startpos=1; $offset=-1; $duration=$transition;
while($cnt<=$duration)
{
$inc=easeOutQuad ($cnt++, $startpos, $offset, $duration);
$pic->multColor(1,1,1,$inc);
$movie->nextFrame();
}
$movie->remove($pic);
}
}
$movie->nextFrame();
$movie->save($sortie.$nom_fichier.'.swf',9);
$affiche = '<br><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
width="'.$hauteur.'" height="'.$largeur.'" id="home" align=""><param name="movie"
value="'.$sortie.$nom_fichier.'.swf">
<param name="quality" value="high">
<param name="bgcolor" value="'.$bgcolorhtml.'">
<embed src="'.$sortie.$nom_fichier.'.swf" quality="high" bgcolor="'.$bgcolorhtml.'" width="'.$hauteur.'" height="'.$largeur.'"
name="home" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></object></center>
<br>';
$affiche2 = htmlentities($affiche);
$message = 'Modifier les 2 parties : <param name="movie"value="'.$sortie.$nom_fichier.'.swf"> et <embed src="'.$sortie.$nom_fichier.'.swf" pour qu\'il correspond à l\'url de l\'animation flash';
$affiche2 .= "<br><br>";
$affiche2 .= htmlentities($message);
return array($affiche, $affiche2);
}
Pour utiliser cette fonction il faut ajouter cette ligne, après la fonction ou alors il faut que votre fichier appel la fonction :
$affiche = genere_flash('120', '80', '#FF0000', './galerie/miniature2/', './images/', 'test');
echo $affiche[0].$affiche[1];
Explication :
120 => C'est la taille (width) de l'image en pixel, ici 120 pixels
80 => C'est la taille (height) de l'image en pixel
#FF0000 => C'est la couleur au format HTML qui servira pour les fonds (la couleur de votre site), le # n'est pas obligatoire.
./galerie/miniature2/ => oubliez pas le / à la fin du répertoire, c'est le répertoire par rapport à l'appel à fonction que Ming va utiliser pour chercher les images.
./images/ => Le chemin de sortie pour stocker l'animation flash
test => le nom que portera l'animation flash, le .swf est ajouté par le script. Eviter les espaces et caractères spéciaux.
$affiche[0] => Affichera l'animation flash pour vous, histoire de controler le résultat
$affiche[1] => Affichera le code HTML pour utiliser l'animation flash ainsi qu'un rappel pour modifier comme il faut le chemin de l'animation flash pour le code HTML.
ATTENTION :
- Cette fonction ne fonctionne qu'avec les fichiers JPG avec une extension .jpg
- Si vous utilisez des images que vous avez créé avec un logiciel, faites très attention, Ming est très exigent, il ne veut pas de JPEG progressif. Les JPG générés par la GD de PHP fonctionne très bien.
- Ne laissez pas vos visiteurs avoir accès à cette fonction, vous risquez d'avoir des dépassement de ressource, si vous avez un serveur dédié, faites comme bon vous voulez !
- L'ordre d'affichage est déterminé par le nom des images, si vous voulez pas vous prendre la tete, appelez les : 1.jpg 2.jpg ....
Démonstration
Voici une animation flash générée avec ce script :
http://www.une-geekette.com/demo_ming.html
Hors ligne
Pages : 1