add
Внимание! Мы настоятельно рекомендуем ознакомиться сначала с REST-документацией модуля Сайты, чтобы понять как модуль функционирует (тем более REST доступен и в коробочной версии). Данную документацию рассматривайте как подспорье при работе в коробке, когда вам действительно мало функционала REST, или вы хотите детальнее разобраться в API.
public static function Site::add( $fields );
Добавление сайта.
Параметры
| Параметр | Описание | Версия |
|---|---|---|
| $fields | массив параметров сайта. Ключи массива:
|
Примеры
if (\Bitrix\Main\Loader::includeModule('landing'))
{
$res = \Bitrix\Landing\Site::add(
[
'TITLE' => 'New site',
'DOMAIN_ID' => 1,
'CODE' => 'tratata'
]
);
if ($res->isSuccess())
{
echo 'new id: ' . $res->getId();
}
else
{
print_r($res->getErrors());
}
}
И небольшое погружение в архитектуру работы Сайтов24 в коробке. Так сложилось исторически, что в Битрикс24 (и облачная и коробочная версии) Сайты располагаются в публичной части, а вот в случае БУС они размещаются в административном интерфейсе.
Причем, один Сайт24 соотносится строго с одним сайтом главного модуля. Такое связывание происходит автоматически при заходе в Сайт24 через меню. Программная связь осуществляется через поле SMN_SITE_ID. Вот пример такого кода:
if (\Bitrix\Main\Loader::includeModule('landing'))
{
$res = \Bitrix\Landing\Site::add(
[
'TITLE' => 'New site',
'DOMAIN_ID' => 1,
'CODE' => 'tratata',
'SMN_SITE_ID' => 's1'
]
);
if ($res->isSuccess())
{
echo 'new id: ' . $res->getId();
}
else
{
print_r($res->getErrors());
}
}
Добавление нового сайта без привязки к SMN_SITE_ID в случае БУС не запрещается, но является достаточно специфичной задачей и выходит за рамки данной документации.
Создание по шаблону
У разработчика может возникнуть необходимость в создании сайта или страницы по шаблону. Одному из тех, которые отображаются в интерфейсе создания сайта или страницы. Вот как это можно сделать начиная с версии 18.6.0. Это можно сделать посредством обращения непосредственно к компоненту демо-шаблонов.
// подключаем компонент и иницируем его параметрами
$componentName = 'bitrix:landing.demo';
$className = \CBitrixComponent::includeComponentClass($componentName);
$demoCmp = new $className;
$demoCmp->initComponent($componentName);
$demoCmp->arParams = array(
'TYPE' => 'STORE',// PAGE – обычный сайт, STORE – магазин
'DISABLE_REDIRECT' => 'Y'
);
// получение списка демо-шаблонов сайтов
$tpl = $demoCmp->getDemoSite();
// и страниц
$tpl = $demoCmp->getDemoPage();
// ключами массива $tpl будет код шаблона, который и требуется передать в следующий метод
$demoCmp->actionSelect('app');
В случае магазина через данный пример не будет сделан импорт каталога, следует это учитывать. Также следует заметить, что этот код лишь пример применения API.