bitrix — реализация выборки статей по категориям (select)
Суть такова: нужна сортировка элементов IBLOCK по их разделам. В примере сортировка статей по рубрикам.
В шаблоне перед списком элементов инфоблока добавляем форму:
<? echo'<form method="get" id="s_change">'; echo'<select name="s_id" onchange="$(\'#s_change\').submit();">'; $options_array=array(); foreach($arResult["ITEMS"] as $array_section_id): if(!in_array($array_section_id["IBLOCK_SECTION_ID"],$options_array)): $options_array[]=$array_section_id["IBLOCK_SECTION_ID"]; endif; endforeach; foreach($options_array as $option_id): $option_get_name=CIBlockSection::GetByID($option_id); if($options_names_array=$option_get_name->GetNext()): $option_name=$options_names_array['NAME']; endif; if($_GET['s_id']==$option_id): $if_option_selected=' selected="selected"'; else: $if_option_selected=''; endif; echo'<option value="'.$option_id.'"'.$if_option_selected.'>'.$option_name.'</option>'; endforeach; if(($_GET['s_id']=='all')||($_GET['s_id']==null)): $if_print_all_selected=' selected="selected"'; else: $if_print_all_selected=''; endif; echo'<option value="all"'.$if_print_all_selected.'>Все рубрики</option>'; echo'</select>'; echo'</form>'; ?>
Внутри foreach, в котором выводим сами статьи:
<?if(($_GET['s_id']!=null)&&($_GET['s_id']!='all')){ $FL=$_GET['s_id']; } else { $FL=$arItem["IBLOCK_SECTION_ID"]; } if($arItem["IBLOCK_SECTION_ID"]==$FL) {?> <!--рисуем элемент--> <?}?>
Это называется не сортировка, а фильтрация