Модуль доступен на GitHub
Что делает модуль
- Добавляет возможность создания бесконечного числа поддоменов
- Добавляет SEO-поддержку для каждого поддомена
- Добавляет SEO-поддержку для каждой страницы
- Добавляет возможность указать счетчики и мета-теги для каждого поддомена
- Позволяет включить поддержку мультиязычности и автоматическое переключение языка
- Позволяет автоматически определять город пользователя
- Позволяет автоматически определять страну пользователя
- Позволяет создавать любые дополнительные поля с привязкой к домену
- Позволяет делать локализацию данных
- Позволяет динамически подставлять любое значение в заголовок, title, description, keywords с привязкой к домену
Модуль позволяет задать SEO для каждой страницы с привязкой к домену.
Также вы сможете:
- задать SEO-текст для каждой страницы с привязкой к домену
- задать H1-текст для каждой страницы с привязкой к домену
- задать TITLE для каждой страницы с привязкой к домену
- задать Description для каждой страницы с привязкой к домену
- задать Keywords для каждой страницы с привязкой к домену
- создать любые дополнительные поля для каждой страницы с привязкой к домену
- указать общий паттерн формирования TITLE
- локализовать поля под любой язык
- кто хочет продвигать свой сайт точечно в любом городе
- кто хочет продвигать свой сайт точечно в любой стране
- кому нужно переключать язык сайта в зависимости от страны
- кому нужна тонкая SEO-настройка
- кому нужна поддержка разных языков
- почти любой функционал можно включать/отключать
- возможность полного управления
- гибкая SEO-поддержка каждой страницы
- гибкая SEO-поддержка каждого домена
- очень легкая настройка
- множество режимов работы
- возможность исключать пути
- возможность задавать соответствия
- не использует сторонние сервисы
- возможность сделать локализацию полей
- поддержка городов, стран и языков
- поддержка ЧПУ
- multidomain.city.list - компонент для вывода списка поддоменов
- multidomain.data - компонент для вывода информации текущего поддомена
- multidomain.page - компонент для вывода статических страниц для мультиязычности
Информация на вкладке "Установка"
Если возникнет сложность в настройке, мы вам поможем!
Если есть нарекания или предложения по улучшению модуля пишите на почту техподдержки.
Поблагодарить автора
Шаг 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
- Установить модуль в административной панели.
- Прочитать сообщение
- Настроить поддомены
- Настроить модуль
- Сбросить кэш
- Поблагодарить автора
- Использовать
Коллеги, в связи с кризисом, с 23 апреля 2020 года для всех бесплатных модулей, бесплатная техническая поддержка упразднена. Если ваше обращение не об ошибке в модуле или ошибке из-за модуля, необходимо сделать донат от 1000 руб. Вам нужно понимать, что каждое ваше обращение занимает время специалиста. Просим проявить понимание и не нагружать службу просто так. На многие ваши вопросы может ответить любой другой специалист по битриксу. После того как вы сделали донат в заголовке письма укажите 4 последние цифры кошелька или карты с которой донатили. Одно обращение один донат. Если вопрос в обращении закрылся, то для нового вопроса необходимо сделать донат. Как сделать SUPER-обращение. Делаете донат на 4000 руб и в заголовке к номеру (последние 4 цифры кошелька или карты) укажите слово SUPER. Такие обращения мы обработаем вне очереди. Мы оказываем техническую поддержку по email. |
Контакты: support@dev2fun.com
Правила для письма:
- В теме письма необходимо указать ID модуля
- В теле письма необходимо указать суть проблемы и описать ваши действия, которые к ней привели.
- Приложить скриншоты.
- Прислать доступы до админки и фтп (желательно)
В рабочие дни, со вторника по четверг.
С 11 до 16 (по мск)
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.