123 - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of 123.php

  1.  
  2. #-------------ТУТ ВАШ КОД
  3. #Что нужно сделать: Загрузить XML в PHP (рекомендую simplexml_load_file). Далее вывести на экран каждый элемент со свойствами
  4. #Цель: Аккуратно окунуть Вас в работу с самим PHP и посмотреть у кого возникнут сложности с чистым PHP. Далее мы имея данные в массивах/обьектах научимся загружать это непосредственно в Bitrix.
  5. #-------------КОНЕЦ КОДА
  6.  
  7.  
  8. $_xml = simplexml_load_file("data/data.xml");
  9.  
  10.  
  11. $el = new CIBlockElement;
  12.  
  13.  
  14. foreach ($_xml->product as $product) {
  15.  
  16.     # Приводим объект к типу массив
  17.     $product = xml2array($product);
  18.  
  19.     # Массив полей элемента инфоблока для добавления
  20.     $arFields = array(
  21.         "NAME" => $product["NAME"],
  22.         "CODE" => $product["CODE"],
  23.         "IBLOCK_SECTION_ID" => $product["SECTION_ID"],
  24.         "DETAIL_TEXT" => $product["DESCRIPTION"],
  25.         "IBLOCK_ID" => BLK_CATALOG_ID,
  26.         "ACTIVE" => "Y"
  27.     );
  28.  
  29.     # начинаем добавлять элементы в инфоблок
  30.     if($prod_id = $el->Add($arFields)) {
  31.         pre('Добавлен товар с ID: ' . $prod_id);
  32.  
  33.         # добавляем параметры торгового каталога для товара
  34.         $arFields = array(
  35.             "ID" => $prod_id,
  36.             "QUANTITY" => 0
  37.         );
  38.  
  39.         # Обновляем / Добавляем параметры товара
  40.         CCatalogProduct::Add($arFields);
  41.  
  42.         # Проходим по торговым предложениям товара
  43.         foreach ($product["OFFERS"]["OFFER"] as $offer) {
  44.  
  45.             # заполняем свойства торгового предложения
  46.             $propsOffer = array(
  47.                 "CML2_LINK" => $prod_id,
  48.                 "QTY_LEGS" => $offer->QTY_LEGS
  49.             );
  50.  
  51.             # Заполняем поля торгового предложения (элемента инфоблока)
  52.             $arOffersFields = array(
  53.                 "NAME" => implode(', ', [$product["NAME"], $offer->SIZE_FIELD, $offer->GAME_TYPE]),
  54.                 "IBLOCK_ID" => BLK_CATALOG_OFFERS_ID,
  55.                 "PROPERTY_VALUES" => $propsOffer,
  56.                 "ACTIVE" => "Y"
  57.             );
  58.  
  59.             if($offerId = $el->Add($arOffersFields)) {
  60.  
  61.                 pre('Добавлен оффер с ID: ' . $offerId);
  62.  
  63.                 # добавляем параметры торгового каталога для торгового предложения
  64.                 $arOffersFields = array(
  65.                     "ID" => $offerId,
  66.                     "QUANTITY" => 39,
  67.                     "WEIGHT" => $offer->VES
  68.                 );
  69.  
  70.                 # Обновляем / Добавляем параметры торгового предложения
  71.                 CCatalogProduct::Add($arOffersFields);
  72.             }else {
  73.                 pre("Ошибка офера");
  74.                 $el->LAST_ERROR;
  75.             }
  76.         }
  77.     }else {
  78.         pre("Ошибка при добавлении товара");
  79.         pre($el->LAST_ERROR);
  80.     }
  81.     break;
  82. }
  83.  
File Description
  • 123
  • PHP Code
  • 25 Jan-2021
  • 3.29 Kb
You can Share it: