$db_list = CIBlockElement::GetList(Array(), $arFilter = Array("IBLOCK_ID"=>8, "ID"=>$arResult["ID"]), true, Array("UF_RECOMMEND"));
в запросе true - это $arGroupBy - тут должен быть массив по каким свойствам группировать
а Array("UF_RECOMMEND") - это arNavStartParams
arSelect у вас вообще нет
$props_array = $db_list->GetNext(); - тут props_array - это обьект поэтому if (!empty($props_array["UF_RECOMMEND"])) { тут фаталка будет
для начала нужно сделать так
$props_array = CIBlockElement::GetList(Array(), $arFilter = Array("IBLOCK_ID"=>8, "ID"=>$arResult["ID"]), false, false Array('ID', 'IBLOCK_ID',"UF_RECOMMEND"))->Fetch();
и тут
$rsSections = CIBlockElement::GetList(array("SORT" => "ASC"),
array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "ID" => $props_array["UF_RECOMMEND"]),
false,
array("NAME", "DETAIL_PICTURE", "PICTURE", "SECTION_PAGE_URL"),
false
таже ошибка - array("NAME", "DETAIL_PICTURE", "PICTURE", "SECTION_PAGE_URL"), и последний false местами поменять
и вот это while ($arSections = $rsSections->GetNext()) {
заменить на $arSections = $rsSections->Fetch()
тк при GetNext() в $arSections будет обьект и поля вам нужно будет выбрать через $fields = $arSections->GetFields()