С помощью какого метода можно получить свойство элемента

С помощью какого метода можно получить свойство элемента thumbnail

Описание

CDBResult
CIBlockElement::GetProperty(

  int iblock_id,
int element_id,
array arOrder = Array(),
array arFilter = Array()
);

Метод возвращает значения свойства для элемента element_id. Метод статический.

Смотрите также

  • CDBResult
  • Поля свойств

Параметры вызова

ПараметрОписание
iblock_id Код инфоблока.
element_id Код элемента.
arOrder
Массив вида Array(by1=>order1[, by2=>order2 [, ..]]), где by — поле для сортировки, может принимать значения:

  • id — код свойства;
  • sort — индекс сортировки;
  • name — имя свойства;
  • active — активность свойства;
  • value_id — код значения свойства;
  • enum_sort — индекс сортировки варианта списочного свойства; 

order — порядок сортировки, может принимать значения:

  • asc — по возрастанию;
  • desc — по убыванию;

Необязательный. По умолчанию равен Array(«sort»=>»asc»)

Примечание: параметр не должен быть false, иначе метод отработает неправильно и результат не будет отобран по заданным критериям.

arFilter Массив вида array(«фильтруемое поле»=>»значения фильтра» [, …]) «фильтруемое поле» может принимать значения: ACTIVE — активность (Y/N),

  • NAME — название свойства (можно использовать маску %|_),
  • ID — код свойства,
  • ACTIVE — активность (Y|N),
  • SEARCHABLE — участвует в поиске или нет (Y|N),
  • PROPERTY_TYPE — тип свойства,
  • CODE — символьный код свойства,
  • EMPTY — пустота свойства (Y|N).

Не обязательный параметр, по умолчанию равен array().

Примечание — Существуют ещё параметры, оставленные для сохранения совместимости: $by и $order .

Возвращаемое значение

Возвращается объект CDBResult, содержащий поля свойств и поля со значениями:

PROPERTY_VALUE_ID — код значения свойства,

VALUE — значение свойства,

DESCRIPTION — описание значения свойства,

VALUE_ENUM — текстовое значение элемента списочного свойства,

VALUE_XML_ID — внешний код значения свойства типа «список».

Примеры использования

Пример 1:

<?
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, array(«sort» => «asc»), Array(«CODE»=>»FORUM_TOPIC_ID»));
if($ar_props = $db_props->Fetch())
$FORUM_TOPIC_ID = IntVal($ar_props[«VALUE»]);
else
$FORUM_TOPIC_ID = false;
?>

Пример 2 (получить значения для множественного свойства):

$VALUES = array();
$res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»));
while ($ob = $res->GetNext())
{
$VALUES[] = $ob[‘VALUE’];
}

Пример 3 (получить значения для немножественного свойства):

$res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»));
if ($ob = $res->GetNext())
{
$VALUE = $ob[‘VALUE’];
}

Пример 4:

Если значений у свойства нет и в фильтр не передается «EMPTY»=>»N», то метод вернет массив с с пустым ключом VALUE:

//используются Инфоблоки 2.0
$db_props = CIBlockElement::GetProperty(30, 14391, «sort», «asc», Array(«CODE»=>»XXX»)); // XXX — множественное свойства типа «Строка»
if($ar_props = $db_props->Fetch()):
echo «<pre>».print_r($ar_props, true).»<pre>»;
endif;

3

Артем Хлебус
08.07.2016 18:19:06

Если нужно получить имена значения типа список

Код
<?
$res = CIBlockElement::GetProperty(ID_BLOKA, ID_ELEMENTA, array(«sort» => «asc»), Array(«CODE»=>»CATEGORIES»));
     while ($ob = $res->GetNext()) {
          $prop = $ob[‘VALUE_ENUM’];
          echo $prop. «</br>»;    
     }
?>

4

stvbox
19.11.2012 13:15:36

Третий параметр метода не должен быть false. Не правильно происходит перегрузка функции и результат — все подряд, вместо отобранного по необходимым критериям.

2

Сергей Фролов
02.12.2011 17:18:50

Если нужно получить значение типа список

Код
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, array(«sort» => «asc»), Array(«CODE»=>»FORUM_TOPIC_ID»));
if($ar_props = $db_props->Fetch())
$property_enums = CIBlockPropertyEnum::GetList(Array(«DEF»=>»DESC», «SORT»=>»ASC»), Array(«IBLOCK_ID»=>$IBLOCK_ID, «ID»=>$ar_props[«VALUE»]));
while($enum_fields = $property_enums->GetNext())
{
   $prop_value = $enum_fields[«VALUE»];
}

3

Роберт Басыров
19.10.2010 12:00:06

CIBlockElement::GetProperty() возвращает результат в случае, если значения нет

Код
$db_props = CIBlockElement::GetProperty(30, 14391, «sort», «asc», Array(«CODE»=>»XXX»));
if($ar_props = $db_props->Fetch()):
echo «<pre>».print_r($ar_props, true).»<pre>»;
endif;

отдает массив с пустым VALUE

XXX — множественное свойства типа строка
используем Инфоблоки+

1

Игорь Павленко
02.06.2009 16:43:49

Нужно также учитывать, что если получаем значения для множественного св-ва, то можно получать так:

Код
    $VALUES = array();
    $res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»));
    while ($ob = $res->GetNext())
    {
        $VALUES[] = $ob[‘VALUE’];
    }

Если получаем значения для не множественного св-ва, то можно так:

Код
    $res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»));
    [if ($ob = $res->GetNext())
    {
        $VALUE = $ob[‘VALUE’];
    }

2

PetrW
03.02.2009 20:20:24

Код
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, «sort», «asc», Array(«CODE»=>»FORUM_TOPIC_ID»));

Возможно еще так:

Код
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, Array(«sort»=>»asc»), Array(«CODE»=>»FORUM_TOPIC_ID»));

© «Битрикс»,
2001-2020,
«1С-Битрикс», 2020

Наверх

Источник

[ Посмотреть ответы ]

 
При оптимизации кода рекомендуется убрать лишние запросы. Лишний запрос это:

  • запрос в цикле
  • запросы, которые добирают данные в цикле
  • запрос с неиспользуемыми данными ($arSelect)

Выборка историй изменения элемента осуществляется с помощью метода:

  • CIBlockElement::GetList с настроенным фильтром «SHOW_HISTORY» => «Y»
  • CIBlockElement::WF_GetLast
  • CIBlockElement::WF_GetHistoryList

Переход к добавлению свойств для разделов инфоблока выполняется:

  • на закладке «Свойства» страницы редактирования инфоблока
  • с помощью ссылки «Добавить пользовательское свойство», расположенной на закладке «Доп. поля» страницы редактирования раздела инфоблока
  • на закладке «Свойства» страницы редактирования раздела инфоблока

В чем отличие инфоблоков 2.0 от обычных?

  • все значения свойств одного элемента хранятся в одной строке
  • используется тип таблиц Innodb вместо MylSAM
  • инфоблоки 2.0 хранят свои свойства в отдельной таблице

Если в инфоблоках 2.0 сменен тип свойства, то:

  • изменяется тип хранения в самой базе данныхизменяется тип хранения в самой базе данных
  • меняется логика интерпретации продуктом значения этого свойств

Параметры информационного блока позволяют:

  • управлять выводом свойств инфоблока для публичной части
  • управлять правами доступа пользователей к информационному блоку
  • указывать пользовательские поля для инфоблоков
  • настраивать параметры экспорта в RSS (если экспорт в RSS был разрешен в настройках типа инфоблока)
  • определять сайт (или сайты), на котором может быть показан инфоблок
  • создавать свойства элементов
  • определять URL на страницы со списком всех элементов, разделов и элементов отдельного раздела информационного блока

Преимущества инфоблоков 2.0 проявляются:

  • на справочниках с небольшим количеством часто изменяемых свойств
  • при использовании составных индексов
  • на справочниках с небольшим количеством редко изменяемых свойств
  • при использовании инфоблоков 2.0 в качестве товарных предложений

Уровень вложенности разделов экспортируемых в формате CSV инфоблоков задается:

  • в настройках модуля Информационные блоки
  • в форме настроек экспорта инфоблока в формате CSV
  • в настройках Главного модуля

Предположим, что для элементов некоторого инфоблока должны задаваться значения следующих двух свойств: автор и источник. Для этого данные свойства необходимо создать:

  • на странице редактирования элементов, для которых будут задаваться значения этих свойств
  • на странице настроек соответствующего типа инфоблоков
  • на странице настроек соответствующего инфоблока

Флаг IS_FINAL для элемента участвующего в документообороте инфоблока выставляется: Флаг IS_FINAL для элемента участвующего в документообороте инфоблока выставляется:

  • методами API Bitrix Framework
  • правкой записи в базе данных

С помощью какого метода можно получить свойство элемента?

  • CIBlockElement::SetPropertyValues
  • CIBlockElement::GetProperty
  • CIBlockProperty::Update

Общий порядок работы с инфоблоками при создании сайта

  • Создание элементов инфоблока.
  • Внимательное продумывание структуры инфоблоков.
  • Кастомизация работы компонента под потребности ТЗ и дизайна сайта.
  • Создание физической страницы (в случае использования комплексного компонента) или страниц (при использовании простых компонентов) и размещение на ней компонента (компонентов) с последующей настройкой его свойств.
  • Создание нужного типа инфоблоков с настройкой параметров.
  • Создание самих инфоблоков с настройкой параметров.
  • Создание структуры внутри инфоблока.

С помощью каких типов свойств настраивается связь между информационными блоками? С помощью каких типов свойств настраивается связь между информационными блоками?

  • привязка к файлу (на сервере)
  • привязка к элементам
  • привязка к разделам
  • привязка к элементам в виде списка
  • привязка к элементам по XML_ID
  • привязка к элементам с автозаполнением
  • привязка к товарам (SKU)

[ Посмотреть ответы ]

Источник

Примеры решения задач, возникающих при работе с элементами, разделами и свойствами инфоблоков.

  • Получить значения всех свойств элемента, зная его ID
  • Получить свойства элементов, используя метод CIBlockElement::GetList
  • Добавить свойство типа TEXT/html для элемента
  • Заполнить множественное свойство типа Файл
  • Заполнить множественное свойство типа Список
  • Получить пользовательское свойство раздела
  • Пример создания своего типа данных для пользовательского свойства
  • Как удалить файл в свойстве элемента инфоблока
  • Задача 1:
    Получить значения всех свойств элемента, зная его ID.

    1 <? $db_props = CIBlockElement::GetProperty(IBLOCK_ID, ELEMENT_ID, «sort», «asc», array());
    2 $PROPS = array();
    3 while($ar_props = $db_props->GetNext())
    4 $PROPS[$ar_props[‘CODE’]] = $ar_props[‘VALUE’];?>

    Теперь символьный код свойства является ключом ассоциативного массива $PROPS, то есть, если вам нужно значение свойства с кодом price, то оно будет храниться в $PROPS[‘price’].

    Задача 2:
    Получить свойства элементов, используя метод CIBlockElement::GetList

    1 <? $arSelect = array(«ID», «NAME», «PROPERTY_prop_code_1», «PROPERTY_prop_code_2»);
    2 $res = CIBlockElement::GetList(array(), array(), false, array(), $arSelect);?>

    Дальше использовать цикл и получить свойства с символьными кодами prop_code_1 и prop_code_2.

    Советы веб-разработчиков.

    Антон Долганин: Если для какого-либо изменения в БД предусмотрен специальный метод, следует использовать именно его, а не более общий метод изменения БД.

    Хороший пример: модуль интернет-магазина и работа с заказом. Можно изменить флаг оплаты заказа путем CSaleOrder::Update, а можно путем CSaleOrder::PayOrder. Так вот, следует применять именно PayOrder, потому что в нем произойдет вызов соответствующих обработчиков.

    Задача 3:

    Добавить свойство типа TEXT/html для элемента.

    Если свойство не множественное:

    01 <? $element = new CIBlockElement;
    02 $PROP = array();
    03 $PROP[‘символьный код свойства’][‘VALUE’][‘TYPE’] = ‘text’; // или html
    04 $PROP[‘символьный код свойства’][‘VALUE’][‘TEXT’] = ‘значение, которое нужно забить’;
    05 $arLoadArray = array(
    06 «IBLOCK_ID» => IBLOCK_ID,
    07 «PROPERTY_VALUES»=> $PROP,
    08 «NAME» => «Название элемента»
    09 );
    10 $element->Add($arLoadArray);?>

    Если свойство множественное:

    01 <? // В $ITEMS хранятся значения множественного свойства, которое нужно забить
    02 foreach($ITEMS as $item)
    03 {
    04 $VALUES[][‘VALUE’] = array(
    05 ‘TYPE’ => ‘text’, // или html
    06 ‘TEXT’ => $item,
    07 );
    08 }
    09 $element = new CIBlockElement;
    10 $PROPS = array();
    11 $PROPS[‘символьный код свойства’] = $VALUES;
    12 $arLoadArray = array(
    13 «IBLOCK_ID» => IBLOCK_ID,
    14 «PROPERTY_VALUES»=> $PROPS,
    15 «NAME» => «Название элемента»
    16 );
    17 $element->Add($arLoadArray);?>

    Задача 4:

    Заполнить множественное свойство типа Файл. Довольно часто при добавлении элемента в инфоблок может понадобиться привязать к нему несколько файлов. Для этого удобно создать у инфоблока множественное свойство типа Файл и хранить файлы в нём. Пример заполнения свойства:

    01 <?
    02 $arFiles = array();
    03 for($i = 1; $i CFile::MakeFileArray($_SERVER[«DOCUMENT_ROOT»].’/images/image_’.$i.’.jpg’), ‘DESCRIPTION’ => »);
    08 }
    09 }
    10 ?>

    После этого массив $arFiles передается как значение свойства при добавлении элемента.

    Задача 5:

    Заполнить множественное свойство типа Список с отображением в виде флажков. В данном случае у каждого элемента списка значений есть свой ID. Посмотреть их можно, зайдя в детальное редактирование свойства. Заполняется свойство следующим образом:

    1 <?
    2 if($first_condition == true) $values[] = array(‘VALUE’ => 1);
    3 if($second_condition == true) $values[] = array(‘VALUE’ => 2);
    4 CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array(‘property_code’ => $values));
    5 ?>

    В данном случае при выполнении первого и второго условий мы отмечаем флажками элементы списка с ID =1 и ID=2 соответственно. Заменить следует $ELEMENT_ID, $IBLOCK_ID и property_code на нужные значения.

    Задача 6:

    Получить пользовательское свойство раздела

    1 <? $section_props = CIBlockSection::GetList(array(), array(‘IBLOCK_ID’ => IBLOCK_ID, ‘ID’ => SECTION_ID),
    true, array(«UF_ADDITIONAL_PRICE»));
    2 $props_array = $section_props->GetNext(); ?>

    Теперь в $props_array[‘UF_ADDITIONAL_PRICE’] лежит значение свойства UF_ADDITIONAL_PRICE раздела инфоблока.

    Совет от веб-разработчиков.

    Алексей Коваленко: При работе с инфоблоками удобнее все коды свойств именовать заглавными буквами. В таком случае вы сможете избежать небольших несостыковок в своей работе.

    Например, значение свойства с кодом foto при работе с компонентами часто доступно через [PROPERTIES][foto][VALUE]?, а при использовании метода GetList вы можете получить PROPERTY_FOTO_VALUE.

    Пример создания своего типа данных для пользовательского свойства

    В качестве значения свойства попробуем завести картинку с превью. Это могут быть например фотографии гостиницы на туристическом сайте или что-то подобное. В варианте такого применения и рассмотрим решение задачи.

    Один из вариантов реализации: хранить изображения в отдельном инфоблоке и показывать как привязку к элементу. Пример кода:

    AddEventHandler(«iblock», «OnIBlockPropertyBuildList», array(«CIBlockPropertyPicture», «GetUserTypeDescription»));
    AddEventHandler(«iblock», «OnBeforeIBlockElementDelete», array(«CIBlockPropertyPicture», «OnBeforeIBlockElementDelete»));
    class CIBlockPropertyPicture
    {
    function GetUserTypeDescription()
    {
    return array(
    «PROPERTY_TYPE» =>»E»,
    «USER_TYPE» =>»Picture»,
    «DESCRIPTION» =>»Картинка»,
    «GetPropertyFieldHtml» =>array(«CIBlockPropertyPicture», «GetPropertyFieldHtml»),
    «GetPublicViewHTML» =>array(«CIBlockPropertyPicture», «GetPublicViewHTML»),
    «ConvertToDB» =>array(«CIBlockPropertyPicture», «ConvertToDB»),

    //»GetPublicEditHTML» =>array(«CIBlockPropertyPicture»,»GetPublicEditHTML»),
    //»GetAdminListViewHTML» =>array(«CIBlockPropertyPicture»,»GetAdminListViewHTML»),
    //»CheckFields» =>array(«CIBlockPropertyPicture»,»CheckFields»),
    //»ConvertFromDB» =>array(«CIBlockPropertyPicture»,»ConvertFromDB»),
    //»GetLength» =>array(«CIBlockPropertyPicture»,»GetLength»),
    );
    }

    function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
    {
    $LINK_IBLOCK_ID = intval($arProperty[«LINK_IBLOCK_ID»]);
    if($LINK_IBLOCK_ID)
    {
    $ELEMENT_ID = intval($value[«VALUE»]);
    if($ELEMENT_ID)
    {
    $rsElement = CIBlockElement::GetList(array(), array(«IBLOCK_ID» => $arProperty[«LINK_IBLOCK_ID»],
    «ID» => $value[«VALUE»]), false, false, array(«ID», «PREVIEW_PICTURE», «DETAIL_PICTURE»));
    $arElement = $rsElement->Fetch();
    if(is_array($arElement))
    $file_id = $arElement[«DETAIL_PICTURE»];
    else
    $file_id = 0;
    }
    else
    {
    $file_id = 0;
    }

    if($file_id)
    {
    $db_img = CFile::GetByID($file_id);
    $db_img_arr = $db_img->Fetch();
    if($db_img_arr)
    {
    $strImageStorePath = COption::GetOptionString(«main», «upload_dir», «upload»);
    $sImagePath = «/».$strImageStorePath.»/».$db_img_arr[«SUBDIR»].»/».$db_img_arr[«FILE_NAME»];
    return ‘<label><input name=»‘.$strHTMLControlName[«VALUE»].'[del]» value=»Y» type=»checkbox»>
    Удалить файл ‘.$sImagePath.'</label>’
    .'<input name=»‘.$strHTMLControlName[«VALUE»].'[old]» value=»‘.$ELEMENT_ID.'» type=»hidden»>’;
    }
    }
    return ‘<input type=»file» size=»‘.$arProperty[«COL_COUNT»].'» name=»‘.$strHTMLControlName[«VALUE»].'»/>’;
    }
    else
    {
    return «Ошибка настройки свойства. Укажите инфоблок в котором будут храниться картинки.»;
    }
    }

    function GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
    {
    $LINK_IBLOCK_ID = intval($arProperty[«LINK_IBLOCK_ID»]);
    if($LINK_IBLOCK_ID)
    {
    $ELEMENT_ID = intval($value[«VALUE»]);
    if($ELEMENT_ID)
    {
    $rsElement = CIBlockElement::GetList(array(), array(«IBLOCK_ID» => $arProperty[«LINK_IBLOCK_ID»],
    «ID» => $value[«VALUE»]), false, false, array(«ID», «PREVIEW_PICTURE», «DETAIL_PICTURE»));
    $arElement = $rsElement->Fetch();
    if(is_array($arElement))
    return CFile::Show2Images($arElement[«PREVIEW_PICTURE»], $arElement[«DETAIL_PICTURE»]);
    }
    }
    return «»;
    }

    function ConvertToDB($arProperty, $value)
    {
    $arResult = array(«VALUE» => «», «DESCRIPTION» => «»);
    $LINK_IBLOCK_ID = intval($arProperty[«LINK_IBLOCK_ID»]);
    if($LINK_IBLOCK_ID)
    {
    if(
    is_array($value[«VALUE»])
    && is_array($value[«VALUE»][«error»])
    && $value[«VALUE»][«error»][«VALUE»] == 0
    && $value[«VALUE»][«size»][«VALUE»] > 0
    )
    {
    $arDetailPicture = array(
    «name» => $value[«VALUE»][«name»][«VALUE»],
    «type» => $value[«VALUE»][«type»][«VALUE»],
    «tmp_name» => $value[«VALUE»][«tmp_name»][«VALUE»],
    «error» => $value[«VALUE»][«error»][«VALUE»],
    «size» => $value[«VALUE»][«size»][«VALUE»],
    );
    $obElement = new CIBlockElement;
    $arResult[«VALUE»] = $obElement->Add(array(
    «IBLOCK_ID» => $LINK_IBLOCK_ID,
    «NAME» => $arDetailPicture[«name»],
    «DETAIL_PICTURE» => $arDetailPicture,
    ), false, false, true);
    }
    elseif(
    is_array($value[«VALUE»])
    && isset($value[«VALUE»][«size»])
    && !is_array($value[«VALUE»][«size»])
    && $value[«VALUE»][«size»] > 0
    )
    {
    $arDetailPicture = array(
    «name» => $value[«VALUE»][«name»],
    «type» => $value[«VALUE»][«type»],
    «tmp_name» => $value[«VALUE»][«tmp_name»],
    «error» => intval($value[«VALUE»][«error»]),
    «size» => $value[«VALUE»][«size»],
    );
    $obElement = new CIBlockElement;
    $arResult[«VALUE»] = $obElement->Add(array(
    «IBLOCK_ID» => $LINK_IBLOCK_ID,
    «NAME» => $arDetailPicture[«name»],
    «DETAIL_PICTURE» => $arDetailPicture,
    ), false, false, true);
    }
    elseif($value[«VALUE»][«del»])
    {
    $obElement = new CIBlockElement;
    $obElement->Delete($value[«VALUE»][«old»]);
    }
    elseif($value[«VALUE»][«old»])
    {
    $arResult[«VALUE»] = $value[«VALUE»][«old»];
    }
    elseif(!is_array($value[«VALUE»]) && intval($value[«VALUE»]))
    {
    $arResult[«VALUE»] = $value[«VALUE»];
    }
    }
    return $arResult;
    }

    function OnBeforeIBlockElementDelete($ELEMENT_ID)
    {
    $arProperties = array();
    $rsElement = CIBlockElement::GetList(array(), array(«ID» => $ELEMENT_ID), false, false, array(«ID», «IBLOCK_ID»));
    $arElement = $rsElement->Fetch();
    if($arElement)
    {
    $rsProperties = CIBlockProperty::GetList(array(), array(«IBLOCK_ID» => $arElement[«IBLOCK_ID»], «USER_TYPE» => «Picture»));
    while($arProperty = $rsProperties->Fetch())
    $arProperties[] = $arProperty;
    }

    $arElements = array();
    foreach($arProperties as $arProperty)
    {
    $rsPropValues = CIBlockElement::GetProperty($arElement[«IBLOCK_ID»], $arElement[«ID»], array(), array(
    «EMPTY» => «N»,
    «ID» => $arProperty[«ID»],
    ));
    while($arPropValue = $rsPropValues->Fetch())
    {
    $ID = intval($arPropValue[«VALUE»]);
    if($ID > 0)
    $arElements[$ID] = $ID;
    }
    }

    foreach($arElements as $to_delete)
    {
    CIBlockElement::Delete($to_delete);
    }
    }
    }

    Что мы в итоге имеем:

    • Интерфейс редактирования элемента с возможностью добавления и удаления изображений.
    • При удалении элемента связанная с ним информация удаляется.
    • Поддержка компонент публичной части.

    Инструкция по применению:

    • Этот код разместите в файле /bitrix/php_interface/init.php.
    • Создайте инфоблок для хранения изображений и в его настройках укажите параметры генерации картинки предварительного просмотра из детальной (на вкладке Поля).
    • В инфоблоке Гостиницы добавьте свойство типа Картинка и в дополнительных настройках этого свойства укажите созданный на первом шаге инфоблок. Не забудьте указать символьный код свойства.
    • Создайте элемент и «поиграйтесь» со значениями этого свойства.
    • В публичной части, например в компоненте news, в параметрах настройки списка элементов выбрать это свойство.

    Как удалить файл в свойстве элемента инфоблока

    Обновить любое свойство можно с помощью методов:

    • Update
    • SetPropertyValues
    • SetPropertyValuesEx

    При использовании любого метода на ключ массива обновления идет код свойства, а значение — новое значение. Для удаления файла нам надо передать вот такой простой массив:

    array(‘MY_FILE’ => array(‘XXX’ => array(‘del’ => ‘Y’)));

    Способ универсален и подходит что для инфоблоков, что для инфоблоков 2.0, что для документооборота. MY_FILE — это код вашего свойства типа Файл. А что такое ХХХ? В нём содержится ID значения_ свойства. То есть не ID свойства, а именно ID значения.

    CModule::IncludeModule(‘iblock’);
    $IB = 24;
    $ID = 220304;
    $CODE = ‘ONE_FL’;
    if ($arProp = CIBlockElement::GetProperty($IB, $ID, ‘ID’, ‘DESC’, array(‘CODE’ => $CODE))->fetch()) {
    $XXX = $arProp[‘PROPERTY_VALUE_ID’];
    CIBlockElement::SetPropertyValueCode($ID, $CODE, array($XXX => array(‘del’ => ‘Y’)));
    }

    Вот таким образом получается этот универсальный XXX, именно так его и надо передавать для каждого файла, который мы хотим удалить.

    Что делать в случае множественного файла? Как удалить конкретный файл в списке? Все просто — используем в примере выше не if, а while, ну и дополнительно фильтруем, какой файл надо удалить.

    Источник

    Читайте также:  Что такое магний какими свойства