如何从PrestaShop中的URL中删除“/en”

如果您的PrestaShop商店中安装了多种语言,则所有网址都将包含语言代码。甚至当您打开网站的主页时,即使使用默认语言,您也会获得该语言后缀。它看起来不好,但幸运的是你可以修复这种行为。

本教程介绍如何从您的URL中删除默认语言代码(通常为“/ en”)。


你必须使用覆盖来做到这一点。

  1.  创建(或编辑,如果存在)file /override/classes/Link.php
    将此代码粘贴到该文件中(或与现有代码合并):
    <?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;
                }
            }
        }
    }
     
     
  2.  创建(或编辑是否存在)文件/override/classes/Tools.php
    将此代码粘贴到该文件中(或与现有代码合并):

     

     
    <?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模块正确确定语言。您还可以在此行中添加您在确定语言时遇到问题的其他模块。

  3. 现在清除商店缓存

全做完了!打开你的PrestaShop网站并检查结果。


上一篇:如何在PrestaShop中启用或禁用产品比较 下一篇:如何在PrestaShop中启用维护模式
  • 版权声明:内容来自互联网不代表本站观点,2018-05-12发表于 prestashop教程栏目。
  • 转载请注明: 如何从PrestaShop中的URL中删除“/en”| prestashop教程 +复制链接