Задать вопрос
unitlab
@unitlab
Верстаю по чуть чуть)

Как отключить вывод элементов подраздела в 1С Битрикс?

Подскажите пожалуйста...
Имеется страница сайта на который выводится список элементов из разделов и подразделов.
Фильтр показывает разделы по которым возможна фильтрация элементов.
Как сделать так что бы фильтр не показывал вложенные элементы из под разделов, а только из того раздела в котором находишься?
То есть главный раздел Услуги не должен выводить элементы подразделов Услуги/Подраздел1 и тд
А должен показывать только элементы из раздела Услуги

5e9d7c8e0ac85646335967.png
<b>result_modifier.php</b>
<?
if($arParams["DISPLAY_SECTION_FILTER"] === "Y") {
	$arResult["SECTIONS"] = array();
	$arResult["IS_ALL"] = true;
	$arOrder = array("NAME"=>"ASC");
	$arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => 2 );
	$arSelect = array("NAME", "CODE", 'SECTION_PAGE_URL');
	$arNavParams = array('nTopCount' => 20);
	$rsSection = CIBlockSection::GetList($arOrder,$arFilter,false,$arSelect,$arNavParams);
	while($arSection = $rsSection->GetNext())
	{	
		if($arSection['CODE'] === $_REQUEST['SECTION_CODE']) {
			$arResult["IS_ALL"] = false;
			$arSection["ACTIVE"] = true;
		}
		$arResult["SECTIONS"][] = $arSection;
	}
}

foreach ($arResult['ITEMS'] as &$arItem) {
	$arItem['IMAGE'] = CFile::ResizeImageGet($arItem['PREVIEW_PICTURE']['ID'], array('width'=>370, 'height'=>370), BX_RESIZE_IMAGE_EXACT);
}
$arResult['IS_SHOW_MORE'] = !!($arResult["NAV_RESULT"]->NavPageCount - $arResult["NAV_RESULT"]->NavPageNomer);


<b>template.php</b>
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
$this->setFrameMode(true);
if(!empty($arResult['ITEMS'])):
?>


<div class="row services-list" data-news_count="<?=$arParams['NEWS_COUNT']?>">

	<?if(!empty($arResult["SECTIONS"])):?>
	
		<div class='col-xs-12'>
			<div class='filter hr'>
				<span>Вид услуг:</span>
				<a <?if(!empty($arResult['IS_ALL'])):?> class="active"<?endif;?> data-section='' href="<?=$arResult['ITEMS'][0]["LIST_PAGE_URL"]?>">Все</a>
				<?foreach($arResult['SECTIONS'] as $arSection):?>
					<a <?if(!empty($arSection['ACTIVE'])):?> class="active"<?endif;?> data-section='<?=$arSection['CODE']?>' href="<?=$arSection['SECTION_PAGE_URL']?>"><?=$arSection['NAME']?></a>
				<?endforeach;?>
			</div>
		</div>
	
	<?endif;?>
	
	<div class='js-items-wrap'>
	
		<div class='js-items'>
		
			<?foreach ($arResult['ITEMS'] as $key => $arItem):?>
			<?
			$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
			$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
			?>		
				<div class='col-lg-4 col-sm-6 col-xs-12 svItem-item' id="<?=$this->GetEditAreaId($arItem['ID']);?>">
					
					<a href="<?=$arItem["DETAIL_PAGE_URL"]?>" class="svItem-item-wrapper angle">
				
									<div class='table'>
									
										<div class="svItem-picture text-center td-center">
										
											<img src="<?=$arItem['PREVIEW_PICTURE']['SRC'] ?>" alt="<?=$arItem['NAME'] ?>" />	
											
										</div> 
									
									</div>
									

							
									<h5 class='text-center text-uppercase'><?=$arItem["NAME"]?></h5>
									
									<div class='text-center desc'><?=$arItem["PREVIEW_TEXT"]?></div>
						
					</a>
					

					
				</div>

			<?endforeach;?>
			
			<div class='clearfix'></div>
			
			<?if($arResult["IS_SHOW_MORE"]):?>
			
				<div class='show_more_wrap'>
				
					<button class='show_more' data-page='<?=$_REQUEST['PAGEN_1']?>' data-section='<?=$_REQUEST['SECTION_CODE']?>'>Ещё</button>
				
				</div>
			
			<?endif;?>
		
		</div>
		
	</div>
	
</div>

<?endif;?>


<b>script.js</b>
$(document).ready(function(){
	
	$(document).on('click','.services-list .show_more:not(.loading)', function(){
		var $this = $(this);
		var $wrap = $this.closest('.services-list');
		var page = +$this.data('page')||1;
		var $wrapItems = $wrap.find('.js-items-wrap');
		$this.addClass('loading').text('Загрузка...');
		
		var data = {
			'PAGEN_1':page+1,
			'SECTION_CODE':$this.data('section'),
			'NEWS_COUNT' :$wrap.data('news_count')
		}
		$.get('/local/include/ajax/services/show_more.php', data, function(html){
			$this.remove();
			$wrapItems.append($(html).find('.js-items').html());
		})
	})
	$('.services-list .filter a').on('click', function(e){
		e.preventDefault();
		var $a = $(this);
		var $filter = $a.parent('.filter');
		
		var $wrap = $a.closest('.services-list');
		var $wrapItems = $wrap.find('.js-items-wrap');
		history.pushState(null, null, this.href); 
		var data = {
			'PAGEN_1':1,
			'SECTION_CODE': $a.attr('href').split('/')[2],
			'NEWS_COUNT' : $wrap.data('news_count')
		}

		$wrapItems.load('/local/include/ajax/services/show_more.php .js-items', data, function(data){
			$filter.find('a').removeClass('active');
			$a.addClass('active');
		});
		
	})
	$(window).on('popstate', function(e) {
		var $wrap = $('.services-list');
		var $wrapItems = $wrap.find('.js-items-wrap');
		var $filter_a = $wrap.find('.filter a');
		var section = location.pathname.split('/')[2]
		console.log(location);
		var data = {
			'PAGEN_1':1,
			'SECTION_CODE': section,
			'NEWS_COUNT' : $wrap.data('news_count')
		}
		$wrapItems.load('/local/include/ajax/services/show_more.php .js-items', data, function(data){
			$filter_a.removeClass('active');
			$filter_a.filter('[data-section="'+section+'"]').addClass('active');
		});
    })
});


<b>.parameters.php</b>
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$arTemplateParameters = array(
	"DISPLAY_DATE" => Array(
		"NAME" => GetMessage("T_IBLOCK_DESC_NEWS_DATE"),
		"TYPE" => "CHECKBOX",
		"DEFAULT" => "Y",
	),
	"DISPLAY_NAME" => Array(
		"NAME" => GetMessage("T_IBLOCK_DESC_NEWS_NAME"),
		"TYPE" => "CHECKBOX",
		"DEFAULT" => "Y",
	),
	"DISPLAY_PICTURE" => Array(
		"NAME" => GetMessage("T_IBLOCK_DESC_NEWS_PICTURE"),
		"TYPE" => "CHECKBOX",
		"DEFAULT" => "Y",
	),
	"DISPLAY_PREVIEW_TEXT" => Array(
		"NAME" => GetMessage("T_IBLOCK_DESC_NEWS_TEXT"),
		"TYPE" => "CHECKBOX",
		"DEFAULT" => "Y",
	),
	"DISPLAY_SECTION_FILTER" => Array(
		"NAME" => GetMessage("DISPLAY_SECTION_FILTER"),
		"TYPE" => "CHECKBOX",
		"DEFAULT" => "Y",
	),
);
?>


<b>index.php</b>
<?if(!empty($_REQUEST['SECTION_CODE'])) {
	$arFilter = array('SECTION_CODE' => $_REQUEST['SECTION_CODE']);
}?>
<?$APPLICATION->IncludeComponent(
	"bitrix:news.list", 
	"services", 
	array(
		"ACTIVE_DATE_FORMAT" => "d.m.Y",
		"ADD_SECTIONS_CHAIN" => "Y",
		"AJAX_MODE" => "N",
		"AJAX_OPTION_ADDITIONAL" => "",
		"AJAX_OPTION_HISTORY" => "N",
		"AJAX_OPTION_JUMP" => "N",
		"AJAX_OPTION_STYLE" => "Y",
		"CACHE_FILTER" => "N",
		"CACHE_GROUPS" => "Y",
		"CACHE_TIME" => "36000000",
		"CACHE_TYPE" => "A",
		"CHECK_DATES" => "Y",
		"DETAIL_URL" => "",
		"DISPLAY_BOTTOM_PAGER" => "Y",
		"DISPLAY_DATE" => "Y",
		"DISPLAY_NAME" => "Y",
		"DISPLAY_PICTURE" => "Y",
		"DISPLAY_PREVIEW_TEXT" => "Y",
		"DISPLAY_SECTION_FILTER" => "Y",
		"DISPLAY_TOP_PAGER" => "N",
		"FIELD_CODE" => array(
			0 => "",
			1 => "",
		),
		"FILTER_NAME" => "arFilter",
		"HIDE_LINK_WHEN_NO_DETAIL" => "N",
		"IBLOCK_ID" => "2",
		"IBLOCK_TYPE" => "catalog",
		"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
		"INCLUDE_SUBSECTIONS" => "Y",
		"MESSAGE_404" => "",
		"NEWS_COUNT" => "12",
		"PAGER_BASE_LINK_ENABLE" => "N",
		"PAGER_DESC_NUMBERING" => "N",
		"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
		"PAGER_SHOW_ALL" => "N",
		"PAGER_SHOW_ALWAYS" => "N",
		"PAGER_TEMPLATE" => ".default",
		"PAGER_TITLE" => "Новости",
		"PARENT_SECTION" => "",
		"PARENT_SECTION_CODE" => "",
		"PREVIEW_TRUNCATE_LEN" => "",
		"PROPERTY_CODE" => array(
			0 => "",
			1 => "",
		),
		"SET_BROWSER_TITLE" => "Y",
		"SET_LAST_MODIFIED" => "N",
		"SET_META_DESCRIPTION" => "Y",
		"SET_META_KEYWORDS" => "Y",
		"SET_STATUS_404" => "N",
		"SET_TITLE" => "Y",
		"SHOW_404" => "N",
		"SORT_BY1" => "ACTIVE_FROM",
		"SORT_BY2" => "SORT",
		"SORT_ORDER1" => "DESC",
		"SORT_ORDER2" => "ASC",
		"COMPONENT_TEMPLATE" => "services",
		"STRICT_SECTION_CHECK" => "N"
	),
	false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
  • Вопрос задан
  • 1279 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
rpsv
@rpsv
делай либо хорошо, либо никак
Посмотрите в сторону параметра FILTER_NAME, чтобы задавать фильтрацию: https://dev.1c-bitrix.ru/user_help/components/cont...
-
По умолчанию элементы подкатегорий не ищутся, если не задан в фильтре INCLUDE_SUBSECTIONS, проверяйте фильтр
Ответ написан
Ваш ответ на вопрос

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

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