Модуль позволяет добавить в битрикс поддержку множество поддоменов на каждом сайте битрикса, приложив при этом минимальные усилия.
Модуль доступен на GitHub
Что делает модуль
- Добавляет возможность созданиябесконечногочислаподдоменов
- ДобавляетSEO-поддержкудля каждогоподдомена
- ДобавляетSEO-поддержкудля каждойстраницы
- Добавляет возможность указатьсчетчикиимета-тегидля каждого поддомена
- Позволяет включить поддержкумультиязычностии автоматическое переключение языка
- Позволяетавтоматическиопределятьгородпользователя
- Позволяетавтоматическиопределятьстранупользователя
- Позволяет создаватьлюбые дополнительные поляс привязкой к домену
- Позволяет делать локализацию данных
- Позволяет динамически подставлять любое значение в заголовок, title, description, keywords с привязкой к домену
SEO-поддержка
Модуль позволяет задать SEO для каждой страницы с привязкой к домену.
Также вы сможете:
- задатьSEO-текстдля каждой страницы с привязкой к домену
- задатьH1-текстдля каждой страницы с привязкой к домену
- задатьTITLEдля каждой страницы с привязкой к домену
- задатьDescriptionдля каждой страницы с привязкой к домену
- задатьKeywordsдля каждой страницы с привязкой к домену
- создать любые дополнительные поля для каждой страницы с привязкой к домену
- указать общийпаттерн формирования TITLE
- локализовать поляпод любой язык
Кому пригодится- кто хочетпродвигатьсвой сайт точечно влюбом городе
- кто хочетпродвигатьсвой сайт точечно влюбой стране
- кому нужнопереключать язык сайтав зависимости отстраны
- кому нужна тонкаяSEO-настройка
- кому нужнаподдержка разных языков
Плюсы модуля- почти любой функционал можно включать/отключать
- возможность полного управления
- гибкая SEO-поддержка каждой страницы
- гибкая SEO-поддержка каждого домена
- очень легкая настройка
- множество режимов работы
- возможность исключать пути
- возможность задавать соответствия
- не использует сторонние сервисы
- возможность сделать локализацию полей
- поддержка городов, стран и языков
- поддержка ЧПУ
Компоненты- multidomain.city.list- компонент для вывода списка поддоменов
- multidomain.data- компонент для вывода информации текущего поддомена
- multidomain.page- компонент для вывода статических страниц для мультиязычности
Как пользоватьсяИнформация на вкладке '
Установка'
Если возникнет сложность в настройке, мы вам поможем!
Если есть нарекания или предложения по улучшению модуля пишите на почту техподдержки.
Поблагодарить автора
Для покупки программного продукта выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Купить в 1 клик».
Когда оформляете быстрый заказ, укажите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту и ссылка на оплату.
При оформлении заказа в стандартном режиме, заполните полностью форму по последовательным этапам: выберите тип плательщика, заполните все обязательные поля, выберите способ оплаты и нажмите кнопку «Оформить заказ».
Безналичный расчет для юридических лиц
Электронная версия счета для оплаты будет сформирована автоматически на финальной странице после создания заказа. Вы также можете запросить копию счета на свой электронный адрес. Счет необходимо оплатить в любом выбранном вами коммерческом банке в течение 5 банковских дней после оформления заказа.
Безналичный расчет для физических лиц
Вы можете оплатить заказ онлайн на сайте при помощи банковской карты или Яндекс.Деньги. Также Вы можете получить на свой электронный адрес счет с реквизитами для оплаты. Его необходимо распечатать и оплатить в любом выбранном вами коммерческом банке в течение 5 банковских дней после оформления заказа.
Уважаемые покупатели! Обращаем ваше внимание, что в соответствии с пп. 26 п. 2 ст. 149 НК РФ реализация программных продуктов осуществляется без НДС.
1. Приобретенные программные продукты поставляются в виде цифро-буквенного кода. Используя код, вы сможете установить продукт на хостинг. Код приходит на указанный в заказе адрес электронной почты.
2. Время от момента получения оплаты до момента отправки кода занимает некоторое время. В течение этого периода выполняется оформление приобретенной продукции.
3. Уважаемые покупатели! Обращаем ваше внимание, что дополнительная задержка в поставке лицензионных ключей может быть вызвана некорректно указанным адресом электронной почты. Просим вас внимательно проверять ваши персональные данные при оформлении заказа.
Для установки приобретенных программных продуктов, потребуется:
- CSM 1С-Битрикс: Управление сайтом.
- Домен (адрес сайта).
- Хостинг (дисковое пространство для сайта).
Мы рекомендуем купить домен и приобрести хостинг для сайта на Битрикс, воспользовавшись промокодом B1EF-C661-15E1-8773 на скидку 5% при покупке.
Если вы испытываете сложности в плане активации и установке приобретенных продуктов, Вы можете воспользоваться помощью наших специалистов на платной основе, связавшись с нами любым удобным способом.
<p><b>Вся настройка осуществляется в 4 простых шага.</b><b><br></b><b><br></b><b>Шаг 1. Настройка поддоменов на хостинге (только для режима 'Поддомен')<br></b><br>Чтоб настроить поддомены на хостинге вам необходимо будет указать алиасы.<br>Если у вас хостинг, то можете попросить хостера сделать чтобы все домены вида *.mysite.ru вели на корень сайта.<br>Обычно для этого надо сделать что-то вроде такого:<br>- Прописать днс-запись * IN A IP сервера<br>- В настройках apache прописать:<br>ServerName your_site.ru<br>ServerAlias *.your_site.ru<br><b>Мы можем вам в этом помочь<br></b><br><b>Шаг 2. Указать все поддерживаемые поддомены + основной домен</b><br>Вам нужно в админке по пути: Настройки->Настройки продукта->Сайты->Список сайтов->выбираете нужный сайт (обычно s1) и прописываете в поле 'Доменной имя', список доменных имен, каждый домен на новой строке.<br>Данный пункт можно опустить, но мы рекомендуем вам прописать.<br><b>Шаг 3. Настроить модуль 'Поддомены и мультиязычность'<br></b><br><b>Вкладка 'Настройки'</b><ul><li>Активность - флаг активности модуля<br></li><li>Алгоритм - указать алгоритм определения поддоменов<br></li></ul><b>Поддомен</b>- модуль определяет такой тип subdomain.domain.ru, где subdomain является поддоменом.<br><b>Подпапка</b>- модуль определяет такой тип domain.ru/subdomain/, где subdomain является поддоменом.<br><ul><li>Тип - указать какой тип поддоменов.<br></li></ul><b>Страны</b>- режим стран<br><b>Города</b>- режим городов<br><b>Языки</b>- режим языков<br><b>Виртуальный</b>- режим без редиректов и прочего физического<br><ul><li>Включить замену ссылок - автоматическая замена ссылок, работает только при 'Подпапка'<br></li><li>Ключ обнаружения IP - ключ в массиве $_SERVER в котором указан ip пользователя<br></li><li>Домен по умолчанию - указать домен который является по умолчанию. Можно указать поддомен.<br></li><li>Сопоставления - алгоритм сопоставления iso-кода страны/города к имени поддомена.<br></li><li>Исключить пути - регулярные выражения путей, на которых модуль не запускается<br></li></ul>По умолчанию исключаются след пути:<br>/bitrix/*<br>/local/*<br><ul><li>Упраление муршрутизацией - при активном режиме 'Подпапка' - добавляет маршруты, при другом режиме убирает лишние маршруты.<br></li></ul><b>Вкладка 'Мультиязычность'</b><br><ul><li>Включить мультиязычность - при установленной галке мультиязычность работает<br></li><li>Язык по умолчанию - код языка по умолчанию, в нижнем регистре<br></li><li>Выводить HREFLANG - выводит указатели на другие версии языков страницы (полезно для SEO)<br></li></ul><b>Вкладка 'Домены'</b><br>Описание указано ниже (п. Настроить 'Поддомены')<br><b>Вкладка '</b><b>SEO'</b><br><ul><li>Включить SEO - при установке включается SEO у всех доменов и поддоменов. На сайте, для админов, выводится кнопка настройки SEO.<br></li></ul><b>Шаг 4. Настроить 'Поддомены'<br></b><br>Путь: Настройки->Настройки продукта->Настройки модулей->Поддомены и мультиязычность->Вкладка Домены->нажать на ссылку<br>Пройдясь по вышеуказанному пути мы попадаем в хайлоадблок битрикса 'Dev2funMultiDomain'<br>В нем создаем записи.<br>Свойства:<br><ul><li><b>SITE_ID</b>- идентификатор сайта (для мультисайтовости)<br></li><li><b>Активность</b>- указывает на активность домена<br></li><li><b>Название</b>- внутреннее название домена (любое, не влияет на систему)<br></li><li><b>Подддомен</b>- указываем название поддомена, например нам нужен вот такой вид my.domain.ru, то в этом поле указываем my<br></li><li><b>Главный домен</b>- указываем название главного домена, в нашем случае domain.ru<br></li><li><b>HTML-код счетчиков</b>- сюда копируем все нужные счетчики учета (например Yandex.Metrika или Google Analytics)<br></li><li><b>HTML-код мета-тегов</b>- сюда копируем мета-теги для разных верификаций и любые другие, которые нужно вывести для этого поддомена<br></li><li><b>Язык</b>- тут указываем язык поддомена. Работает только при включении<b>Мультиязычности</b>. НО если указать redirect, то система будет проверять пользователя и перенаправлять его на нужный поддомен.<br></li></ul><b>Локализация (языки)</b><br>В модуле с версии 0.2.0 есть поддержка локализации полей.<br><ol><li>добавить поддержку полей в настройках модуля (см. скриншот)<br></li><li>заполнить данные в полях на страницах редактирования элементов и разделов<br></li><li>сделать интеграцию модуля в шаблоны компонентов (ниже подробнее)<br></li><li>сделать локализацию подписей и надписей в шаблоне<br></li></ol><b>Интеграция локализации полей в компоненты:<br></b><br><b>Локализация у списков элементов/разделов:<br></b>Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:<p><table><tbody><tr><td><p>// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'), $arItems = \Dev2fun\MultiDomain\LangData::getLangItemsFields($arItems, 'element'), // где $arItems - массив элементов или разделов // где element - тип, т.к. element - для элементов, section - для разделов</td></tr></tbody></table></p><br><b>Локализация у элементов:</b><br>Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:<p><table><tbody><tr><td><p>// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'), $arResult = \Dev2fun\MultiDomain\LangData::getDataFields($arResult,'element'), // где arResult - массив полей элемента // где element - тип, т.к. мы выводим для элемента, поэтому element</td></tr></tbody></table></p><br><b>Локализация у разделов:</b><br>Вам необходимо прописать в result_modifier.php шаблона используемого компонента следующее:<p><table><tbody><tr><td><p>// подгружаем все модуль и все его классы \Bitrix\Main\Loader::includeModule('dev2fun.multidomain'), $arResult = \Dev2fun\MultiDomain\LangData::getDataFields($arResult,'section'), // где arResult - массив полей раздела // где section- тип, т.к. мы выводим для раздела, поэтому section</td></tr></tbody></table></p><br><b>Локализация подписей и надписей в шаблоне</b><br>Вначале файла необходимо загрузить файл переводов (например файл header.php)<p><table><tbody><tr><td><p>\Dev2fun\MultiDomain\LangData::loadMessages(__FILE__),</td></tr></tbody></table></p>Далее в нужных местах сделать подключение переводов<p><table><tbody><tr><td><p></td></tr></tbody></table></p>Если LangData::loadMessages был вызван в файле header.php, то переводы будут по пути: /путь_до_шаблона/lang/код_языка/header.php.<br><b>Состав файла для `ru`:</b><p><table><tbody><tr><td><p><?php $MESS['HI'] = 'Привет', //$MESS['OTHER'] = 'Другое', // другие переводы</td></tr></tbody></table></p><b>Состав файла для `en`:</b><p><table><tbody><tr><td><p><?php $MESS['HI'] = 'Hi', //$MESS['OTHER'] = 'Other', // другие переводы</td></tr></tbody></table></p><br><b>Настройка seo-шаблонов</b><br><ol><li>Заходите в настройки нужного инфоблока<br></li><li>Переходите во вкладку SEO<br></li><li>Указываете шаблоны в нужных местах<br></li></ol>Список поддерживаемых шаблонов:* `{=multiTitle}` - для Meta Title (разделы/элементы)<br><ul><li>{=multiDescription} - для Meta Description (разделы/элементы)<br></li><li>{=multiKeywords} - для Meta Keywords (разделы/элементы)<br></li><li>{=multiHeading} - для заголовка раздела/элемента<br></li><li>{=multiLangField} - для языкового (перевода) заголовка раздела/элемента<br></li></ul>Структура щаблона на примере Meta Title:<p><table><tbody><tr><td><p>{=multiTitle 'FieldName', 'BeforeText', 'AfterText', 'AdditionData'}</td></tr></tbody></table></p>Где:<br><ul><li>FieldName - это название поле откуда выводить текст (По умолчанию UF_NAME),<br></li><li>BeforeText - это текст до,<br></li><li>AfterText - это текст после,<br></li><li>AdditionData - любая дополнительная информация перечисленная через запятую (отсутствует у {=multiLangField})<br></li></ul>По итогу вы увидите json, который заменяется на нужные данные.<br>Не забудьте поставить галку на 'Очистить кеш вычисленных значений'<br><b>Интеграция в компоненты<br></b><br>В режиме 'подпапка' рекомендуется для комплексных компонентов или компонентов с ЧПУ указать `SEF_FOLDER`.<br>Пример на компоненте<b>bitrix:catalog</b><br><p><table><tbody><tr><td><p>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 ),?></td></tr></tbody></table></p><br><b>Для программистов:</b><br>Получить информацию о текущем домене:<br><p><table><tbody><tr><td><p>Dev2fun\MultiDomain\Base::GetCurrentDomain()</td></tr></tbody></table></p>Получить язык текущего домена:<br><p><table><tbody><tr><td><p>Dev2fun\MultiDomain\Base::GetCurrentDomain()['UF_LANG']</td></tr></tbody></table></p><br>Получить имя поддомена:<p><table><tbody><tr><td><p>Dev2fun\MultiDomain\Base::GetCurrentDomain()['UF_SUBDOMAIN']</td></tr></tbody></table></p><br>Получить все sef-folder:<p><table><tbody><tr><td><p>Dev2fun\MultiDomain\Base::getSefFolder()</td></tr></tbody></table></p><br>Получить все поддомены:<p><table><tbody><tr><td><p>Dev2fun\MultiDomain\SubDomain::getInstance()->getDomainList()</td></tr></tbody></table></p><br>Получить поддомен по фильтру:<br>Фильтр передается как callback (для array_filter).\<p><table><tbody><tr><td><p>Dev2fun\MultiDomain\SubDomain::getInstance()->getDomainByFilter($callbackFilter)</td></tr></tbody></table></p><br><b>Краткие правила установки:</b><b><br></b><br><ol><li>Проверить права у папки modules<br></li><li>Установить модуль в административной панели.<br></li><li>Прочитать сообщение<br></li><li>Настроить поддомены<br></li><li>Настроить модуль<br></li><li>Сбросить кэш<br></li><li>Поблагодарить автора<br></li><li>Использовать<br></li></ol>Поблагодарить автора</p>