Здравствуйте! Возникла следующая задача: имеется страница с компонентом news.list, элементы которого подгружаются в конце по 8 штук с помощью jquery-ajax при нажатии на кнопку "Показать еще". Всё замечательно работало, пока не возникла необходимость сделать сортировку выбираемых элементов инфоблока случайным образом. В коде вызова компонента для значения сортировки указал RAND. Элементы начали сортироваться случайным образом, но при нажатии на кнопку "Показать еще" загружаемые элементы стали периодически повторяться с элементами от предыдущей загрузки. В чем может быть причина и есть ли возможность обойти данную ситуацию? Заранее спасибо
Код |
---|
Код вызова компонента: $APPLICATION->IncludeComponent( "bitrix:news.list", "brends", array( "IBLOCK_TYPE" => "sindika", "IBLOCK_ID" => "2", "NEWS_COUNT" => "8", "SORT_BY1" => "RAND", "SORT_ORDER1" => "ASC", "SORT_BY2" => "", "SORT_ORDER2" => "", "FILTER_NAME" => "", "FIELD_CODE" => array( 0 => "", 1 => "undefined", 2 => "", ), "PROPERTY_CODE" => array( 0 => "", 1 => "undefined", 2 => "", ), "CHECK_DATES" => "Y", "DETAIL_URL" => "", "AJAX_MODE" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "N", "CACHE_TIME" => "36000000", "CACHE_FILTER" => "N", "CACHE_GROUPS" => "Y", "PREVIEW_TRUNCATE_LEN" => "", "ACTIVE_DATE_FORMAT" => "d.m.Y", "SET_TITLE" => "N", "SET_BROWSER_TITLE" => "N", "SET_META_KEYWORDS" => "N", "SET_META_DESCRIPTION" => "N", "SET_STATUS_404" => "Y", "INCLUDE_IBLOCK_INTO_CHAIN" => "N", "ADD_SECTIONS_CHAIN" => "N", "HIDE_LINK_WHEN_NO_DETAIL" => "N", "PARENT_SECTION" => "", "PARENT_SECTION_CODE" => "", "INCLUDE_SUBSECTIONS" => "Y", "DISPLAY_DATE" => "N", "DISPLAY_NAME" => "N", "DISPLAY_PICTURE" => "Y", "DISPLAY_PREVIEW_TEXT" => "Y", "PAGER_TEMPLATE" => ".default", "DISPLAY_TOP_PAGER" => "N", "DISPLAY_BOTTOM_PAGER" => "Y", "PAGER_TITLE" => "Новости", "PAGER_SHOW_ALWAYS" => "N", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "PAGER_SHOW_ALL" => "N", "AJAX_OPTION_ADDITIONAL" => "", "AJAX" => $_REQUEST["AJAX"] ), false ); Код шаблона компонента template.php <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $this->setFrameMode(true); //количество брендов $brendCounter = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => 2, "ACTIVE" => "Y"), Array()); ?> <div class="brend large-12 columns"> <ul id="brend-append" class="small-block-grid-1 medium-block-grid-3 large-block-grid-4 text-center" data-brendcount="<?=$brendCounter; ?>"> <?foreach($arResult["ITEMS"] as $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'))); ?> <li id="<?=$this->GetEditAreaId($arItem['ID']);?>"> <?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?> <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?> <a href="<?=$arItem["DETAIL_PAGE_URL"]?>"> <div class="brend-img"> <img src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>"/> </div><span><?=$arItem["PREVIEW_TEXT"]?></span></a> <?endif;?> <?endif?> </li> <?endforeach;?> </ul> <?if(!$_GET['PAGEN_1']):?> <div class="text-center"> <span id="brend-more-btn">Показать ещё</span> </div> <?endif;?> </div> Скрипт для работы Ajax script.js $(function() { var currentPage = 1, brendAdd = $( "#brend-append" ), count = brendAdd.data( "brendcount" ), btn = $( "#brend-more-btn" ); btn.click(function( e ) { e.preventDefault(); //отключаем стандартную работу ссылки function startAnimation() { // - функция запуска анимации $("body").after("<div id=\"fon\" style='position: fixed; top: 0px; left: 0px; opacity: 0.5; background: #fff; width: 100%; height: 100%; z-index: 99999999; text-align: center;'><img id=\"load_img\" st yle=\"position:fixed; top:50%; left:50%; margin-top: -50px; margin-left: -100px;\" src=\"/bitrix/templates/sindika/img/load.gif\" /></div>"); } function stopAnimation() { // - функция останавливающая анимацию $("#fon").remove(); } $.ajax({ url: "/brends-ajax/", type: "get", dataType: "html", data: { PAGEN_1: ++currentPage }, beforeSend: function() { startAnimation(); // - запустим анимацию загрузки }, complete: function() { stopAnimation(); // - останавливаем анимацию загрузки if(currentPage * 8 >= count){ btn.hide(); } }, success: function( data ) { brendAdd.append( data ); } }); }); }); |