Другие модули на выбор

Поддомены и мультиязычность. Страны и Города. Легкая настройка.

Стоимость: руб.
Этот компонент мы сможете использовать только при наличии лицензии. Подходящие редакции:

Получите быструю помощь по покупке, оплате, установке, настройке, продлению и другим вопросам, оставив заявку

Вся настройка осуществляется в 4 простых шага.

Шаг 1. Настройка поддоменов на хостинге (только для режима "Поддомен")

Чтоб настроить поддомены на хостинге вам необходимо будет указать алиасы.
Если у вас хостинг, то можете попросить хостера сделать чтобы все домены вида *.mysite.ru вели на корень сайта.
Обычно для этого надо сделать что-то вроде такого:
- Прописать днс-запись * IN A IP сервера
- В настройках apache прописать:
ServerName your_site.ru
ServerAlias *.your_site.ru
Мы можем вам в этом помочь

Шаг 2. Указать все поддерживаемые поддомены + основной домен

Вам нужно в админке по пути: Настройки->Настройки продукта->Сайты->Список сайтов->выбираете нужный сайт (обычно s1) и прописываете в поле "Доменной имя", список доменных имен, каждый домен на новой строке.
Данный пункт можно опустить, но мы рекомендуем вам прописать.

Шаг 3. Настроить модуль "Поддомены и мультиязычность"

Вкладка "Настройки"
  • Активность - флаг активности модуля
  • Алгоритм - указать алгоритм определения поддоменов
Поддомен - модуль определяет такой тип subdomain.domain.ru, где subdomain является поддоменом.
Подпапка - модуль определяет такой тип domain.ru/subdomain/, где subdomain является поддоменом.
  • Тип - указать какой тип поддоменов.
Страны - режим стран
Города - режим городов
Языки - режим языков
Виртуальный - режим без редиректов и прочего физического
  • Включить замену ссылок - автоматическая замена ссылок, работает только при "Подпапка"
  • Ключ обнаружения IP - ключ в массиве $_SERVER в котором указан ip пользователя
  • Домен по умолчанию - указать домен который является по умолчанию. Можно указать поддомен.
  • Сопоставления - алгоритм сопоставления iso-кода страны/города к имени поддомена.
  • Исключить пути - регулярные выражения путей, на которых модуль не запускается
