При создании интернет магазина, разработчики часто сталкиваются с проблемой мультиязычности сайта. Одним из важных аспектов при создании мультиязычного интернет магазина на Opencart является создание обработка SEO адресов для каждой из версии сайта.
Данная модификация позволяет добавить в URL код языка, на котором просматривается страница, а для языка по-умолчанию адрес остается тот же. Таким образом для поисковой системы у вас реализованы отдельные каталоги для каждого из языков.
Модуль MultiLanguage SEO URL работает исключительно с SEO_PRO, позволяя создать необходимую структуру для создания мультиязычного интернет магазина. Для наглядности вы можете ознакомиться с ниже расположенными несколькими скриншотами.
В архиве стандартная комплектация моих модулей: скриншоты, файлы README рус. и англ. версии, файлы для загрузки на сервер. При загрузке ни один файл не будет перезаписан.
Правила использования модуля стандартные, для моих бесплатных модулей: модуль абсолютно бесплатный, для использования, однако загружать на сторонние ресурсы запрещено – делитесь ссылкой на эту страницу, спасибо за понимание.
Спасибо за доверие, не забываем подписываться и ставить +1, ведь именно благодаря ВАШИМ “лайкам” я вижу что работа не напрасна, а комментарии дают вдохновение на сотворение новых модулей и модификацию имеющихся!
Также буду рад услышать ваши комментарии относительно данного и иных моих модулей, а также предложения по их улучшению, и идеи для написания новых модулей!
Скачать MultiLanguage SEO URL для Opencart: nikita_sp-multilanguage-seo-url
UPD: По многочисленный просьбам был проведен анализ модуля и обнаружен баг, вызывающий ошибку «Notice: Undefined index: in /home/…/vqmod/vqcache/vq2-catalog_controller_common_seo_pro.php on line 77«. Данное обновление исправляет ошибку. Спасибо пользователям, которые указали на ошибку и предоставили данные для доступа на сервера для определения и анализа ошибки. (Андрей, Fusses, Bassel)
Скачать MultiLanguage SEO URL 1.2 для Opencart на сайте автора: тыць
UPD2: Внимание: для того чтобы позволить поисковым роботам просматривать сайт на других языках по ссылке, необходимо открыть файл index.php (Opencart 1.5.x, 2.0.x) в корне вашего сайта, и найти строку (~162 line):
1 |
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) { |
UPD3: для версии Opencart 2.1.x необходимо найти строку:
1 |
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) { |
И перед условием вставить следующий код:
1 2 3 4 5 6 7 8 9 10 11 |
$language_from_url = explode("/", $request->server['REQUEST_URI']); foreach($language_from_url as $lang){ if(array_key_exists($lang, $languages)){ $language_from_url = $lang; break; } } // If nothing was found don't apply if(is_array($language_from_url)){ $language_from_url = false; } |
Далее (шаг 2), для версии Opencart 1.5.x и 2.0.x необходимо найти строку (~167 line):
1 |
$code = $detect; |
и после нее вставить код
1 2 |
}elseif ($language_from_url && array_key_exists($language_from_url, $languages) && $languages[$language_from_url]['status'] ){ $code = $language_from_url; |
Для версии Opencart 2.1.x необходимо найти строку ()
1 |
$code = $detect ? $detect : $config->get('config_language'); |
И перед ней добавить:
1 2 3 |
if(!$detect && ($language_from_url && array_key_exists($language_from_url, $languages) && $languages[$language_from_url]['status'])){ $detect = $language_from_url; } |
По-умолчанию, язык выбирается исходя из нескольких параметров:
- выбранного языка на сайте (session или cookie)
- определенного через браузер (в каждом браузере есть информация о языке)
В противном случае применяется язык по-умолчанию, заданный в административной части.
Если вам необходимо, чтобы способ определения языка по URL был основным, то в таком случае на шаге 2 найдите первую строку условия:
Opencart 1.5.x, 2.0.x:
1 |
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) { |
1 |
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) { |
1 2 3 |
if ($language_from_url && array_key_exists($language_from_url, $languages)){ $code = $language_from_url; }else |
1 2 3 |
if ($language_from_url && array_key_exists($language_from_url, $languages)){ $code = $language_from_url; }elseif (isset($session->data['language']) && array_key_exists($session->data['language'], $languages)) { |
Оригинал статьи здесь, спасибо автору.