Показать еще

Друзья, подскажите, пожалуйста php кнопки «Показать еще»
которая не переходит на другую страницу, а на текущей подгружает еще вывод записей с картинками.
Спасибо!

13 комментариев

avatar

<?php
echo '<a href="#" class="more">Показать еще</a>';

avatar
:) +100500!!!
avatar
Вы про AJAX?
avatar
А Вы что-то еще можете порекомендовать?)
avatar
А чего тут рекомендовать, уже все написали :)
Здесь основная часть пишется на jquerry, а не на php.

Делаете страницу, которая отдает нужное количество записей контента в зависимости от параметров URL. (Это единственное место, где действительно php понадобится).
В том месте, где нужно разместить вашу кнопку — аяксом запрашиваете нужное количество записей с нужного смещения, и в success-функции, указанной в параметрах ajax-запроса, вставляете полученные строки в нужный вам тег.
avatar
Спасибо! Не хватает рейтинга для голования ((
В общем, плюсики Вам!
avatar
Я писал отдельный сниппет и аяксом передавал в него параметры
avatar
Вот код сниппета:
<code><?php
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
if (empty($_POST['offset'])) {return;}
$res = '';

$params['idType']='parents';
$params['parents']='10';
$params['depth']='1';
$params['tvList']='imgNews';
$params['tvPrefix']='';
$params['dateFormat']='%d %B %Y';
$params['tpl']='news.item';
$params['orderBy']='pub_date DESC';
$params['total']= $_POST['offset'];
$res = $modx->runSnippet('DocLister',$params);
$res = str_replace('[!', '[[', $res);
$res = str_replace('!]', ']]', $res);
$res = $modx->parseDocumentSource($res);
$res = $modx->evalSnippets($res);

//$id = isset($docid) ? $docid : $modx->documentIdentifier;
//$d = isset($depth) ? $depth : 0;
//$c=count($modx->getChildIds(29, 0));
//return $c;
if (!empty($res)) {
        die($res);
}</code>
вот код в шаблоне:
[!AddNews!]
	<div id="result-news">
		[!DocLister?
			&idType=`parents`
			&parents=`[*id*]`
			&tpl=`news.item`
			&tvList=`imgNews`
			&tvPrefix=``
			&dateFormat=`%d %B %Y`
			&display=`5`
			&orderBy=`id DESC`
		!]
	</div>
	
	<div class="review-buttons">
		<button class="add-more-news" data-offset="10"><img src="assets/tpl/img/add-more-news.png" alt="">Загрузить еще новостей</button>
	</div>


и вот код скрипта:
$(".add-more-news").click(function(e){
	e.preventDefault();
	var countReviews=$(".count-news").text();
	var totalReviews=$(".news-item").length;
	if(countReviews>totalReviews) {
		var offset = $(this).data("offset");
		$('.add-more-news').data('offset', offset + 5);
		$('.add-more-news').attr('data-offset', offset + 5);

		$(".add-more-news img").addClass("anim-load");
		setTimeout(function() {
			$.ajax({
				type: 'POST',
				url: document.location.href,
				data: {
					offset:offset,
				},
				success: function (data){
					$('#result-news').html(data);
				},
				complete:function() {
					$(".add-more-news img").removeClass("anim-load");
				}
			});
		}
		,1000);
	}
	else {
		$(".add-more-news").text("Больше нет новостей");
	}
});
Комментарий отредактирован 2017-08-15 10:13:19 пользователем lector1982
avatar
Спасибо огромное!)
avatar
Не за что, только под себя переделайте, у меня там и id родителя прописан явно и много чего еще
avatar
Да-да, я это понимаю)
К сожалению, технически не могу плюсиков поставить, поскольку у меня рейтинг минусовой — прав не хватает
avatar
Ничего страшного, просто помню как сам мучался)
avatar
))))))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.