Main > Abyss > Magento 2: Настройка URL для нескольких стран и языков

Magento 2: Настройка URL для нескольких стран и языков

16.07.2021 0 comments » Views: 318
Magento Logo

Решил поиграться с настройкой мультиязычности в Magento 2.4.

Для начала определился, что хочу сделать URL вот такого вида

  • /au/en - Австралия, английский
  • /nz/en - Новая Зеландия, английский
  • /nz/mi - Новая Зеландия, Маори
  • /us/en - США, Английский
  • /us/es - США, Испанский

Сделать это было бы довольно просто, если бы Store View Code мог содержать слеш, однако это не так. Можно конечно задать Store View Code вот так "us_en" и получить url вида "http://m242.sv/us_en", но это не красиво.

Везде далее будет использоваться мой локальный домен "m242.sv", вам надо использовать свой

Кроме того, Store View Code должен быть уникальным, т.е. сделать конфигурацию вида

  • au/en
    • Base Url: site.com/au/
    • Store Code: au
    • Store View Code: en
  • nz/en
    • Base Url: site.com/nz/
    • Store Code: nz
    • Store View Code: en

так же не получится, т.к. Store View Code в обоих случаях "en".


Разрулить такую ситуацию помогают обычные папки и реврайты в nginx.

Настройка Сторов

Admin > Settings > All Stores

Создаем вебсайт, сторы и стор вью по такой схеме

  • au/en
    • Store Code: au
      • Store View Code: au_en
  • nz/en, nz/mi
    • Store Code: nz
      • Store View Code: nz_en
      • Store View Code: nz_mi
  • us/en, us/mi
    • Store Code: us
      • Store View Code: us_en
      • Store View Code: us_mi

Настройка Base URL

Admin > Stores > Configuration > [Выбрать Scope] > General > Web > Base URLs

Меняем Base Url и Base Url Link

  • Scope: Default config
    • Base URL: http://m242.sv/
    • Base Link URL: http://m242.sv/
    • Base URL for Static View Files: http://m242.sv/static/
    • Base URL for User Media Files: http://m242.sv/media/
  • AU English Store View
    • Base URL: http://m242.sv/au/en
    • Base Link URL: http://m242.sv/au/en
  • NZ English Store View
    • Base URL: http://m242.sv/nz/en
    • Base Link URL: http://m242.sv/nz/en
  • NZ Maori Store View
    • Base URL: http://m242.sv/nz/mi
    • Base Link URL: http://m242.sv/nz/mi
  • US English Store View
    • Base URL: http://m242.sv/us/en
    • Base Link URL: http://m242.sv/us/en
  • US Espanol Store View
    • Base URL: http://m242.sv/us/es
    • Base Link URL: http://m242.sv/us/es

Настройка Nginx

В файл конфигурации Nginx-а, добавляем реврайты в корневую секцию location

А так же в location обрабатывающий php скрипты


Index файлы в Magento

Создаем соответствующие индекс файлы в которых и укажем какой Store View Code нужно использовать

  • pub/au/en/index.php
  • pub/nz/en/index.php
  • pub/nz/mi/index.php
  • pub/us/en/index.php
  • pub/us/es/index.php

Содержимое вот такое

Тут в PARAM_RUN_CODE нужно указать соответсвующий Store View Code, т.е. один из: au_en, nz_en, nz_mi, us_en, us_es.


Отключение добавления Store View Code в URL

Admin > Stores > Configuration > Scope:Default Config > General > Web > Url Options

Нужно установить "Add Store Code to Urls = No" если это не так


Перезагрузка Nginx и чистка кешей

Перезапускаем nginx

Чистим кеши Magento и при необходимости Redis-а

В случае странных редиректов по типу переходите на au/en, а открывается us/en, попробуйте почистить куки в браузере, т.к. Store Switcher ставит куку, которую система использует для определения дефолтного стора. Эта логика находится тут: vendor/magento/module-store/Model/StoreResolver.php [method: getCurrentStoreId]


Проверка

Переходим на витрину магазина и видим, что в футере появился свитчер сторов

И для сторов у которых больше 1 стор вью, появляется переключатель языков в в шапке сайта

Дальнейшая настройка локалей, валют и всего остального делается как обычно 🙂

Author: | Rating: 4/5 | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>