Пошаговый перебор разделов для какой-либо обработки

Небольшой пример скрипта с пошаговой обработкой разделов

Мало ли, может кому пригодится ... 

<?$arFilter = Array('IBLOCK_ID'=>$IBLOCK_ID, 'GLOBAL_ACTIVE'=>'Y');
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter, false);
$db_list->NavStart(10); // количество разделов выборке - зависит от сложности операций, которые нужно выполнить с разделами
$maxPages = $db_list->NavPageCount;  // общее количество страниц пагинации
$ThisPage = (isset($_REQUEST['PAGEN_1'])) ? intval($_REQUEST['PAGEN_1']) : 1; // текущая страница
while($ar_result = $db_list->GetNext())
{
    echo $ar_result['CODE'].' => '.$ar_result['NAME'].'<br />';  // тут какой-то обработчик раздела
}
$ThisPage++;  // увеличиваем номер страницы на 1
if($ThisPage<=$maxPages){  // проверяем, а не последняя ли еще страница
$redirectUrl = $APPLICATION->GetCurPageParam(
'action='.$action.'&processing=y&PAGEN_1='.$ThisPage.'&IBLOCK_ID='.$IBLOCK_ID,
array('PAGEN_1','processing','action','IBLOCK_ID')
    );  // url на который нужно провести редирект?>
<form method='POST' id='postform' action='<?= $redirectUrl; ?>'></form>
    <script>window.setTimeout("BX('postform').submit()", 5000);</script>


Идея в том, чтобы обработку вести через постраничную обработку разделов, но! в браузерах есть встроенный механизм ограничения количества переадресаций на странице (которое конечно же можно увеличить в настройках браузера), то при достижении этого значения получим ошибку, что браузер обнаружил бесконечное число редиректов. Так вот, чтобы этого не произошло, редиректы нужно делать не средствами сервера, а средствами клиентского браузера. И в этом нам поможет JS: в атрибут "action" записываем url, на который нужно произвести переадресацию и прописываем скрипт, который будет осуществлять отправку содержимого веб-формы с небольшим таймаутом (поставил 5 секунд, чтобы слишком сильно не нагружать сервер, но можно и меньше сделать). 

Вот такой вот простенький скрипт

Количество показов: 2798
23.11.2014

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.