По умолчанию исключаются след пути:
/bitrix/*
/local/*
  • Упраление муршрутизацией - при активном режиме "Подпапка" - добавляет маршруты, при другом режиме убирает лишние маршруты.
Вкладка "Мультиязычность"
  • Включить мультиязычность - при установленной галке мультиязычность работает
  • Язык по умолчанию - код языка по умолчанию, в нижнем регистре
  • Выводить HREFLANG - выводит указатели на другие версии языков страницы (полезно для SEO)
Вкладка "Домены"

Описание указано ниже (п. Настроить "Поддомены")

Вкладка "SEO"
  • Включить SEO - при установке включается SEO у всех доменов и поддоменов. На сайте, для админов, выводится кнопка настройки SEO.
Шаг 4. Настроить "Поддомены"

Путь: Настройки->Настройки продукта->Настройки модулей->Поддомены и мультиязычность->Вкладка Домены->нажать на ссылку

Пройдясь по вышеуказанному пути мы попадаем в хайлоадблок битрикса "Dev2funMultiDomain"
В нем создаем записи.
Свойства:
  • SITE_ID - идентификатор сайта (для мультисайтовости)
  • Активность - указывает на активность домена
  • Название - внутреннее название домена (любое, не влияет на систему)
  • Подддомен - указываем название поддомена, например нам нужен вот такой вид my.domain.ru, то в этом поле указываем my
  • Главный домен - указываем название главного домена, в нашем случае domain.ru
  • HTML-код счетчиков - сюда копируем все нужные счетчики учета (например Yandex.Metrika или Google Analytics)
  • HTML-код мета-тегов - сюда копируем мета-теги для разных верификаций и любые другие, которые нужно вывести для этого поддомена
  • Язык - тут указываем язык поддомена. Работает только при включении Мультиязычности. НО если указать redirect, то система будет проверять пользователя и перенаправлять его на нужный поддомен.
Локализация (языки)

В модуле с версии 0.2.0 есть поддержка локализации полей.
  1. добавить поддержку полей в настройках модуля (см. скриншот)
  2. заполнить данные в полях на страницах редактирования элементов и разделов
  3. сделать интеграцию модуля в шаблоны компонентов (ниже подробнее)
  4. сделать локализацию подписей и надписей в шаблоне
Интеграция локализации полей в компоненты:

Локализация у списков элементов/разделов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'); $arItems = \Dev2fun\MultiDomain\LangData::getLangItemsFields($arItems, 'element'); // где $arItems - массив элементов или разделов // где element - тип, т.к. element - для элементов, section - для разделов
Локализация у элементов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'); $arResult = \Dev2fun\MultiDomain\LangData::getDataFields($arResult,'element'); // где arResult - массив полей элемента // где element - тип, т.к. мы выводим для элемента, поэтому element
Локализация у разделов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'); $arResult = \Dev2fun\MultiDomain\LangData::getDataFields($arResult,'section'); // где arResult - массив полей раздела // где section- тип, т.к. мы выводим для раздела, поэтому section
Локализация подписей и надписей в шаблоне

Вначале файла необходимо загрузить файл переводов (например файл header.php)\Dev2fun\MultiDomain\LangData::loadMessages(__FILE__);Далее в нужных местах сделать подключение переводов<span><?=\Dev2fun\MultiDomain\LangData::getMessage('HI');?></span>Если LangData::loadMessages был вызван в файле header.php, то переводы будут по пути: /путь_до_шаблона/lang/код_языка/header.php.

Состав файла для `ru`:<?php $MESS['HI'] = 'Привет'; //$MESS['OTHER'] = 'Другое'; // другие переводыСостав файла для `en`:<?php $MESS['HI'] = 'Hi'; //$MESS['OTHER'] = 'Other'; // другие переводы
Настройка seo-шаблонов

  1. Заходите в настройки нужного инфоблока
  2. Переходите во вкладку SEO
  3. Указываете шаблоны в нужных местах
Список поддерживаемых шаблонов:* `{=multiTitle}` - для Meta Title (разделы/элементы)
  • {=multiDescription} - для Meta Description (разделы/элементы)
  • {=multiKeywords} - для Meta Keywords (разделы/элементы)
  • {=multiHeading} - для заголовка раздела/элемента
  • {=multiLangField} - для языкового (перевода) заголовка раздела/элемента
Структура щаблона на примере Meta Title: {=multiTitle "FieldName", "BeforeText", "AfterText", "AdditionData"}Где:
  • FieldName - это название поле откуда выводить текст (По умолчанию UF_NAME),
  • BeforeText - это текст до,
  • AfterText - это текст после,
  • AdditionData - любая дополнительная информация перечисленная через запятую (отсутствует у {=multiLangField})
По итогу вы увидите json, который заменяется на нужные данные.
Не забудьте поставить галку на "Очистить кеш вычисленных значений"

Интеграция в компоненты

В режиме "подпапка" рекомендуется для комплексных компонентов или компонентов с ЧПУ указать `SEF_FOLDER`.

Пример на компоненте bitrix:catalog
<?php $sefFolder = \Dev2fun\MultiDomain\Base::getSefFolder(); ?> <?php $APPLICATION->IncludeComponent( "bitrix:catalog", "bootstrap_v4", array( "IBLOCK_TYPE" => "catalog", "IBLOCK_ID" => "2", "TEMPLATE_THEME" => "site", "HIDE_NOT_AVAILABLE" => "N", "BASKET_URL" => "{$sefFolder}/personal/cart/", "SEF_MODE" => "Y", "SEF_FOLDER" => "{$sefFolder}/catalog/", "AJAX_MODE" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "CACHE_FILTER" => "Y", "CACHE_GROUPS" => "Y", "SET_TITLE" => "Y", "STORE_PATH" => "{$sefFolder}/store/#store_id#", "SEF_URL_TEMPLATES" => array( "sections" => "", "section" => "#SECTION_CODE#/", "element" => "#SECTION_CODE#/#ELEMENT_CODE#/", "compare" => "compare/", "smart_filter" => "#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/", ) // .... другие свойства ), false );?>


Для программистов:

Получить информацию о текущем домене:
Dev2fun\MultiDomain\Base::GetCurrentDomain()Получить язык текущего домена:
Dev2fun\MultiDomain\Base::GetCurrentDomain()['UF_LANG']
Получить имя поддомена:Dev2fun\MultiDomain\Base::GetCurrentDomain()['UF_SUBDOMAIN']
Получить все sef-folder:Dev2fun\MultiDomain\Base::getSefFolder()
Получить все поддомены:Dev2fun\MultiDomain\SubDomain::getInstance()->getDomainList()
Получить поддомен по фильтру:
Фильтр передается как callback (для array_filter).\Dev2fun\MultiDomain\SubDomain::getInstance()->getDomainByFilter($callbackFilter)
Краткие правила установки:

  1. Проверить права у папки modules
  2. Установить модуль в административной панели.
  3. Прочитать сообщение
  4. Настроить поддомены
  5. Настроить модуль
  6. Сбросить кэш
  7. Поблагодарить автора
  8. Использовать
Поблагодарить автора