Come rimuovere “/en” dagli URL in PrestaShop

Se hai più lingue installate nel tuo negozio, tutti gli URL includeranno il codice della lingua. E anche quando apri la home page del tuo sito otterrai quel suffisso di lingua, anche per la lingua predefinita. Non ha un bell’aspetto, ma fortunatamente puoi correggere questo comportamento.

Questo tutorial descrive come rimuovere il codice della lingua predefinita dai tuoi URL (di solito “/en”).

Funziona per PrestaShop 1.5 / 1.6

Devi usare gli override per farlo.

  1. Crea (o modifica se esiste) il file /override/classes/Link.php
    Incolla questo codice in quel file (o uniscilo al codice esistente):
    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. Crea (o modifica se esiste) il file /override/classes/Tools.php
    Incolla questo codice in quel file (o uniscilo al codice esistente):
    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;
        }
    }

    Nota che alla riga #13 usiamo l’espressione Tools::isSubmit(‘id_category_layered’). Aiuta il modulo Blocklayered a determinare correttamente la lingua. Puoi anche aggiungere a questa riga i tuoi altri moduli che hanno problemi nel determinare la lingua.

  3. Ora svuota la cache del negozio (come svuotare la cache).

Fatto! Apri il tuo sito web e controlla il risultato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *