«Адреса сайтов»

В многосайтовых разработках одного проекта на «Битриксе» периодически возникает необходимость в перелинковке сайтов. Типичные примеры: иноязычные версии сайта; подсайты проектов, дочерних компаний, размещаемые на других доменах. Простое решение — создать константы. Удобное решение — использовать данные из БД, хранящиеся в настройках сайтов. «Битрикс» умеет отдавать эти данные только после непосредственного обращения к БД. Понятное дело, такой расклад неприемлем.

center

Так были созданы «Адреса сайтов» — решение, облегчающее жизнь разработчиков. АПИ модуля умеет отдавать данные о всех сайтах системы, и, при необходимости, генерировать на каждом хите динамические константы. Информация забирается из файлового кеша, обращения к БД происходят только при добавлении нового или обновлении старых сайтов (ну и при устаревании кеша, разумеется).

В зоне Bitrix\Siteurl находится класс Sites, в котором доступны сл. методы:

getUrl();
getName();
getDomain();
getList();

У всех необязательный параметр $siteId по-умолчанию равен идентификатору текущего сайта. Метод getList() имеет второй параметр — $field, позволяющий ограничивать выборку.

use Bitrix\Siteurl;

Bitrix\Main\Loader::includeModule('nik.siteurl');

/**
 * Вернёт массив всех сайтов со всеми полями:
 * [s1] => array(NAME => Сайт 1, DOMAIN => site.ru, URL => http://site.ru)
 * [s2] => array(NAME => Сайт 2, DOMAIN => eng.site.ru, URL => http://eng.site.ru)
 * [s3] => …
 */
Sites::getList();

/**
 * Вернёт массив всех сайтов и поле «Название веб-сайта»:
 * [s1] => Сайт 1
 * [s2] => Сайт 2
 * [s3] => …
 */
Sites::getList(false, 'NAME');

/**
 * Вернёт массив всех полей сайта с идентификатором s2:
 * array(NAME => Сайт 2, DOMAIN => eng.site.ru, URL => http://eng.site.ru)
 */
Sites::getList('s2');

Если в настройках модуля активировать генерацию констант, оные будут создаваться на каждом хите. Данные берутся из кеша. Напр., если в системе заведено два сайта с идентификаторами s1 и it, нам будут доступны константы (всегда заглавными буквами):

S1_NAME
S1_DOMAIN
S1_URL

IT_NAME
IT_DOMAIN
IT_URL

Короче, жизнь теперь станет проще.

Скачать с маркетплейса

Поделиться
Отправить
Запинить
Популярное