DARTHARTH

Мультирегиональность с преффиксом в ЧПУ на Drupal 7 — часть 1

Итак, наша любимая рубрика «из говна и палок». На этот раз нам необходимо в Drupal 7 реализовать условную смену региона на сайте из чего у нас будут меняться выводимые контактные данные + в урл будет подставляться суффикс с транслитом выбранного региона. И если вывести данные особо не сложно, то с суффиксом урла уже посложнее.

Самый просто и как по мне очевидный вариант (исключая написание и разработку своего модуля) это перекостылить малость стандартную мультиязычность.

Итак, добавляем свой кастомный «язык» в конфигурации

В добалвении языка октрываем «Другой язык», в Код языка можно вбить транслит нашего региона ,к примеру «belgorod», этот же транслит вбиваем в «Наименование по-английски», в Родное название вбиваем на русс. с большой буквы, как нада (это название у нас будет выводиться в переключалке языка на сайте). В поле «Префикс языка» вбиваем как нам нужно вывести префикс. К примеру для вывода domain/blg/ … в поле префикса вбиваем blg. Домен языка можно не указывать и ставим отметку на направлении Слева направо. Сохраняем наш «регион». По такому примеру можно добавить несколько штук.

После этого поставим доп. модуль для вывода смены языка распахивающимся селектом — https://www.drupal.org/project/lang_dropdown. Плюс этого модуля в том, что в настройках блока переключателя можно настроить какие языка нужно скрыть для отображения. Таким образом мы можем отсечь стандартные русский и английский языки и вывести только наши «языки» ака города.

Можно было остановиться на этом, но по крайней мере у меня осталась после этого пара проблем.

Во-первых после смены города переключателем префикс появлялся нормально, но при этом интерфейс админ-части переходил на английский язык. Если конечно это никого не парит то можно этот шаг пропустить, но т.к. мы могут быть привередлевые пользователи админ. части, нам нужно принудительно задать русский языком для всех наших городов-языков.

Для этого ставим модуль https://www.drupal.org/project/admin_language. После того, как применим его, переходим в список наших городов-языков и ставим отметку Администратор напротив русского языка.

Сохраняемся и помимо этого во вкладке «Язык администрирования» в первом пункте «Использовать язык администрирования на конкретных страницах» очищаем список страниц. Таким образом админ-язык русский, будет у нас на всех страницах.

И во-вторых, после смены города-языка почему-то перестали нормально отображаться алиасы ЧПУ и наблюдалась подобная картина

domain/belgorod/node/1360

При этом если перейти на стандартный язык — русский, алиасы нормально отображались.

Для решения этой проблемы был подобран модуль https://www.drupal.org/project/pathauto_i18n, после включения которого, по-умолчанию, сразу, во всех нодах и таксономиях появилась заветная галочка, которая сразу была включена.

Таким образом у нас при смене языка-города добавлялся префикс в чпу и при этом оставался нужный нам алиас страницы.


upd. По поводу замены переменных, можно в том же темплейте темы сначала создать переменную пути

$path = $_SERVER['REDIRECT_URL'];

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

if (preg_match('/belgorod/', $path)) {
   $output['phones'] =  $phone_belgorod[0]['value'];

}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up