@Aleksander911

Как добавить id раздела в компоненте списка новостей?

Здравствуйте!
На главной странице выводится несколько слайдеров из одного инфоблока с фильтрами по разделам:
<?
$GLOBALS['arrFilter']=array("SECTION_ID" => 114);
$APPLICATION->IncludeComponent(
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
....
?>

<?
$GLOBALS['arrFilter']=array("SECTION_ID" => 115);
$APPLICATION->IncludeComponent(
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
....
?>

<?
$GLOBALS['arrFilter']=array("SECTION_ID" => 116);
$APPLICATION->IncludeComponent(
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
....
?>

<?
$GLOBALS['arrFilter']=array("SECTION_ID" => 117);
$APPLICATION->IncludeComponent(
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
....
?>


При помощи компонента news.list:
<div id="slider-tabs__id" class="slider-tabs">
<div class="slider-tab">
<?foreach($arResult["ITEMS"] as $arItem):?>
<div class="slider-tab__one">			
<?if($arItem["PREVIEW_PICTURE"]):?>
<?
$file = CFile::ResizeImageGet(($arItem["PREVIEW_PICTURE"]), array('width'=>1382, 'height'=>780), BX_RESIZE_IMAGE_EXACT, true);                
echo '<img class="slider-tab__img" src="'.$file['src'].'">';
?>
<?endif;?>		
</div>
<?endforeach;?>	
</div>
</div>

Слайдеры реализованы помощи Slick Slider, который ругается на повторяющийся селектор.
Подскажите, можно ли добавить вывод id категории в компоненте, к примеру добавить вывод к id=slider-tabs__id--...?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 2
@koder_1
Битрикс программист
id действительно не должен повторяться на странице, это ошибка и в плане валидации страницы и в плане логики работы скриптов, поскольку они привязываются к id.
В параметры компонента добавьте ID секции:
$GLOBALS['arrFilter']=array("SECTION_ID" => 114);
$APPLICATION->IncludeComponent(
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
                "CUSTOM_SECTION_ID" => 114
....


а в шаблоне компонента выводите
<?php
$custom_section_id = '';
if (isset($arParams['CUSTOM_SECTION_ID']))
{
$custom_section_id = $arParams['CUSTOM_SECTION_ID'];
}     
?>
<div id="slider-tabs__id<?php echo $custom_section_id; ?>" class="slider-tabs">
Ответ написан
Комментировать
@tgarl
1. Зачем несколько компонентов когда можно использовать 1 и уже в шаблоне разделять на нужные массивы
2. Может я ошибаюсь, в основном использую компоненты каталога, а не новостей, но разве в arResult нет ключа IBLOCK_SECTION_ID, зачем дополнительный параметр заводить?

Соответсвенно :
<?
$GLOBALS['arrFilter']=array("SECTION_ID" => [117,116,114]); //перечисляем все нужные разделы
$APPLICATION->IncludeComponent(//используем только 1 компонент
"bitrix:news.list", 
"sliders_tab", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
....
?>


а в шаблоне делаем нужное количество массивов
$newArr=[];
foreach($arResult["ITEMS"] as $arItem){
$newArr[$arItem['IBLOCK_SECTION_ID']][]=$arItem;
}

//далее по новому массиву формируем ваши блоки
foreach(;newArr as $idSect=>$arEl){
?>
<div id="slider-tabs__<?=$idSect?>" class="slider-tabs">
<?
}
Ответ написан
Ваш ответ на вопрос

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

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