Инфоблоки - старое api



Структура таблиц модуля https://dev.1c-bitrix.ru/api_help/iblock/fields.php

Служебные штуки
Пережимка фоток
https://dev.1c-bitrix.ru/api_help/main/reference/cfile/resizeimageget.php
  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций за ширину при этом принимается максимальное значение из высоты/ширины, размер
$file = CFile::ResizeImageGet($arSection["PICTURE"], ['width'=>150, 'height'=>150], BX_RESIZE_IMAGE_PROPORTIONAL, false,false,false,300);
//$arItem["PREVIEW_PICTURE"],  $arItem["DETAIL_PICTURE"]

//$file["src"]
форматы даты в БД
CSite::GetDateFormat("SHORT");

Элементы
получить
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php
$arFilter = [
  "IBLOCK_ID"=>$arParams["IBLOCK_ID"], 
   "ACTIVE"=>"Y"
];
$arSelect = ["ID", "NAME", "DATE_ACTIVE_FROM"];
$res = CIBlockElement::GetList(["sort"=>"asc"], $arFilter, false, ["nPageSize"=>50,"iNumPage"=>1], $arSelect);
while($arItem = $res->Fetch()){
  //самый быстрый
}
while($arItem = $res->GetNext()){
 //обрабатывает детальную страницу из шаблона пути
}
while($ob = $res->GetNextElement()){
  $arFields = $ob->GetFields();  
}
обновить
$el = new CIBlockElement;
$arProps = array();
$arProps[$propId]= $propValue;
//или
$arProps[$propCode]= $propValue;


$arItem = [ 
 "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
  "IBLOCK_SECTION" => false,          // элемент лежит в корне раздела
  "PROPERTY_VALUES"=> $arProps,
  "NAME"           => "Элемент",
  "ACTIVE"         => "Y",            // активен
  "PREVIEW_TEXT"   => "текст для списка элементов",
  "DETAIL_TEXT"    => "текст для детального просмотра",
  "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  ];
$res = $el->Update($id, $arItem);
добавить
global $USER;
$arParamsCode = ["replace_space" => "-", "replace_other" => "-" ];
$el = new CIBlockElement;
$arProps = array();
$arProps[$propId] = $propValue;
//или
$arProps[$propCode]= $propValue;

$arItemNew = [    
    "NAME" => $arArticle["title"],
    "DETAIL_TEXT" => $arArticle["text"],
    "DETAIL_TEXT_TYPE"=>"html", //"text"
    "IBLOCK_ID" => $iblockId,

    "PROPERTY_VALUES" => $arProps,
    "IBLOCK_SECTION_ID" => false,
    "ACTIVE" => "Y",
    "MODIFIED_BY"    => $USER->GetID(),
    "CODE" => Cutil::translit( $arArticle["title"], "en", $arParamsCode )
];
if($id = $el->Add($arItemNew)) {
    echo "New ID: ".$id;
}
else {
    echo "Error: " . $el->LAST_ERROR." ";
}
Разделы инфоблока
получить
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblocksection/getlist.php
$arFilter = [
   'IBLOCK_ID' => $arParams['IBLOCK_ID'],
   '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],
    '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],
    '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']
]; // выберет потомков без учета активности
$bShowCount = false; //количество элементов в разделе
$arSelect = ["UF_NAME_EN"]; //список полей

$rsSect = CIBlockSection::GetList(['left_margin' => 'asc'],$arFilter,$bShowCount,$arSelect);
while ($arSect = $rsSect->GetNext()){
       // 
}

Свойства
получить значение множественного свойства для элемента
$res = CIBlockElement::GetProperty($iblockId, $elemId, "sort", "asc", ["ID" => $propId]);
while ($arValue = $res->GetNext()){                            
//
} 
получить значения списочного свойства
$propertyEnum = CIBlockPropertyEnum::GetList(["DEF"=>"DESC", "SORT"=>"ASC"], ["IBLOCK_ID"=>369, "CODE"=>"STAGE"]);
$arStages = [];
while($arStage = $propertyEmum->GetNext()){
   $arStages[$arStage["XML_ID"]] = $arStage["ID"];         
} 
Обработчики
https://dev.1c-bitrix.ru/api_help/iblock/events/index.php - все события
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "MyOnBeforeIBlockElementUpdate");

function MyOnBeforeIBlockElementAdd(&$arFields){      
}

function MyOnBeforeIBlockElementUpdate(&$arFields){    
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!