Модуль позволяет добавить в битрикс поддержку множество поддоменов на каждом сайте битрикса, приложив при этом минимальные усилия.
Модуль доступен на GitHub
Что делает модуль
Модуль позволяет задать SEO для каждой страницы с привязкой к домену.
Также вы сможете:
Информация на вкладке "Установка"
Если возникнет сложность в настройке, мы вам поможем!
Если есть нарекания или предложения по улучшению модуля пишите на почту техподдержки.
Поблагодарить автора
Модуль доступен на GitHub
Что делает модуль
- Добавляет возможность создания бесконечного числа поддоменов
- Добавляет SEO-поддержку для каждого поддомена
- Добавляет SEO-поддержку для каждой страницы
- Добавляет возможность указать счетчики и мета-теги для каждого поддомена
- Позволяет включить поддержку мультиязычности и автоматическое переключение языка
- Позволяет автоматически определять город пользователя
- Позволяет автоматически определять страну пользователя
- Позволяет создавать любые дополнительные поля с привязкой к домену
- Позволяет делать локализацию данных
- Позволяет динамически подставлять любое значение в заголовок, title, description, keywords с привязкой к домену
Модуль позволяет задать 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. Настроить модуль "Поддомены и мультиязычность"
Вкладка "Настройки"
Подпапка - модуль определяет такой тип domain.ru/subdomain/, где subdomain является поддоменом.
Города - режим городов
Языки - режим языков
Виртуальный - режим без редиректов и прочего физического
/bitrix/*
/local/*
Описание указано ниже (п. Настроить "Поддомены")
Вкладка "SEO"
Путь: Настройки->Настройки продукта->Настройки модулей->Поддомены и мультиязычность->Вкладка Домены->нажать на ссылку
Пройдясь по вышеуказанному пути мы попадаем в хайлоадблок битрикса "Dev2funMultiDomain"
В нем создаем записи.
Свойства:
В модуле с версии 0.2.0 есть поддержка локализации полей.
Локализация у списков элементов/разделов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:
Локализация у элементов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:
Локализация у разделов:
Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:
Локализация подписей и надписей в шаблоне
Вначале файла необходимо загрузить файл переводов (например файл header.php)
Далее в нужных местах сделать подключение переводов
Если LangData::loadMessages был вызван в файле header.php, то переводы будут по пути: /путь_до_шаблона/lang/код_языка/header.php.
Состав файла для `ru`:
Состав файла для `en`:
Настройка seo-шаблонов
Где:
Не забудьте поставить галку на "Очистить кеш вычисленных значений"
Интеграция в компоненты
В режиме "подпапка" рекомендуется для комплексных компонентов или компонентов с ЧПУ указать `SEF_FOLDER`.
Пример на компоненте bitrix:catalog
Для программистов:
Получить информацию о текущем домене:
Получить язык текущего домена:
Получить имя поддомена:
Получить все sef-folder:
Получить все поддомены:
Получить поддомен по фильтру:
Фильтр передается как callback (для array_filter).\
Краткие правила установки:
Шаг 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> |
Состав файла для `ru`:
<?php $MESS["HI"] = "Привет"; //$MESS["OTHER"] = "Другое"; // другие переводы |
<?php $MESS["HI"] = "Hi"; //$MESS["OTHER"] = "Other"; // другие переводы |
Настройка seo-шаблонов
- Заходите в настройки нужного инфоблока
- Переходите во вкладку SEO
- Указываете шаблоны в нужных местах
- {=multiDescription} - для Meta Description (разделы/элементы)
- {=multiKeywords} - для Meta Keywords (разделы/элементы)
- {=multiHeading} - для заголовка раздела/элемента
- {=multiLangField} - для языкового (перевода) заголовка раздела/элемента
{=multiTitle "FieldName", "BeforeText", "AfterText", "AdditionData"} |
- 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
- Установить модуль в административной панели.
- Прочитать сообщение
- Настроить поддомены
- Настроить модуль
- Сбросить кэш
- Поблагодарить автора
- Использовать
Автор: darkfriend
Контакты: support@dev2fun.com
Правила для письма:
В рабочие дни, со вторника по четверг.
С 11 до 16 (по мск)
Коллеги, в связи с кризисом, с 23 апреля 2020 года для всех бесплатных модулей, бесплатная техническая поддержка упразднена. Если ваше обращение не об ошибке в модуле или ошибке из-за модуля, необходимо сделать донат от 1000 руб. Вам нужно понимать, что каждое ваше обращение занимает время специалиста. Просим проявить понимание и не нагружать службу просто так. На многие ваши вопросы может ответить любой другой специалист по битриксу. После того как вы сделали донат в заголовке письма укажите 4 последние цифры кошелька или карты с которой донатили. Одно обращение один донат. Если вопрос в обращении закрылся, то для нового вопроса необходимо сделать донат. Как сделать SUPER-обращение. Делаете донат на 4000 руб и в заголовке к номеру (последние 4 цифры кошелька или карты) укажите слово SUPER. Такие обращения мы обработаем вне очереди. Мы оказываем техническую поддержку по email. |
Контакты: support@dev2fun.com
Правила для письма:
- В теме письма необходимо указать ID модуля
- В теле письма необходимо указать суть проблемы и описать ваши действия, которые к ней привели.
- Приложить скриншоты.
- Прислать доступы до админки и фтп (желательно)
В рабочие дни, со вторника по четверг.
С 11 до 16 (по мск)