Si tiene varios idiomas instalados en su tienda, entonces todas las URLs incluirán el código de idioma. E incluso cuando abra la página de inicio de su sitio obtendrá ese sufijo de idioma, incluso para el idioma predeterminado. No se ve bien, pero afortunadamente puede arreglar este comportamiento.
Este tutorial describe cómo eliminar el código de idioma predeterminado de sus URLs (generalmente «/en»).
Funciona para PrestaShop 1.5 / 1.6
Tiene que usar anulaciones (overrides) para hacer esto.
-
Cree (o edite si ya existe) el archivo /override/classes/Link.php
Pegue este código en ese archivo (o combínelo con el código existente):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;
}
}
}
} -
Cree (o edite si ya existe) el archivo /override/classes/Tools.php
Pegue este código en ese archivo (o combínelo con el código existente):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;
}
}Tenga en cuenta que en la línea #13 usamos la expresión Tools::isSubmit(‘id_category_layered’). Ayuda al módulo Blocklayered a determinar correctamente el idioma. También puede añadir a esta línea sus otros módulos que tienen problemas para determinar el idioma.
- Ahora borre la caché de la tienda (cómo borrar la caché).
¡Todo listo! Abra su sitio web y verifique el resultado.
