Jeśli w Twoim sklepie zainstalowanych jest wiele języków, wszystkie adresy URL będą zawierać kod języka. Nawet po otwarciu strony głównej witryny otrzymasz ten przyrostek języka, nawet dla języka domyślnego. Nie wygląda to dobrze, ale na szczęście możesz naprawić to zachowanie.
Ten samouczek opisuje, jak usunąć domyślny kod języka z adresów URL (zazwyczaj „/en”).
Działa dla PrestaShop 1.5 / 1.6
Aby to zrobić, musisz użyć nadpisań (overrides).
-
Utwórz (lub edytuj, jeśli istnieje) plik /override/classes/Link.php
Wklej ten kod do tego pliku (lub połącz z istniejącym kodem):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;
}
}
}
} -
Utwórz (lub edytuj, jeśli istnieje) plik /override/classes/Tools.php
Wklej ten kod do tego pliku (lub połącz z istniejącym kodem):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;
}
}Zauważ, że w linii 13 używamy wyrażenia Tools::isSubmit(’id_category_layered’). Pomaga to modułowi Blocklayered poprawnie określić język. Możesz również dodać do tej linii inne moduły, które mają problemy z określaniem języka.
- Teraz wyczyść pamięć podręczną sklepu (jak wyczyścić pamięć podręczną).
Gotowe! Otwórz swoją witrynę i sprawdź wynik.
