Comment supprimer « /en » des URL dans PrestaShop

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.

  1. 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;
                }
            }
        }
    }
  2. 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.

  3. Maintenant, videz le cache de la boutique (comment vider le cache).

Tout est fait ! Ouvrez votre site web et vérifiez le résultat.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *