Серия 3: Создаем персональный раздел, создаем компонент добавления объявлений

В этой серии создадим структуру персонального раздела пользователя, добавим базовый функционал добавления объявлений пользователем. Для реализации понадобится заметка:
Форма добавления элемента на API Битрикс

Чеклист:

  • Создаем структуру персонального раздела
  • Выводим форму добавления объявления
  • Выводим список объявлений пользователя

Дополнительные файлы

Полная версия серии на Boosty: Смотреть
Михаил Базаров марта 10, 2024 11:48 am
Пригодится для видео
Добавление цены к добавленному товару:
Код
 $arFields = Array(
      "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
      "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
      "IBLOCK_ID"      => 4,
      "NAME"           => $row[3],
      "ACTIVE"         => "Y",            // активен
      "PREVIEW_TEXT"   => $row[5],
      "DETAIL_TEXT"    => $row[4],
   );
   
   if($last_el_id = $el_ob->Add($arFields))
   {
      echo 'New ID: ' . $last_el_id . '<br>';

      $arFields = array(
         "ID" => $last_el_id, 
         "VAT_INCLUDED" => "Y"
      );

      if(CCatalogProduct::Add($arFields))
      {
         echo "Добавили параметры товара к элементу каталога " . $last_el_id . '<br>';
         
         $arFields = Array(
            "PRODUCT_ID" => $last_el_id,
            "CATALOG_GROUP_ID" => 1,
            "PRICE" => $row[6],
            "CURRENCY" => "RUB",
         );
         CPrice::Add($arFields);
      }
      else
         echo 'Ошибка добавления параметров товара<br>';
   }
   else
      echo 'Error: ' . $el_ob->LAST_ERROR

Вариант добавления цены на D7
Код
$result = \Bitrix\Catalog\Model\Product::add([
         'external_fields' => [
            'IBLOCK_ID' => ID_торгового_каталога, // необязательный ключ, минус 1 запрос к базе
         ],
         'fields' => $fields,
      ]);

Получения разделов инфоблока с D7
Код
$arResult['SECTIONS'] = \Bitrix\Iblock\SectionTable::getList(array(
    'filter' => array(
        'IBLOCK_ID' => 14,
        'DEPTH_LEVEL' => 2,
    ),
    'select' =>  array(
        'ID', 'NAME'
    ),
))->fetchAll();