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

Элементы

Поля элементов

Элементы отображаются в правой части каталога.

  • Отображать в нескольких группах.
  • Добавлять подзаголовки и описание.
  • Добавлять группам иконки.
  • Настроить текст кнопки и ее действие.

Полный список полей элемента:

type ItemData = {
	id: string | number,
	title: string,
	subtitle?: string,
	groupIds: Array,
	description: string,
	tags?: Array,
	button?: ButtonData,
	customData?: { [key: string]: any },
};

Отображение в группах

Каждый элемент может отображаться при выборе разных групп. Например, мы хотим показывать пользователю книги по жанрам. У одной книги может быть нескольких жанров, поэтому она должна отображаться в нескольких группах:

item-groups-1.png

item-groups-2.png

const catalogOptions = {
	groups: [
		[
			{
				id: 'fantasy',
				name: 'фэнтези',
			},
			{
				id: 'detective',
				name: 'детектив',
			}
		],
	],
	items: [
		{
			id: 'book',
			title: 'Книга нескольких жанров',
			groupIds: ['fantasy', 'detective'],
		},
		{
			id: 'detective-book',
			title: 'Книга в жанре детектив',
			groupIds: ['detective'],
		},
		{
			id: 'fantasy-book',
			title: 'Книга в жанре фэнтези',
			groupIds: ['fantasy'],
		}
	],
}

Подзаголовок

item-subtitle.png

const itemWithSubtitle = {
	id: 'book',
	title: 'Книга нескольких жанров',
	subtitle: 'подзаголовок',
	groupIds: ['fantasy', 'detective'],
};

Описание

item-description.png

const itemWithDescription = {
	id: 'book',
	title: 'Книга нескольких жанров',
	subtitle: 'подзаголовок',
	description: 'Детектив в фэнтези мире',
	groupIds: ['fantasy', 'detective'],
};

Теги

item-tags.png

const itemWithTags = {
	id: 'hound-of-baskervilles',
	title: 'Собака Баскервилей',
	tags: ['Конан Дойл'],
}

Кнопка

По умолчанию в элемент добавляется кнопка, которую можно настроить, передав в объект элемента соответствующий объект по ключу button. Этот объект должен иметь следующие поля:

  • text – текст кнопки (по умолчанию "добавить");
  • action – callback, который вызывается при нажатии на кнопку.

item-button.png

const item = {
	id: 'hound-of-baskervilles',
	title: 'Собака Баскервилей',
	tags: ['Конан Дойл'],
	button: {
		text: 'показать автора',
		action: () => BX.UI.Notification.Center.notify({
			content: 'Артур Конан Дойл',
		}),
	}
}

В callback action-a передается событие типа BaseEvent, в котором по ключу eventData можно получить данные элемента, обернутые в объект прокси.

item-button-2.png

const item = {
	id: 'hound-of-baskervilles',
	title: 'Собака Баскервилей',
	tags: ['конан дойл'],
	groupIds: ['detective'],
	button: {
		text: 'показать тэги',
		action: (event) => {
			const itemTags = event.getData().eventData.tags;

			BX.UI.Notification.Center.notify({
				content: (
					'Теги данного элемента: '
					+ itemTags.map(tag => `"${tag}"`).join(', ')
				),
			});
		},
	}
};

Если данных элемента в callback-е недостаточно, то по ключу customData можно добавить дополнительные данные.



Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх