|
Модуль «Мультирегиональность и многодоменность» подключается сам на событии OnPageStart. Проверять установлен ли модуль функцией includeModule не обязательно.
Однако в init.php модуль ещё не подключен. Если он нужен в init.php, то подключайте так:
<?
if(\Bitrix\Main\Loader::includeModule("askaron.regions"))
{
//здесь можно использовать функции и классы модуля
}
?>
Класс \Askaron\Regions\Region::
public static function getIblockId(): ?int
public static function getIdByXmlId( string $xml_id , ?string $site_id = null ): ?int
public static function getAllItems( ?string $site_id = null ): array
public static function setCurrent( ?int $id = null, ?string $site_id = null): void
public static function getCurrentId( ?string $site_id = null ): ?int
public static function getCurrentCode( ?string $site_id = null ): ?string
public static function getCurrentXmlId( ?string $site_id = null ): ?string
public static function getCurrentName( ?string $site_id = null ): ?string
public static function getCurrentPropDomain( ?string $site_id = null ): ?string
public static function getCurrentPropDomainMobile( ?string $site_id = null ): ?string
public static function getCurrentPropDomainsOtherKeys( ?string $site_id = null ): ?array
public static function getCurrentIsDefault( ?string $site_id = null ): ?bool
public static function getCurrentPropCountry( ?string $site_id = null ): ?string
Метод для получения ID инфоблока, где хранятся регионы
public static function getIblockId(): ?int
Метод возвращает ID инфоблока со списком регионов. В случае ошибки, если инфоблок не существует (ситуация: если кто-то изменил внешний код инфоблока регионов или удалил инфоблок), то вернёт null. Используйте метод для работы с инфоблоком регионов.
Примечание: при установке модуля создается инфоблок типа 2.0 (свойства в отдельной таблице).
Пример
$REGION_IBLOCK_ID = \Askaron\Regions\Region::getIblockId(); // Вернёт 21
Метод для получения ID региона по его XML_ID
public static function getIdByXmlId( string $xml_id , ?string $site_id = null ): ?int
Метод возвращает ID региона по его XML_ID или null, если регион не найден. Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.
Пример
$REGION_ID = \Askaron\Regions\Region::getIdByXmlId("all"); // Вернёт 1063
Метод для получения списка всех регионов
public static function getAllItems( ?string $site_id = null ): array
Метод возвращает массив всех регионов. Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.
Будут выбираться все регионы, если опция «Включить выбор регионов с учетом свойства Код сайта» выключена.
Фильтр по $site_id происходит только если включена опция «Включить выбор регионов с учетом свойства Код сайта». Перед включением опции, надо заполнить свойство "Код сайта" у регионов.
Пример
$arRegions = \Askaron\Regions\Region::getAllItems(); Вернёт
Array(
[1063] => Array
(
[ID] => 1063
[NAME] => Весь мир
[CODE] => all
[XML_ID] => all
[IS_DEFAULT] => (boolean) true
[COUNTRY] => (empty string)
[DOMAIN] => www.askaron.ru
[DOMAIN_MOBILE] => m.askaron.ru
[DOMAINS_OTHER_KEYS] => Array
(
[askaron.ru] => (boolean) true
[amp.askaron.ru] => (boolean) true
)
)
[1065] => Array
(
[ID] => 1065
[NAME] => Астана
[CODE] => astana
[XML_ID] => astana
[IS_DEFAULT] => (boolean) false
[COUNTRY] => kz
[DOMAIN] => astana.askaron.ru
[DOMAIN_MOBILE] => m-astana.askaron.ru [DOMAINS_OTHER_KEYS] => Array
(
)
)
[1064] => Array
(
[ID] => 1064
[NAME] => Минск
[CODE] => minsk
[XML_ID] => minsk
[IS_DEFAULT] => (boolean) false
[COUNTRY] => by
[DOMAIN] => minsk.askaron.ru
[DOMAIN_MOBILE] => m-minsk.askaron.ru
[DOMAINS_OTHER_KEYS] => Array
(
)
)
[1067] => Array
(
[ID] => 1067
[NAME] => Москва и Подмосковье
[CODE] => msk
[XML_ID] => msk
[IS_DEFAULT] => (boolean) false
[COUNTRY] => ru
[DOMAIN] => msk.askaron.ru
[DOMAIN_MOBILE] => m-msk.askaron.ru
[DOMAINS_OTHER_KEYS] => Array
(
)
)
) Важно: в названии обрезаются пробелы и символы подчеркивания. "__Весь мир" => "Весь мир". Это нужно, чтобы важнейшие регионы выводились в административном разделе в начале.
[NAME] => Весь мир В случае, если многодоменность включена, то домен заполняется
[DOMAIN] => www.askaron.ru
[DOMAIN_MOBILE] => m.askaron.ru В случае, если многодоменность выключена, то домен не заполняется
[DOMAIN] => ""
[DOMAIN_MOBILE] => ""
Метод для установки текущего региона
public static function setCurrent( ?int $id = null, ?string $site_id = null): void
Метод используется для переключения текущего региона без многодоменности. С включенной многодоменностью метод вызывать для переключения не нужно, потому что Регион вычисляется по домену. Достаточно сделать ссылку на другой домен.
Параметр $id — ID нового домена. Если $id не задан, то метод будет искать текущий домен по своему алгоритму. Метод без параметра $id не надо вызывать в шаблоне сайта, он вызывается внутри \Askaron\Regions\Region::getCurrentId и других подобных фунциях.
Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт.
Метод ничего не возвращает, а записывает к себе в статическую переменную данные о регионе.
Пример
\Askaron\Regions\Region::setCurrent(1001);
$REGION_ID = \Askaron\Regions\Region::getCurrentId();
// вернёт 1001, если такой регион существует
// далее можете сделать редирект или продолжить выполнение страницы с новым регионом
Статические методы для работы с текущим регионом, который вычислил модуль.
public static function getCurrentId( ?string $site_id = null ): ?int
public static function getCurrentCode( ?string $site_id = null ): ?string
public static function getCurrentXmlId( ?string $site_id = null ): ?string
public static function getCurrentName( ?string $site_id = null ): ?string
public static function getCurrentPropDomain( ?string $site_id = null ): ?string
public static function getCurrentPropDomainMobile( ?string $site_id = null ): ?string
public static function getCurrentPropDomainsOtherKeys( ?string $site_id = null ): ?array
public static function getCurrentIsDefault( ?string $site_id = null ): ?bool
public static function getCurrentPropCountry( ?string $site_id = null ): ?string
Возвращают null только в случае, если никакой регион для сайта не найден. Это почти невозможная ситуация, но может быть, если деактивировать все регионы. Или регион ищем по сайту, где нет регионов, с опцией «Включить выбор регионов с учетом свойства Код сайта».
Параметр $site_id для фильтрации регионов по сайту в Битриксе срабатывает только, если в настройках модуля включена опция «Включить выбор регионов с учетом свойства Код сайта». Параметр $site_id задавать не обязательно, по умолчанию используется SITE_ID — текущий сайт (в публичном разделе). $site_id имеет смысл задавать в административном разделе.
Примеры
ID текущего элемента инфоблока Регионы
$REGION_ID = \Askaron\Regions\Region::getCurrentId();
Код текущего элемента инфоблока Регионы
$REGION_CODE = \Askaron\Regions\Region::getCurrentCode();
XML_ID текущего элемента инфоблока Регионы
$REGION_XML_ID = \Askaron\Regions\Region::getCurrentXmlId();
Название текущего элемента инфоблока Регионы. В названии удаляются символы подчёркивания и пробелы в начале и в конце.
__Весь мир будет выводиться, как Весь мир. Это сделано, чтобы в админке такой регион был раньше для контент-менеджера при сортировке по алфавиту.
$REGION_NAME = \Askaron\Regions\Region::getCurrentName();
Свойство Домен текущего элемента инфоблока Регионы. Метод работает в случае, если включена Многодоменность (для основного домена) в настройках модуля
$REGION_PROP_DOMAIN = \Askaron\Regions\Region::getCurrentPropDomain();
Свойство Мобильный домен элемента инфоблока Регионы. Метод работает в случае, если включена Многодоменность для мобильного домена в настройках модуля
$REGION_PROP_DOMAIN_MOBILE = \Askaron\Regions\Region::getCurrentPropDomainMobile();
Свойство Другие домены для определения региона. Обычно не надо задавать это свойство.
Метод работает, если по домену или мобильному домену регион не определён.
Метод нужен в случае если есть два разнозначных домена с www и без www. Либо нужно создать служебный поддомен вроде amp.сайт.ру и amp-msk.сайт.ру
Возвращает массив ключей из дополнительных доменов для определения региона, если заданы.
$REGION_DOMAINS_OTHER_KEYS = \Askaron\Regions\Region::getCurrentPropDomainsOtherKeys(); // array( "сайт.ru" => true, "amp.сайт.ru" => true )
Свойство Регион по-умолчанию. Метод вернёт true, если установлено в текущем регионе, иначе false
$REGION_IS_DEFAULT = \Askaron\Regions\Region::getCurrentIsDefault();
Свойство Страна для текущего элемента инфоблока Регионы. Вернет XML_ID связанного элемента хайлоадблока. В качестве примера ru, by, kz, ua. Но можно придумать свои «Страны». Например Европа, Азия, Африка. Это свойство сделано для удобной группировки регионов. Свойство может быть вообще не заполнено. Например для __Весь мир
$REGION_COUNTRY = \Askaron\Regions\Region::getCurrentPropCountry();
Описание модуля |
Описание курса
| Настройки++
|