- Модуль: 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;
}