Если у вас в магазине включено несколько языков, то все URL-адреса будут включать код языка. И даже если вы откроете главную страницу сайта, то код языка все равно будет добавлен к адресу, даже для языка по умолчанию. Это выглядит не очень красиво, но, к счастью, и это можно исправить.
В этой статье рассказывается, как удалить код языка из URL-адресов (обычно «/ru»)
Работает для PrestaShop 1.5 / 1.6
Для этого вам необходимо использовать переопределения (overrides).
-
Создайте (или отредактируйте, если уже существует) файл /override/classes/Link.php
Вставьте в него следующий код (или объедините с существующим кодом):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;
}
}
}
} -
Создайте (или отредактируйте, если уже существует) файл /override/classes/Tools.php
Вставьте в него следующий код (или объедините с существующим кодом):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;
}
}Обратите внимание, что на строке #13 мы используем выражение Tools::isSubmit(‘id_category_layered’). Это поможет модулю Blocklayered (блок фильтров) правильно определять язык.
- Теперь очистите кэш (как очистить кэш).
Готово! Откройте свой сайт и проверьте результат.