Битрикс: выборка новостей по категориям.
Небольшой скрипт позволяющий выбирать новости одной или нескольких разделов в инфоблоке.
$category_id_list - здесь будем хранить список айдишников выбраненных разделов.
$category_check - переменная для проверки выбраны ли какие либо разделы
Здесь проверяем выбраны какие либо конкретные разделы если да - то создаем фильтр для новостей, если нет то помечаем что выбраны все разделы.
$category_id_list - здесь будем хранить список айдишников выбраненных разделов.
$category_check - переменная для проверки выбраны ли какие либо разделы
Здесь проверяем выбраны какие либо конкретные разделы если да - то создаем фильтр для новостей, если нет то помечаем что выбраны все разделы.
<ul class="sortable_list"> <li <? $category_id_list = array(); $category_check = (!isset($_REQUEST["category"])) || ($_REQUEST["category"] == ''); if (!$category_check) { $category_id_list = preg_split('/,/', $_REQUEST["category"]); $GLOBALS['news_filter'] = array('ACTIVE' => 'Y', 'SECTION_ID' => $category_id_list); } else { echo "class='active'"; } ?>> <a href="?category=" rel="nofollow">Все</a> </li>
Далее выбираем все категории из инфоблока, выводим их в виде списка, ссылку формируем в зависимости от уже выбранных категорий, и помечаем те которые уже выбраны.
<? $filter = array( "IBLOCK_ID" => $arParams["IBLOCK_ID"] ); $sort = array( "ID" => "DESC" ); $category_list = CIBlockSection::GetList($sort, $filter); while ($category = $category_list->GetNext()) : ?> <li <? if (in_array($category["ID"], $category_id_list)) { echo "class='active'"; $func = "array_diff"; } else { $func = "array_merge"; } ?>> <a href="?category=<?=implode(',', $func($category_id_list, array($category["ID"])))?>" rel="nofollow"> <?=$category["NAME"]?> </a> </li> <?endwhile;?> </ul>
Теперь осталось только указать в параметрах новостей фильтр:
<?$APPLICATION->IncludeComponent( "bitrix:news.list", "", Array( ... "FILTER_NAME" => "news_filter", ... ), $component );?>
Для полного счастья включаем в компоненте новостей AJAX и радуемся.
Комментарии
Отправить комментарий