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.
-
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;
}
}
}
} -
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.
- Ora svuota la cache del negozio (come svuotare la cache).
Fatto! Apri il tuo sito web e controlla il risultato.
