Хочу поделится решением по генерации XML каталога
Есть каталог с более 60к+ товаров на сайте и надо было сделать выгрузку в YML.
Как понимаете, стандартным экспортом сделать это неудалось, т.к. сервер загибался от такого кол-ва запросов и было неудобно, что XML генерился скопом.
Использовал за основу скрипт "Пошагового скрипта от Антона Долганина" (https://dev.1c-bitrix.ru/community/web...blog/2047/ ) за такой скрипт ему отдельное спасибо.
Файл yml_generator.php залить думаю лучше всего в /bitrix/admin/
Также в init.php добавить
и
ну и заменить все данные в #TEST# на которые нужно вам.
Скрипт генерит файл XML с 60к+ товаров, примерно за 3-6 минут.
Вес файла примерно 120 мб.
Вот такое решение сделал для себя, мб кому нибудь пригодится.
Есть каталог с более 60к+ товаров на сайте и надо было сделать выгрузку в YML.
Как понимаете, стандартным экспортом сделать это неудалось, т.к. сервер загибался от такого кол-ва запросов и было неудобно, что XML генерился скопом.
Использовал за основу скрипт "Пошагового скрипта от Антона Долганина" (
Файл yml_generator.php залить думаю лучше всего в /bitrix/admin/
Также в init.php добавить
function getYMLhead(){ $category = ""; $BID = #ID#; // ID каталога $date = date("Y-m-d H:i"); $return = '<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="'.$date.'"> <shop> <name>#COMPANY_NAME#</name> <company>#COMPANY_NAME#</company> <url>#SITE_URL#</url> <currencies> <currency id="KZT" rate="1"/> <currency id="USD" rate="315"/> </currencies> <categories>'; $arFilterCat = Array('IBLOCK_ID'=>$BID, 'ACTIVE' => 'Y', 'GLOBAL_ACTIVE'=>'Y'); $db_list_cat = CIBlockSection::GetList(Array( "id" => "asc" ), $arFilterCat, true); while($arSec= $db_list_cat->fetch()){ if(!empty($arSec["IBLOCK_SECTION_ID"])){ $parent=" parentId=\"".$arSec["IBLOCK_SECTION_ID"]."\""; } else{ $parent=""; } $cat = '<category id="'.$arSec["ID"].'"'.$parent.'>'; $cat .= yandex_text2xml_customizedUnicode( $arSec["NAME"], true ); $cat .= '</category>'; $category .= $cat; } $return .= $category; $return .= '</categories> <delivery-options> <option cost="1000" days="1-3"/> </delivery-options> <cpa>1</cpa> <offers>'; return $return; } |
function getYMLfooter(){ $return = '</offers> </shop> </yml_catalog>'; return $return; } |
ну и заменить все данные в #TEST# на которые нужно вам.
Скрипт генерит файл XML с 60к+ товаров, примерно за 3-6 минут.
Вес файла примерно 120 мб.
Вот такое решение сделал для себя, мб кому нибудь пригодится.