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]‘;
}

17 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!

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

Hi,I own a family-friendly onilne community Our-Social.com I am using ShareASale as my third party affiliate program.We pay $1.75 to $2.25 per leadAt OurSocial we filters certain words so you or your family will not be exposed to offensive language. All the profiles, pictures, audio and videos are screened prior to them being posted. For those of you who are new to social networking and are confused as to how to create a personal page, this site is very user friendly.Our Social is Free to join.I included the web address for our affiliate program in the resource box

Maximos le 31 juillet 2015 à 15 h 13 min

she was the easiest for her to utnarsdend the concepts and really excited her to try and get started.By the way, when doing your research, be warned that affiliate marketing educational websites are usually trying to sell you something and can be VERY persuasive. Try not to buy anything if you can help it unless you are 100% ready to proceed and the seller has a minimum of a 30 day return policy so you have ample time to really review it. I’ve spent thousands on my education to build my affiliate business and can tell you that if you work at it consistently, it can be done.Good luck!

Kate le 31 juillet 2015 à 15 h 06 min

First off I want to ay wonderful bl g! Ihad a quick qesotiun which I’d like to ask if you don’t mind.I was nterested to know how you cente you s lf and lea your mind before writing.I’ve had a tough time clearing my thoughts in getting my ideas out. I truly do take pleasure in writing however it just seems like the first 10 to 15 minutes tend to be lost just trying to figure out how to begin. Any recommendations or tips? Many thanks!

Mladen le 29 juillet 2015 à 15 h 47 min

it doesn’t work, i have tried it ,

handmade oil painting le 24 avril 2015 à 7 h 55 min

Ecrire un commentaire