如果您的PrestaShop商店中安装了多种语言,则所有网址都将包含语言代码。甚至当您打开网站的主页时,即使使用默认语言,您也会获得该语言后缀。它看起来不好,但幸运的是你可以修复这种行为。
本教程介绍如何从您的URL中删除默认语言代码(通常为“/ en”)。
你必须使用覆盖来做到这一点。
-
创建(或编辑,如果存在)file /override/classes/Link.php
将此代码粘贴到该文件中(或与现有代码合并):<?phpclass 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
将此代码粘贴到该文件中(或与现有代码合并):<?phpclass 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模块正确确定语言。您还可以在此行中添加您在确定语言时遇到问题的其他模块。 - 现在清除商店缓存
全做完了!打开你的PrestaShop网站并检查结果。