Язык в URL на OcStore 2.3.0.2.3 и seo_pro

Тема в разделе "OpenCart", создана пользователем aliv, 14 мар 2019.

  1. aliv

    aliv

    Регистрация:
    13 мар 2019
    Сообщения:
    1
    Симпатии:
    0
    Привет,

    Может кому пригодится.

    Чистая установка ocStore 2.3.0.2.3, включен seo_pro.
    Установлены русский (по умолчанию), украинский и английский языки.
    Для получения языка в URL внесены такие правки в seo_pro:
    После строки
    // Decode URL
    добавлено такое:
    Код:
            if (isset($this->request->get['_route_'])) {
                $urllanguage = explode('/', trim(utf8_strtolower($this->request->get['_route_']), '/'));
                $this->load->model('localisation/language');
                $languages = $this->model_localisation_language->getLanguages();
                $lang = array();
                foreach ($languages as $language) {
                    $lang[] = $language['code'];
                }
                if (isset($urllanguage[0]) && in_array($urllanguage[0], $lang)) {
                    if (count($urllanguage) > 1) {
                        $replace_lang = $urllanguage[0]."/";
                    } else {
                        $replace_lang = $urllanguage[0];
                    }
                    $this->request->get['_route_'] = str_replace($replace_lang, '', $this->request->get['_route_']);
                    if ($this->request->get['_route_'] == '' || $this->request->get['_route_'] == '/') {
                        unset($this->request->get['_route_']);
                    }
                }
            }
    
    Затем после строки:
    $seo_url = trim($seo_url, '/');
    добавлено такое:
    Код:
            $this->load->model('setting/setting');
            $store_settings_config = $this->model_setting_setting->getSetting("config", $this->config->get('config_store_id'));
    
            if (isset($this->session->data['language']) && $this->session->data['language'] != $store_settings_config['config_language']) {
                $seo_url = $this->session->data['language']."/".$seo_url;
            }
    
    После этого соответствующие страницы на украинском и английском языках работают по URL /uk-ua/ и /en-gb/ соответственно.
    Русский язык доступен без префикса.

    Чуть позже подумаю над тем, чтобы работало просто по /ua/ /en/