pdoPage ajax пагинация + фильтры
Специально зарегистрировался для для данного вопроса.
В modxе недавно, поэтому многого не знаю.
Собственно вопрос.
Необходимо вывести вывести миниатюры постов, с пагинацией и фильтрам по годам и месяцам.
Через pdoResources все хорошо работает:
html
Сниппет getNews
js
Смысл в том, что при добавлении аякса в пагинацию, со сниппета не приходят данные(точнее приходят но сам вызов $modx->runSnippet('pdoPage',$params), возвращает пустую строку), понимаю что проблема может решаться элементарно, но ответов на похожие вопросы попусту нет. Видел пост о том, что нужно использовать сессии, но как это может в данном случае непойму.
В modxе недавно, поэтому многого не знаю.
Собственно вопрос.
Необходимо вывести вывести миниатюры постов, с пагинацией и фильтрам по годам и месяцам.
Через pdoResources все хорошо работает:
html
<section class="section news">
<div class="container w-container">
<h1 class="news__title">Новости Корпорации Газэнергострой</h1>
<ul class="news-filter news-filter-year">
<li data-val="2017" data-name="year" class="news-filter__item news-filter-year__item"> 2017</li>
<li data-val="2016" data-name="year" class="news-filter__item news-filter-year__item"> 2016</li>
<li data-val="2015" data-name="year" class="news-filter__item news-filter-year__item"> 2015</li>
<li data-val="2014" data-name="year" class="news-filter__item news-filter-year__item"> 2014</li>
<li data-val="2013" data-name="year" class="news-filter__item news-filter-year__item"> 2013</li>
<li data-val="2012" data-name="year" class="news-filter__item news-filter-year__item"> 2012</li>
<li data-val="2011" data-name="year" class="news-filter__item news-filter-year__item"> 2011</li>
<li data-val="2010" data-name="year" class="news-filter__item news-filter-year__item"> 2010</li>
</ul>
<ul class="news-filter news-filter-month">
<li data-val="" data-name="month" class="news-filter__item news-filter-month__item">Весь год</li>
<li data-val="01" data-name="month" class="news-filter__item news-filter-month__item">Январь</li>
<li data-val="02" data-name="month" class="news-filter__item news-filter-month__item">Февраль</li>
<li data-val="03" data-name="month" class="news-filter__item news-filter-month__item">Март</li>
<li data-val="04" data-name="month" class="news-filter__item news-filter-month__item">Апрель</li>
<li data-val="05" data-name="month" class="news-filter__item news-filter-month__item">Май</li>
<li data-val="06" data-name="month" class="news-filter__item news-filter-month__item">Июнь</li>
<li data-val="07" data-name="month" class="news-filter__item news-filter-month__item">Июль</li>
<li data-val="08" data-name="month" class="news-filter__item news-filter-month__item">Август</li>
<li data-val="09" data-name="month" class="news-filter__item news-filter-month__item">Сентябрь</li>
<li data-val="10" data-name="month" class="news-filter__item news-filter-month__item">Октябрь</li>
<li data-val="11" data-name="month" class="news-filter__item news-filter-month__item">Ноябрь</li>
<li data-val="12" data-name="month" class="news-filter__item news-filter-month__item">Декабрь</li>
</ul>
<div id="pdopage">
<ul class="news-list">
[[!getNews]]
</ul>
[[!+page.nav]]
</div>
</div>
</section>
Сниппет getNews
<?php
$filter = array();
if($_POST['year']) {
$filter[] = 'YEAR(FROM_UNIXTIME(modResource.publishedon))='.$_POST['year'];
}
if($_POST['month']) {
$filter[] = 'MONTH(FROM_UNIXTIME(modResource.publishedon))='.$_POST['month'];
}
$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : '1';
if(count($filter) > 0) {
$where = $modx->toJSON($filter);
} else {
$where = '';
}
$params = array(
'parents' => '2',
'limit' => '10',
'page' => $page,
'tpl' => 'newsListItem',
'includeTVs' => 'newsListImg',
'where' => $where,
'ajaxElemRows' => '#pdopage .news-list',
'ajaxElemPagination' => '#pdopage .pagination',
'ajaxElemLink' => '#pdopage .pagination a',
'includeContent' => '1',
'ajaxMode' => 'default'
);
return $modx->runSnippet('pdoPage',$params);
js
$('.news-filter li').click( function () {
$(this).parent().find('li').removeClass('active');
$(this).addClass('active');
$('.news-filter').serializeAny();
$.ajax({
url: 'http://gazenergostroy.ru/ajax/ajaxnews',
data: $('.news-filter').serializeAny(),
method: 'POST'
}).done(function(data) {
if (data.length >0) {
$('.news-list').hide().html(data).fadeIn(400);
} else {
$('.news-list').html('Новостей не найдено.');
}
$(".news-list__text").each(function() {
var $this = $(this);
$this.html($this.html().replace(/ /g, ''));
});
});
});
Смысл в том, что при добавлении аякса в пагинацию, со сниппета не приходят данные(точнее приходят но сам вызов $modx->runSnippet('pdoPage',$params), возвращает пустую строку), понимаю что проблема может решаться элементарно, но ответов на похожие вопросы попусту нет. Видел пост о том, что нужно использовать сессии, но как это может в данном случае непойму.