насколько я помню вы должны задать IBLOCK_ID в фильтре GetList, тогда и property сможете получить.
вот для заметки универсальная и опасная функция получения массива элементов инфоблоков вместе со всеми свойствами.
опасная она тем что выбирает полностью
все свойства и ничего не кэшируется. можете удалить то что вам не нужно и использовать.
Код |
---|
function getIblockValues($filter = array(), $sort = array(), $arNavStartParams = false, $arSelectAdd = array(), $arGroupBy = false)
{
CModule::IncludeModule("iblock");
$arSelect = Array("ID", "NAME", "ACTIVE", "IBLOCK_ID", "IBLOCK_CODE", "IBLOCK_SECTION_ID", "ACTIVE_FROM", "ACTIVE_TO", "PREVIEW_PICTURE", "PREVIEW_TEXT", "DETAIL_PICTURE", "DETAIL_TEXT", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "DETAIL_PAGE_URL", "SECTION_PAGE_URL");
$arFilter = Array("CHECK_PERMISSIONS" => "Y", "INCLUDE_SUBSECTIONS" => "Y");
$arSelectProperties = array();
if ($arGroupBy === false) {
$res = CIBlock::GetProperties($filter['IBLOCK_ID'], Array(), Array());
while($prop = $res->GetNext()) {
$arSelectProperties[] = 'PROPERTY_' . $prop['CODE'];
}
}
$selectArr = array_merge($arSelect, $arSelectProperties, $arSelectAdd);
$rsElement = CIBlockElement::GetList(
$sort,
array_merge($arFilter, $filter),
$arGroupBy,
$arNavStartParams,
$selectArr
);
$result = array();
if ($arGroupBy === false) {
while($obElement = $rsElement->GetNextElement())
{
$arItem = $obElement->GetFields();
if(strlen($arItem["ACTIVE_FROM"])>0)
{
$arItem["DISPLAY_ACTIVE_FROM"] = CIBlockFormatProperties::DateFormat($filter["ACTIVE_DATE_FORMAT"], MakeTimeStamp($arItem["ACTIVE_FROM"], CSite::GetDateFormat()));
}
else
{
$arItem["DISPLAY_ACTIVE_FROM"] = "";
}
if(array_key_exists("PREVIEW_PICTURE", $arItem))
{
$arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
}
if(array_key_exists("DETAIL_PICTURE", $arItem))
{
$arItem["DETAIL_PICTURE"] = CFile::GetFileArray($arItem["DETAIL_PICTURE"]);
}
$arItem["PROPERTIES"] = $obElement->GetProperties();
$result[] = $arItem;
}
} else {
if (is_string($rsElement)) {
return $rsElement;
}
while($obElement = $rsElement->GetNext())
{
$result[] = $obElement;
}
}
return $result;
}
|