Кнопка "Показать еще" в Битрикс
Последние записи
Для начала создадим шаблон system.pagenavigation
(если его нет) в шаблоне вашего сайта. В моем случае путь такой /local/templates/main/components/bitrix/system.pagenavigation
Скопируем стандартный шаблон и назовем его showMore
Заменим код в файле template.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->createFrame()->begin("Загрузка навигации");
?>
<?if($arResult["NavPageCount"] > 1):?>
<?if ($arResult["NavPageNomer"]+1 <= $arResult["nEndPage"]):?>
<?
$plus = $arResult["NavPageNomer"]+1;
$url = $arResult["sUrlPathParams"] . "PAGEN_".$arResult["NavNum"]."=".$plus;
?>
<div class="load_more" data-url="<?=$url?>">
Показать еще
</div>
<?else:?>
<div class="load_more">
Загружено все
</div>
<?endif?>
<?endif?>
Заменяем стили в файле style.css
.load_more {margin: 10px;padding: 10px;border: 1px solid #ddd;cursor: pointer;text-align: center;}
Добавляем файл script.js
и пишем:
$(document).ready(function(){
$(document).on('click', '.load_more', function(){
var targetContainer = $('.news-list'), // Контейнер, в котором хранятся элементы
url = $('.load_more').attr('data-url'); // URL, из которого будем брать элементы
if (url !== undefined) {
$.ajax({
type: 'GET',
url: url,
dataType: 'html',
success: function(data){
// Удаляем старую навигацию
$('.load_more').remove();
var elements = $(data).find('.news-item'), // Ищем элементы
pagination = $(data).find('.load_more');// Ищем навигацию
targetContainer.append(elements); // Добавляем посты в конец контейнера
targetContainer.append(pagination); // добавляем навигацию следом
}
})
}
});
});
Создаем новый шаблон списка новостей и заменяем код файл template.php
на:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->setFrameMode(true);
?>
<div class="news-list">
<?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')));
?>
<div id="<?=$this->GetEditAreaId($arItem['ID']);?>" class="news-item">
<a href="<?=$arItem["DETAIL_PAGE_URL"]?>">
<h2><?=$arItem["NAME"]?></h2>
</a>
<?=CFile::ShowImage($arItem['PREVIEW_PICTURE'])?>
<?=$arItem['PREVIEW_TEXT']?>
</div>
<?endforeach;?>
</div>
<?=$arResult['NAV_STRING']?>
На нужной странице размещаем компонент bitrix:news.list и настраиваем на необходимый инфоблок. В качестве шаблона компонента выбираем showMore (если вы все сделали правильно он должен появиться в списке), а в качестве шаблона постраничной навигации - showMore.
Перепечатка материала:
Комментарии