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

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

570
23.11.2014

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

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

<?$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 секунд, чтобы слишком сильно не нагружать сервер, но можно и меньше сделать). 

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


Источник: http://dev.1c-bitrix.ru/community/webdev/user/60622/blog/12219/


Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

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