Как добавить элемент в инфоблок через агента?

Доброго!
Я представляю, процесс добавления элемента средствами api в инфоблок
код
if(CModule::IncludeModule("iblock")){
		$el = new CIBlockElement;
		$IBLOCK_ID_CATALOG = 53; 

		$arLoadProductArray = Array( 
			"IBLOCK_ID" => $IBLOCK_ID_CATALOG,  
			"NAME" => "тест1", 
			"ACTIVE" => "Y", 
			"PREVIEW_TEXT" => "Позиция успешно добавлена",
		); 
		
		if($newElement = $el->Add($arLoadProductArray)) {  
			echo "Позиция добавлена"; }
		else { 
			echo "Error: ".$el->LAST_ERROR; 
		}
	}


Важная строчка - CModule::IncludeModule("iblock")

Если модуль не подключен - ошибка. Подключение либо с помощью пролога, либо подключаем heder.
У меня вопрос.

Я хочу создать агента , чтобы тот добавлял элемент в инфоблок, но гвоздь программы в том, что не понимаю, как подключить пролог - выдает ошибку.
Мне вздумалось в init.php подключить сам файл. Но элемент из за отсутствия CModule::IncludeModule("iblock") не добавляется. Подскажите, как реализовать ?

function addAgent()
{
	include $_SERVER['DOCUMENT_ROOT']."/api/element.php";
	mailAgent(); // в файле /api/element.php находится еще функция отправки теста на почту и она работает
	return "addAgent();";
}
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 2
@pavel__sidorov Автор вопроса
сократил код

добавил в init.php - агент добавляет 1 элемент и отваливается.

function testAgent()
{

		if(CModule::IncludeModule("iblock")){

			$el = new CIBlockElement;
			$IBLOCK_ID_CATALOG = 53; 
	
			$arLoadProductArray = Array( 
				"IBLOCK_ID" => $IBLOCK_ID_CATALOG,
				"NAME" => "тест1", 
				"ACTIVE" => "Y",
				"PREVIEW_TEXT" => "Позиция успешно добавлена",
			); 
			if($newElement = $el->Add($arLoadProductArray));

		}
}

function AddIBElementByAgent()
{
   AddEventHandler("main", "OnProlog", "testAgent");
   return "AddIBElementByAgent()";
}
Ответ написан
Комментировать
@tgarl
Что-то вы мудрите.
Идете в админку создаете агента с функцией testAgent();

в init.php создаете вашу функцию

function testAgent()
{

    if(CModule::IncludeModule("iblock")){

      $el = new \CIBlockElement;
      $IBLOCK_ID_CATALOG = 53; 
  
      $arLoadProductArray = Array( 
        "IBLOCK_ID" => $IBLOCK_ID_CATALOG,
        "NAME" => "тест1", 
        "ACTIVE" => "Y",
        "PREVIEW_TEXT" => "Позиция успешно добавлена",
      ); 
      $newElement = $el->Add($arLoadProductArray);
    }
return "testAgent();";
}


все
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы