Поддомены и мультиязычность. Страны и Города. Легкая настройка.
Стоимость:
руб.
Получите быструю помощь по покупке, оплате, установке, настройке, продлению и другим вопросам, оставив заявку
💡 Нужна консультация и помощь по работе?
Вся настройка осуществляется в 4 простых шага.
Шаг 1. Настройка поддоменов на хостинге (только для режима "Поддомен")
Чтоб настроить поддомены на хостинге вам необходимо будет указать алиасы.
Если у вас хостинг, то можете попросить хостера сделать чтобы все домены вида *.mysite.ru вели на корень сайта.
Обычно для этого надо сделать что-то вроде такого:
- Прописать днс-запись * IN A IP сервера
- В настройках apache прописать:
ServerName your_site.ru
ServerAlias *.your_site.ru
Мы можем вам в этом помочь
Шаг 2. Указать все поддерживаемые поддомены + основной домен
Вам нужно в админке по пути: Настройки->Настройки продукта->Сайты->Список сайтов->выбираете нужный сайт (обычно s1) и прописываете в поле "Доменной имя", список доменных имен, каждый домен на новой строке.
Данный пункт можно опустить, но мы рекомендуем вам прописать.
Шаг 3. Настроить модуль "Поддомены и мультиязычность"
Вкладка "Настройки"
Подпапка - модуль определяет такой тип domain.ru/subdomain/, где subdomain является поддоменом.
Города - режим городов
Языки - режим языков
Виртуальный - режим без редиректов и прочего физического
/bitrix/*
/local/*
Описание указано ниже (п. Настроить "Поддомены")
Вкладка "SEO"
Путь: Настройки->Настройки продукта->Настройки модулей->Поддомены и мультиязычность->Вкладка Домены->нажать на ссылку
Пройдясь по вышеуказанному пути мы попадаем в хайлоадблок битрикса "Dev2funMultiDomain"
В нем создаем записи.
Свойства:
В модуле с версии 0.2.0 есть поддержка локализации полей.
Локализация у списков элементов/разделов:
Вам необходимо прописать в 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-шаблонов
Не забудьте поставить галку на "Очистить кеш вычисленных значений"
Интеграция в компоненты
В режиме "подпапка" рекомендуется для комплексных компонентов или компонентов с ЧПУ указать `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. Настройка поддоменов на хостинге (только для режима "Поддомен")
Чтоб настроить поддомены на хостинге вам необходимо будет указать алиасы.
Если у вас хостинг, то можете попросить хостера сделать чтобы все домены вида *.mysite.ru вели на корень сайта.
Обычно для этого надо сделать что-то вроде такого:
- Прописать днс-запись * IN A IP сервера
- В настройках apache прописать:
ServerName your_site.ru
ServerAlias *.your_site.ru
Мы можем вам в этом помочь
Шаг 2. Указать все поддерживаемые поддомены + основной домен
Вам нужно в админке по пути: Настройки->Настройки продукта->Сайты->Список сайтов->выбираете нужный сайт (обычно s1) и прописываете в поле "Доменной имя", список доменных имен, каждый домен на новой строке.
Данный пункт можно опустить, но мы рекомендуем вам прописать.
Шаг 3. Настроить модуль "Поддомены и мультиязычность"
Вкладка "Настройки"
- Активность - флаг активности модуля
- Алгоритм - указать алгоритм определения поддоменов
Подпапка - модуль определяет такой тип domain.ru/subdomain/, где subdomain является поддоменом.
- Тип - указать какой тип поддоменов.
Города - режим городов
Языки - режим языков
Виртуальный - режим без редиректов и прочего физического
- Включить замену ссылок - автоматическая замена ссылок, работает только при "Подпапка"
- Ключ обнаружения IP - ключ в массиве $_SERVER в котором указан ip пользователя
- Домен по умолчанию - указать домен который является по умолчанию. Можно указать поддомен.
- Сопоставления - алгоритм сопоставления iso-кода страны/города к имени поддомена.
- Исключить пути - регулярные выражения путей, на которых модуль не запускается
/bitrix/*
/local/*
- Упраление муршрутизацией - при активном режиме "Подпапка" - добавляет маршруты, при другом режиме убирает лишние маршруты.
- Включить мультиязычность - при установленной галке мультиязычность работает
- Язык по умолчанию - код языка по умолчанию, в нижнем регистре
- Выводить HREFLANG - выводит указатели на другие версии языков страницы (полезно для SEO)
Описание указано ниже (п. Настроить "Поддомены")
Вкладка "SEO"
- Включить SEO - при установке включается SEO у всех доменов и поддоменов. На сайте, для админов, выводится кнопка настройки SEO.
Путь: Настройки->Настройки продукта->Настройки модулей->Поддомены и мультиязычность->Вкладка Домены->нажать на ссылку
Пройдясь по вышеуказанному пути мы попадаем в хайлоадблок битрикса "Dev2funMultiDomain"
В нем создаем записи.
Свойства:
- SITE_ID - идентификатор сайта (для мультисайтовости)
- Активность - указывает на активность домена
- Название - внутреннее название домена (любое, не влияет на систему)
- Подддомен - указываем название поддомена, например нам нужен вот такой вид my.domain.ru, то в этом поле указываем my
- Главный домен - указываем название главного домена, в нашем случае domain.ru
- HTML-код счетчиков - сюда копируем все нужные счетчики учета (например Yandex.Metrika или Google Analytics)
- HTML-код мета-тегов - сюда копируем мета-теги для разных верификаций и любые другие, которые нужно вывести для этого поддомена
- Язык - тут указываем язык поддомена. Работает только при включении Мультиязычности. НО если указать redirect, то система будет проверять пользователя и перенаправлять его на нужный поддомен.
В модуле с версии 0.2.0 есть поддержка локализации полей.
- добавить поддержку полей в настройках модуля (см. скриншот)
- заполнить данные в полях на страницах редактирования элементов и разделов
- сделать интеграцию модуля в шаблоны компонентов (ниже подробнее)
- сделать локализацию подписей и надписей в шаблоне
Локализация у списков элементов/разделов:
Вам необходимо прописать в 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-шаблонов
- Заходите в настройки нужного инфоблока
- Переходите во вкладку SEO
- Указываете шаблоны в нужных местах
- {=multiDescription} - для Meta Description (разделы/элементы)
- {=multiKeywords} - для Meta Keywords (разделы/элементы)
- {=multiHeading} - для заголовка раздела/элемента
- {=multiLangField} - для языкового (перевода) заголовка раздела/элемента
- FieldName - это название поле откуда выводить текст (По умолчанию UF_NAME),
- BeforeText - это текст до,
- AfterText - это текст после,
- AdditionData - любая дополнительная информация перечисленная через запятую (отсутствует у {=multiLangField})
Не забудьте поставить галку на "Очистить кеш вычисленных значений"
Интеграция в компоненты
В режиме "подпапка" рекомендуется для комплексных компонентов или компонентов с ЧПУ указать `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)
Краткие правила установки:
- Проверить права у папки modules
- Установить модуль в административной панели.
- Прочитать сообщение
- Настроить поддомены
- Настроить модуль
- Сбросить кэш
- Поблагодарить автора
- Использовать