Документация для разработчиков
Темная тема

landing.repo.register

Scope: landing Права на выполнение: для всех

Описание

landing.repo.register(code, fields, manifest)

Метод добавления блока в репозиторий. Возвращает ошибку или ID добавленного блока. Этот ID используется для добавления блока на создаваемые программно лендинги.

При добавлении происходит проверка. Если блок с данным кодом уже присутствует в системе, произойдет его удаление

Метод может вернуть ошибку об опасном содержимом блока. В этом случае требуется сначала проверить регистрируемое содержимое методом landing.repo.checkContent.

При разработке нового блока или изменении существующего может потребоваться быстрее увидеть изменение, чем это позволяет пере-добавление блока или флаг RESET. Рекомендуется для этих целей использовать метод landing.block.updatecontent. Метод передаёт в блок произвольный контент и отображает изменения практически "налету". После того как разработка закончена, разработчик может окончательно его зарегистрировать.

Метод подходит только для изменения контента. При изменении манифеста блок требуется перерегистрировать (без пере-добавления на страницу).

Параметры

Метод Описание С версии
code Уникальный код вашего блока, по нему будет осуществляться удаление блока, если требуется.
fields Массив полей, описывающих ваш блок, состоит из ключей:
  • NAME - название блока
  • DESCRIPTION - описание блока
  • SECTIONS - категории, в которых должен появиться блок, через запятую.

    Если нужной категории нет в списке, просто напишите ее текстом в манифесте, категория будет добавлена. Ключом новой категории становится значение md5(strtolower($sectionName)).

  • PREVIEW - URL картинки, обложки блока
  • CONTENT - html-содержимое блока
  • ACTIVE - активность блока (Y / N)
  • SITE_TEMPLATE_ID – привязка блока к определенному шаблона сайта главного модуля. Только для коробочных версий!

Дополнительные параметры:

  • RESET - если передать со значением Y, то система автоматически обновит все добавленные на страницы блоки на новую верстку. Обратите внимание, технология тестовая и требует отдельного тестирования на блоках, которые вы хотите изменить. Подробнее...
manifest Массив манифеста, которым описывается блок.

Атрибут style может вырезаться встроенным санитайзером. Чтобы это обойти используйте вместо него атрибут bxstyle. При добавлении система конвертирует его в штатный style.

Пример

<?
//для наглядности, передадим PHP-массив на исполнение JS
$data = array(
	'code' => 'myblockx',
	'fields' => array(
		'NAME' => 'Test block',
		'DESCRIPTION' => 'Just try!',
		'SECTIONS' => 'cover,about',
		'PREVIEW' => 'https://www.bitrix24.ru/images/b24_screen.png',
		'CONTENT' => '
<section class="landing-block">
	<div class="text-center g-color-gray-dark-v3 g-pa-10">
		<div class="g-width-600 mx-auto">
			<div class="landing-block-node-text g-font-size-12 ">
				<p>© 2017 All right reserved. Developed by
				<a href="#" class="landing-block-node-link g-color-primary">Bitrix24</a></p>
			</div>
		</div>
	</div>
</section>'
	),
	'manifest' => array(
		'assets' => array(
			'css' => array(
				'https://site.com/aaa.css'
			),
			'js' => array(
				'https://site.com/aaa.js'
			)
		),
		'nodes' =>
			array(
				'.landing-block-node-text' =>
					array(
						'name' => 'Text',
						'type' => 'text',
					),
				'.landing-block-node-link' =>
					array(
						'name' => 'Link',
						'type' => 'link',
					),
			),
		'style' =>
			array(
				'.landing-block-node-text' =>
					array(
						'name' => 'Text',
						'type' => 'typo',
					),
				'.landing-block-node-link' =>
					array(
						'name' => 'Link',
						'type' => 'typo',
					),
			),
		'attrs' =>
			array(
			  '.landing-block-node-text' =>
				  array(
					  'name' => 'Настройка копирайта',
					  'type' => 'dropdown',
					  'attribute' => 'data-copy',
					  'items' => array(
						  'val1' => 'Значение 1',
						  'val2' => 'Значение 2'
							)
					 ),
			),
	),
);
?>
// обратите внимание! далее идет JS код.
BX24.callMethod(
	'landing.repo.register',
	//абстрактный метод, превращающий PHP-массив в JS-объект
	<?= \CUtil::PhpToJSObject($data)?>,
	function(result)
	{
		if(result.error())
			console.error(result.error());
		else
			console.info(result.data());
	}
);


© «Битрикс», 2001-2024, «1С-Битрикс», 2024