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

0

Разработчик: Dev2Fun

Установлено: Более 1000

Обновлено: 04.10.2024

Адаптирован под мобильные устройства

Совместим с редакциями Битрикс: «Первый сайт» / «Старт» / «Стандарт» / «Малый бизнес» / «Бизнес» / «Энтерпрайз» / «Корпоративный портал» /

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

Модуль доступен на GitHub


Что делает модуль
  • Добавляет возможность создания бесконечного числа поддоменов
  • Добавляет SEO-поддержку для каждого поддомена
  • Добавляет SEO-поддержку для каждой страницы
  • Добавляет возможность указать счетчики и мета-теги для каждого поддомена
  • Позволяет включить поддержку мультиязычности и автоматическое переключение языка
  • Позволяет автоматически определять город пользователя
  • Позволяет автоматически определять страну пользователя
  • Позволяет создавать любые дополнительные поля с привязкой к домену
  • Позволяет делать локализацию данных
  • Позволяет динамически подставлять любое значение в заголовок, title, description, keywords с привязкой к домену
SEO-поддержка

Модуль позволяет задать SEO для каждой страницы с привязкой к домену.

Также вы сможете:
  • задать SEO-текст для каждой страницы с привязкой к домену
  • задать H1-текст для каждой страницы с привязкой к домену
  • задать TITLE для каждой страницы с привязкой к домену
  • задать Description для каждой страницы с привязкой к домену
  • задать Keywords для каждой страницы с привязкой к домену
  • создать любые дополнительные поля для каждой страницы с привязкой к домену
  • указать общий паттерн формирования TITLE
  • локализовать поля под любой язык
Кому пригодится
  • кто хочет продвигать свой сайт точечно в любом городе
  • кто хочет продвигать свой сайт точечно в любой стране
  • кому нужно переключать язык сайта в зависимости от страны
  • кому нужна тонкая SEO-настройка
  • кому нужна поддержка разных языков
Плюсы модуля
  • почти любой функционал можно включать/отключать
  • возможность полного управления
  • гибкая SEO-поддержка каждой страницы
  • гибкая SEO-поддержка каждого домена
  • очень легкая настройка
  • множество режимов работы
  • возможность исключать пути
  • возможность задавать соответствия
  • не использует сторонние сервисы
  • возможность сделать локализацию полей
  • поддержка городов, стран и языков
  • поддержка ЧПУ
Компоненты
  • multidomain.city.list - компонент для вывода списка поддоменов
  • multidomain.data - компонент для вывода информации текущего поддомена
  • multidomain.page - компонент для вывода статических страниц для мультиязычности
Как пользоваться

Информация на вкладке "Установка"

Если возникнет сложность в настройке, мы вам поможем!

Если есть нарекания или предложения по улучшению модуля пишите на почту техподдержки.

Поблагодарить автора

Вся настройка осуществляется в 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. Использовать
Поблагодарить автора
Автор: darkfriend
Коллеги, в связи с кризисом, с 23 апреля 2020 года для всех бесплатных модулей, бесплатная техническая поддержка упразднена.
Если ваше обращение не об ошибке в модуле или ошибке из-за модуля, необходимо сделать донат от 1000 руб.
Вам нужно понимать, что каждое ваше обращение занимает время специалиста.
Просим проявить понимание и не нагружать службу просто так.
На многие ваши вопросы может ответить любой другой специалист по битриксу.


После того как вы сделали донат в заголовке письма укажите 4 последние цифры кошелька или карты с которой донатили.
Одно обращение один донат. Если вопрос в обращении закрылся, то для нового вопроса необходимо сделать донат.


Как сделать SUPER-обращение.
Делаете донат на 4000 руб и в заголовке к номеру (последние 4 цифры кошелька или карты) укажите слово SUPER.
Такие обращения мы обработаем вне очереди.
Мы оказываем техническую поддержку по email.

Контакты: support@dev2fun.com

Правила для письма:
  1. В теме письма необходимо указать ID модуля
  2. В теле письма необходимо указать суть проблемы и описать ваши действия, которые к ней привели.
  3. Приложить скриншоты.
  4. Прислать доступы до админки и фтп (желательно)
Техподдержка осуществляется:

В рабочие дни, со вторника по четверг.
С 11 до 16 (по мск)