[CODE]
$itemList = CIBlockElement::GetList($arOrder,$arFilter,$arGroupBy,$arNavStartParams,$arSelectedFields);
while($item = $itemList->GetNextElement()) :
.....
$arOrder = Array("NAME"=>"ASC");
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_SITE_CATS"]);
$ListSections = CIBlockSection::GetList($arOrder, $arFilter, true);
.....
[/CODE]
Жёстко. Зачем вы делаете CIBlockSection::GetList() в цикле, и зачем вам там понадобилось знать количество элементов (это сильно замедляет запрос)?