+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Произвольный XML: как добавить свой атрибут в <category>?

В недавних обновлениях добавили обработчик OnCustomXmlCategory, который позволяет добавлять собственные атрибуты в тег <category>.

Рассмотрим добавление своего атрибута picture для вывода изображения картинки категории.

Прежде всего, необходимо в настройках профиля в XML категории добавить новый атрибут:
<category id="#ID#" parentId="#PARENT_ID#" picture="#PICTURE#">#NAME#</category>

Далее, необходимо добавить обработчик на сайте:

# В произвольном XML добавить свои атрибуты в <category>
# Пример: <category id="#ID#" parentId="#PARENT_ID#" picture="#PICTURE#">#NAME#</category>
addEventHandler('acrit.exportproplus', 'OnCustomXmlCategory', function($plugin, $sectionId, $category, &$replace){
	# Задаём «заготовку» для значения, это обязательно чтобы при пустых значениях в XML не осталось #PICTURE#
	$replace['#PICTURE#'] = null;
	# Задаём ID профилей, для которых необходимо категориям добавить вывод картинок
	$profilesId = [12, 15, 23];
	if($profile = $plugin->getProfileArray()){
		if(in_array($profile['ID'], $profilesId)){
			# Ищем текущий раздел по его ID ($sectionId)
			if($section = \CIBlockSection::getList([], ['ID' => $sectionId], false, ['PICTURE'])->fetch()){
				if($section['PICTURE']){
					# Определяем относительный путь к картинке
					$image = \CFile::getPath($section['PICTURE']);
					# Добавляем в этот путь протокол (http или https) и домен
					$image = \Acrit\Core\Helper::siteUrl($profile['DOMAIN'], $profile['IS_HTTPS'] == 'Y', $image);
					# Записываем в #PICTURE# значение
					$replace['#PICTURE#'] = $image; 
				}
			}
		}
	}
});

В обработчике необходимо подкорректировать ID нужных профилей, чтобы обработчик действовал только для них (в примере это профили 12, 15 и 23).


Возврат к списку