Si vous avez plusieurs langues installées sur votre boutique, alors toutes les URL incluront le code de la langue. Et même lorsque vous ouvrez la page d’accueil de votre site, vous obtiendrez ce suffixe de langue, même pour la langue par défaut. Cela ne rend pas très bien, mais heureusement, vous pouvez corriger ce comportement.
Ce tutoriel explique comment supprimer le code de langue par défaut de vos URL (généralement « /en »).
Fonctionne pour PrestaShop 1.5 / 1.6
Vous devez utiliser des surcharges (overrides) pour faire cela.
-
Créez (ou modifiez s’il existe) le fichier /override/classes/Link.php
Collez ce code dans ce fichier (ou fusionnez-le avec le code existant) :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<?php
class Link extends LinkCore
{
protected function getLangLink($id_lang = null, Context $context = null, $id_shop = null)
{
$parent_result = parent::getLangLink($id_lang, $context, $id_shop);
if ($parent_result) {
if ($id_lang == Configuration::get('PS_LANG_DEFAULT')) {
return '';
} else {
return $parent_result;
}
}
}
} -
Créez (ou modifiez s’il existe) le fichier /override/classes/Tools.php
Collez ce code dans ce fichier (ou fusionnez-le avec le code existant) :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29<?php
class Tools extends ToolsCore
{
public static function setCookieLanguage($cookie = null)
{
parent::setCookieLanguage($cookie);
if (!$cookie) {
$cookie = Context::getContext()->cookie;
}
if(!Tools::getValue('isolang') && !Tools::getValue('id_lang') && !Tools::isSubmit('id_category_layered')) {
$cookie->id_lang = Configuration::get('PS_LANG_DEFAULT');
Context::getContext()->language = new Language($cookie->id_lang);
}
/* If language file not present, you must use default language file */
if (!$cookie->id_lang || !Validate::isUnsignedId($cookie->id_lang)) {
$cookie->id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
Context::getContext()->language = new Language($cookie->id_lang);
}
$iso = Language::getIsoById((int)$cookie->id_lang);
@include_once(_PS_THEME_DIR_.'lang/'.$iso.'.php');
return $iso;
}
}Notez qu’à la ligne #13, nous utilisons l’expression Tools::isSubmit(‘id_category_layered’). Cela aide le module Blocklayered à déterminer correctement la langue. Vous pouvez également ajouter à cette ligne vos autres modules qui ont des problèmes pour déterminer la langue.
- Maintenant, videz le cache de la boutique (comment vider le cache).
Tout est fait ! Ouvrez votre site web et vérifiez le résultat.
