Lorsque vous utilisez Prestashop en mode multi-langue, les adresses/urls sont écrites de la façon suivante :
http://www.boutique-prestashop.com/iso/fichier.php

Donc cela donne :
http://www.boutique-prestashop.com/fr/fichier.php pour le français.
http://www.boutique-prestashop.com/en/fichier.php pour l’anglais.
Et ainsi de suite.

Nous vous conseillons de garder ce fonctionnement, mais si vous avez déjà référencé votre boutique sans le /fr/pour la langue française et que vous ne voulez pas perdre votre position sur les moteurs de recherche, nous vous proposons une solution pour modifier le comportement de Prestashop.
Vous aurez donc un système d’adresse de la manière suivante :
http://www.boutique-prestashop.com/fichier.php pour le français.
http://www.boutique-prestashop.com/en/fichier.php pour l’anglais.

La modification nécessite des changements dans les fichiers systèmes de Prestashop. A ne faire que si vous savez ce que vous faites ! Pensez à sauvegarder l’ensemble des fichiers que vous allez modifier avant.

Voici la liste des changements :
Dans la classe Link.php, chercher la méthode nommé “getLangLink”.
Initialement la méthode se termine par cela :

return Language::getIsoById((int)$id_lang).’/';

Modifier comme ceci :

if(Language::getIsoById((int)$id_lang) == ‘fr’)
return ”;

return Language::getIsoById((int)$id_lang).’/';

Cette modification aura pour but de modifier l’ensemble des urls utilisées par Prestashop, pour supprimer le sous-dossier “fr”.

Dans la classe Frontcontroller.php, chercher la méthode “init”
Puis chercher le code suivant :

// Switch language if needed and init cookie language
if ($iso = Tools::getValue(’isolang’) AND Validate::isLanguageIsoCode($iso) AND ($id_lang = (int)(Language::getIdByIso($iso))))
$_GET['id_lang'] = $id_lang;

Puis remplacer-le par :

// Switch language if needed and init cookie language
if ($iso = Tools::getValue(’isolang’) AND Validate::isLanguageIsoCode($iso) AND ($id_lang = (int)(Language::getIdByIso($iso))))
$_GET['id_lang'] = $id_lang;
else
$_GET['id_lang'] = (int)(Language::getIdByIso(’fr’));

Pour faire le changement de langage, Prestashop utilisé le “fr” contenu dans l’url. Vu qu’il n’y sera plus, nous lui expliquons que si la langue n’est pas précisé dans l’url, alors la langue est le français.

Dans votre template modifier le fichier header.tpl. Au niveau du logo, cherchez :

<a title=”{$shop_name|escape:’htmlall’:'UTF-8′}” href=”{$base_dir}”>

Et remplacez par :

<a href=”{$link->getPageLink(’index.php’)}” title=”{$shop_name|escape:’htmlall’:'UTF-8′}”>

Le but de cette modification est simplement d’avoir toujours l’adresse correct en fonction du langage pour la page index. Par défaut, pour l’anglais, l’adresse sera http://www.boutique-prestashop.com/ au lieu de http://www.boutique-prestashop.com/en/

Dans le fichier modules/gsitemap/gsitemap.php, cherchez :

foreach($langs as $lang)
$this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__.$lang['iso_code'].’/', ‘1.00′, ‘daily’, date(’Y-m-d’));

Et remplacez par :

foreach($langs as $lang)
if($lang['iso_code']==’fr’)
$this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__, ‘1.00′, ‘daily’, date(’Y-m-d’));
else
$this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__.$lang['iso_code'].’/', ‘1.00′, ‘daily’, date(’Y-m-d’));

Le module de sitemap écrit toutes les urls suivies du code iso au début du fichier généré. Le but est de supprimer l’url avec le sous-dossier “fr” puisque celui-ci ne doit plus exister.

Enfin, ouvrez la classe Tools.php, trouvez la méthode generateHtaccess.
Chercher le code suivant :

foreach (Meta::getMetasByIdLang($language['id_lang']) as $key => $meta)
if (!empty($meta['url_rewrite']) AND Validate::isLinkRewrite($meta['url_rewrite']))
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/’.$meta['url_rewrite'].’$'] = $meta['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;
elseif (array_key_exists($key, $default_meta) && $default_meta[$key]['url_rewrite'] != ”)
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/’.$default_meta[$key]['url_rewrite'].’$'] = $default_meta[$key]['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/([^?&]*)’] = ‘$1?isolang=’.$language['iso_code'].’ [QSA,L]‘;

Et remplacez par :

if($language['iso_code'] ==’fr’){
foreach (Meta::getMetasByIdLang($language['id_lang']) as $key => $meta)
if (!empty($meta['url_rewrite']) AND Validate::isLinkRewrite($meta['url_rewrite']))
$tab['RewriteRule']['content']['^'.$meta['url_rewrite'].’$'] = $meta['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;
elseif (array_key_exists($key, $default_meta) && $default_meta[$key]['url_rewrite'] != ”)
$tab['RewriteRule']['content']['^'.$default_meta[$key]['url_rewrite'].’$'] = $default_meta[$key]['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;

}else{
foreach (Meta::getMetasByIdLang($language['id_lang']) as $key => $meta)
if (!empty($meta['url_rewrite']) AND Validate::isLinkRewrite($meta['url_rewrite']))
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/’.$meta['url_rewrite'].’$'] = $meta['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;
elseif (array_key_exists($key, $default_meta) && $default_meta[$key]['url_rewrite'] != ”)
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/’.$default_meta[$key]['url_rewrite'].’$'] = $default_meta[$key]['page'].’.php?isolang=’.$language['iso_code'].’ [QSA,L]‘;
$tab['RewriteRule']['content']['^'.$language['iso_code'].’/([^?&]*)’] = ‘$1?isolang=’.$language['iso_code'].’ [QSA,L]‘;
}

21 commentaires pourquoi ne pas laisser le vôtre ?

Nous n'apporterons pas de support par commentaire pour un problème technique avec l'un de nos modules. Merci de nous contacter directement avec notre formulaire de contact!

Hey, you used to write magnificent, but the last several posts have been kinda boring… I miss your tremendous writings. Past several posts are just a little out of track! come on!

cupcakes reading le 4 février 2016 à 10 h 44 min

I have recently started a site, the info you provide on this website has helped me greatly. Thanks for all of your time & work. “Men must be taught as if you taught them not, And things unknown proposed as things forgot.” by Alexander Pope.

birthday cake dublin le 4 février 2016 à 10 h 44 min

Fantastic website. Lots of useful info here. I am sending it to several friends ans also sharing in delicious. And of course, thanks for your sweat!

club naturiste le 25 janvier 2016 à 8 h 20 min

hello!,I like your writing very much! share we communicate more about your post on AOL? I need an expert on this area to solve my problem. Maybe that’s you! Looking forward to see you.

massage erotique le 25 janvier 2016 à 7 h 36 min

Your post has moved the debate forward. Thanks for sharing!

http://autoinsuranceins.pw/where_to_get_the_cheapest_car_insurance.html le 27 août 2015 à 5 h 15 min

Ecrire un commentaire