pdoFetch / Вывод новостей по годам и месяцам

Всем привет. Появилась задача на проекте сделать вывод новостей в стиле c пагинацией:
Year
	Months
		News
		News

Наткнулся на решение от Василия modx.pro/help/7072/#comment-49706, сделал по его примеру.
В результате, если я указываю чанк &tpl в вызове сниппета, то все нормально, появляется пагинация и подгружается следующая страница после скролла. Дальше не идет. Если страница загружена из кэша, то загрузится только первая страница, пагинация даже не появится.
PS когда не указываешь чанк, то отрабатывает все как надо.

Ниже, весь код, который я использую.

Спасибо за помощь! :)
Вызов сниппета:
<div id="pdopage">
  [[!+page.nav]]
            <div class="rows">
              

                [[!pdoPage?
                &parents=`[[*id]]`
                &depth=`3`
                &limit=`12`
                &element=`pdoNews`
                &showLog=`1`
                &tpl=`mainNewsRow`
                &tvPrefix=``
                &includeTVs=`mainNewsId`
                &hideContainers=`1`
                &ajaxMode=`scroll`
                ]]

            </div>
        </div>
Сниппет:
?php
$tplWrapper = '@INLINE <div>{{+output}}</div>';
$tplYear    = '@INLINE <div>{{+year}}<div>{{+resources}}</div></div>';
$tplMonth   = '@INLINE <div>{{+month}}<div>{{+resources}}</div></div>';
$tplDay     = '@INLINE <div>{{+day}}<div>{{+resources}}</div></div>';
$tpl        = $modx->getOption( 'tpl', $scriptProperties, '@INLINE <div><a href="{{+uri}}">{{+pagetitle}}</a></div>' );

$limit  = $modx->getOption( 'limit', $scriptProperties, 10 );
$offset = $modx->getOption( 'offset', $scriptProperties, 0 );


$fqn = $modx->getOption( 'pdoFetch.class', null, 'pdotools.pdofetch', true );
if ( $pdoClass = $modx->loadClass( $fqn, '', false, true ) ) {
	$pdoFetch = new $pdoClass( $modx, $scriptProperties );
} elseif ( $pdoClass = $modx->loadClass( $fqn, MODX_CORE_PATH . 'components/pdotools/model/', false, true ) ) {
	$pdoFetch = new $pdoClass( $modx, $scriptProperties );
} else {
	$modx->log( modX::LOG_LEVEL_ERROR, 'Could not load pdoFetch from "MODX_CORE_PATH/components/pdotools/model/".' );

	return false;
}

$parents = $modx->getOption( 'parents', $scriptProperties, $modx->resource->get( 'id' ) );

$options   = array(
	'parents' => $parents,
	'sortby'  => 'createdon',
	'sortdir' => 'DESC',
	'limit'   => $limit,
	'offset'  => $offset
);
$resources = $pdoFetch->getCollection( 'modResource', array( 'published' => true, 'deleted' => false ), $options );




$pdoFetch->addTime( 'pdoTools загружен' );

$tree = array();


foreach ( $resources as $resource ) {
	$year                      = date( 'Y', $resource['createdon'] );
	$month                     = date( 'm', $resource['createdon'] );
	$tree[ $year ][ $month ][] = $resource;
}

$output = '';
foreach ( $tree as $year => $months ) {
	$tmp1  = '';
	$count = 0;
	foreach ( $months as $month => $resources ) {
		$tmp2 = '';
		foreach ( $resources as $resource ) {
			$tmp2 .= $pdoFetch->getChunk( $tpl, $resource );
			$count ++;
		}
		$tmp1 .= $pdoFetch->getChunk( $tplMonth, array(
			'month'     => $month,
			'count'     => count( $resources ),
			'resources' => $tmp2,
		) );
	}
	$output .= $pdoFetch->getChunk( $tplYear, array(
		'year'      => $year,
		'count'     => $count,
		'resources' => $tmp1,
	) );
}

$pdoFetch->setTotal();

return $pdoFetch->getChunk( $tplWrapper, array( 'output' => $output ) );
Григорий Коленько
18 декабря 2015, 10:11
modx.pro
1
1 722
0

Комментарии: 1

Григорий Коленько
18 декабря 2015, 21:51
0
Решено
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1