Здравствуйте!
Подскажите пожалуйста. Нужно было реализовать функцию для создания фида с акционными товарами.
Код написал, на тестовой страничке все работает, xml создаеться, всё ок.
После этого перенес функцию в init.php, опять вызвал даную функцию на тестовой страничке - всё работает.
Но когда зарегистрировал агент на выполнение данyой функции, код перебора масива с товарами не работает.
Выполняеться код по созданию "шапки" xml, а вот когда дело доходит до перебора масива с товарами ничего не происходит.
В начале init.php:
В чем может быть проблема и как исправить?
Спасибо!
Код |
---|
CModule::IncludeModule('main');
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
CModule::IncludeModule("sale"); |
Код |
---|
function cdekXml() {
global $USER;
# GetSectionInfo
$rootPath = '/var/www/u0516815/data/www/site.ru/bitrix/catalog_export/';
$cdekXmlName = 'cdek.xml';
# Elements
$rsElements = CIBlockElement::getList([],
[
'IBLOCK_ID' => 2,
'ACTIVE' => 'Y'
],
false, false,
['ID', 'NAME','DETAIL_PICTURE']
);
file_put_contents($rootPath.$cdekXmlName, <<<MERCHANT
<?xml version="1.0"?>
<data>
<adress></adress>
<working_hours></working_hours>
<products>
MERCHANT
);
while ($el = $rsElements->getNext()) {
$id = $el['ID'];
$picture = CFile::GetPath($el['DETAIL_PICTURE']);
//Артикул
$VALUES = array();
$res = CIBlockElement::GetProperty(2, $id, "sort", "asc", array('ACTIVE'=>'Y','ID'=>395));
while ($ob = $res->GetNext())
{
$VALUES[] = $ob;
}
$sku = $VALUES[2]['VALUE'];
//Артикул->>
//<<-Название товара
$name = $el['NAME'];
$name=preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $name);
//Название товара->>
//<<-Цена
$arPrice = CPrice::GetByID($id);
$price = $arPrice['PRICE'];
//Цена->>
//<<-Проверка на акционный товар
$renewal = 'N';
$productID = $id;
$quantity = 1;
$arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $USER->GetUserGroupArray(), $renewal);
if (!$arPrice || count($arPrice) <= 0)
{
if ($nearestQuantity = CCatalogProduct::GetNearestQuantityPrice($productID, $quantity, $USER->GetUserGroupArray()))
{
$quantity = $nearestQuantity;
$arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $USER->GetUserGroupArray(), $renewal);
}
}
$base_price = $arPrice['RESULT_PRICE']['BASE_PRICE'];
$discount_price = $arPrice['RESULT_PRICE']['DISCOUNT_PRICE'];
if($discount_price != 0 AND $discount_price < $base_price){
$price = $discount_price;
//Проверка на акционный товар->>
file_put_contents($rootPath.$cdekXmlName, <<<MERCHANT_PROD
<product>
<pic>https://site.ru{$picture}</pic>
<sku>{$sku}</sku>
<item>{$name}</item>
<in_stock>Да</in_stock>
<price>{$price}</price>
</product>
MERCHANT_PROD
, FILE_APPEND);
}
}
file_put_contents($rootPath.$cdekXmlName, "</products></data>", FILE_APPEND);
return 'cdekXml();';
} |