• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/landingsource/element.php
  • Класс: BitrixIblockLandingSourceElement
  • Вызов: Element::getIblockProperties
static function getIblockProperties($iblockId)
{
	$result = [];

	$listCodes = IblockModelPropertyFeature::getListPageShowPropertyCodes($iblockId);
	$detailCodes = IblockModelPropertyFeature::getDetailPageShowPropertyCodes($iblockId);
	if (empty($listCodes) && empty($detailCodes))
		return $result;

	$allCodes = array_unique(array_merge($listCodes, $detailCodes));
	$listCodes = array_fill_keys($listCodes, true);
	$detailCodes = array_fill_keys($detailCodes, true);

	$iterator = IblockPropertyTable::getList([
		'select' => [
			'ID', 'IBLOCK_ID', 'NAME', 'SORT', 'PROPERTY_TYPE',
			'MULTIPLE', 'FILE_TYPE',
			'USER_TYPE', 'USER_TYPE_SETTINGS_LIST'
		],
		'filter' => [
			'=IBLOCK_ID' => $iblockId,
			'@ID' => $allCodes,
			'=ACTIVE' => 'Y'
		],
		'order' => ['SORT' => 'ASC', 'NAME' => 'ASC']
	]);
	while ($row = $iterator->fetch())
	{
		$id = (int)$row['ID'];
		$index = 'PROPERTY_'.$row['ID'];
		$titleCode = 'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_TITLE';
		if (!isset($listCodes[$id]) || !isset($detailCodes[$id]))
		{
			$titleCode = (isset($listCodes[$id])
				? 'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_LIST_TITLE'
				: 'IBLOCK_LANDING_SOURCE_ELEMENT_PROPERTY_DETAIL_TITLE'
			);
		}
		$title =  Loc::getMessage(
			$titleCode,
			['#NAME#' => $row['NAME']]
		);

		switch ($row['PROPERTY_TYPE'])
		{
			case IblockPropertyTable::TYPE_FILE:
				if (self::checkImageProperty($row))
				{
					$result[$index] = [
						'ID' => $index,
						'NAME' => $title,
						'TYPE' => NodeType::IMAGE,
						'ALLOWED' => self::FIELD_ALLOWED_SELECT
					];
				}
				break;
			default:
				$result[$index] = [
					'ID' => $index,
					'NAME' => $title,
					'TYPE' => NodeType::TEXT,
					'ALLOWED' => ($row['MULTIPLE'] == 'Y' ? self::FIELD_ALLOWED_SELECT : self::FIELD_ALLOWED_ALL)
				];
				break;
		}
	}

	return $result;
}