@Arkonstas

Битрикс, запросы к БД?

Была задача сделать в Битриксе меню. В этом статическом меню надо было по url раздела прописанным в самом меню, выхватывать элементы инфоблока и выводить их в подменю. Я написал такой код в result_modifier.php
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();

$arFilter = Array('IBLOCK_ID'=>$IBLOCK_ID, 'GLOBAL_ACTIVE'=>'Y');
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter, true);
while($ar_result = $db_list->GetNext())
{
	foreach ($arResult as $key => $arItem) {
		$test = explode('/', $arItem["LINK"]);
		if ($test[(count($test) - 2)] == $ar_result["CODE"]) {
			$arResult[$key]["CHILDREN"] = array();
			$arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL");
			$arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y", "SECTION_ID" => $ar_result["ID"]);
			$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
			$i=0;
			while($ob = $res->GetNextElement())
			{
			 $arFields = $ob->GetFields();
			 	$arResult[$key]["CHILDREN"][$i]["NAME"] = $arFields["NAME"];
			 	$arResult[$key]["CHILDREN"][$i]["DETAIL_PAGE_URL"] = $arFields["DETAIL_PAGE_URL"];
			 	$i ++;
			}
		}
	}
}

Но старший разработчик сказал что здесь 25 запросов к БД и надо сделать только два запроса. Я по отладке посмотрел, запросов 9. Думал, думал и не придумал. Каким образом можно потимизировать код чтобы уменьшить кол-во запросов к БД?
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы