Пагинация постов из массива через pdoPage ?

Добрый день (вечер) создал сниппет который получает xml и парсит в массив.
Потом методом getChunk выводил содержимое на страницу.
Так встал вопрос как сделать пагинацию постов через pdoPage?
<?php
$limit=$modx->getOption('limit', $scriptProperties, 5);
$offset=$modx->getOption('offset', $scriptProperties, 0);
$i = 0;
$reviews = array();   // Здесь будут хранится отзывы (посты)

//Функция которая пробегается по всем документам где указан определенный TV и возвращает массив (id(документа) => значение определенного TV)
function get_id($tvid){
    $res = array(); 
    global $modx;
    $q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
    $q->select('contentid,value');
    if ($q->prepare() && $q->stmt->execute()) {
    	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
    		$res[$row['contentid']] = $row['value'];
    	}
      }
    return $res;
}

//Функция отправляет Xml запрос и получаем Xml ответ ( комментарии )
function get_reviews_XMl($id){
    $url = 'http://shop.digiseller.ru/xml/shop_reviews.asp';
    $xml = "
	<digiseller.request>
	  <seller>
	    <id>195463</id>
	  </seller>
	  <product>
		<id>$id</id>
	</product>
	  <reviews>
	    <type>good</type>
      </reviews>
	  <pages>
	    <rows>1</rows>
      </pages>
	</digiseller.request>
	";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    return curl_exec($ch);

}

// Функция которая парсит массив в чанк для вывода.
function parse_array($array,$limit,$offset){
    global $modx;
    $out = '';
    $l = $offset + $limit;
    for ($i = $offset; $i < $limit; $i++){
        $placeholders = array(
            'my.id' => $array[$i]['game_id'],
            'my.title' => $array[$i]['title'],
            'my.image' => $array[$i]['image'],
            'my.text' => $array[$i]['info'],
            'my.date' => $array[$i]['date']
        );
        $out .= $modx -> parseChunk('review-tpl2',$placeholders);
    }
    return $out;
}

// Функция для сортировки по дате
function mysort($a, $b){
    return strtotime($b['date']) - strtotime($a['date']);
}

// Получаем все id документов со значениями TV c id 18
$res = get_id(18);

// тут мы получаем посты отзывы( и сохраняем все в массив $reviews)
foreach($res as $id => $v){
  $xml_obj = simplexml_load_string(get_reviews_XMl($v), 'SimpleXMLElement', LIBXML_NOCDATA);
  foreach($xml_obj->reviews->review as $rv){
    $reviews[$i]['game_id'] = (string)$id;
    $reviews[$i]['title'] = $modx->getObject('modResource',$id)->get('pagetitle');
    $reviews[$i]['image'] = $modx->getObject('modResource',$id)->getTVValue(1);
    $reviews[$i]['date'] = (string)$rv->date;
    $reviews[$i]['info'] = (string)$rv->info;
    $i++;
  }
}

$total = count($reviews); //количество постов
$totalVar=$modx->getOption('totalVar', $scriptProperties, 'total'); 
$modx->setPlaceholder($totalVar,$total);
usort($reviews, 'mysort');

$a = parse_array($reviews,$limit,$offset);
return $a;
Вроде я подготовил сниппеет для pdoPage, но в итоге пагинация появляется но при переходе на 2 страницу нечего не появляется. Не могу понять в чём причина.
вызываю сниппет так
[[!pdoPage? &element=`reviews2` &limit=`5` &offset=`0` ]] [[!+page.nav]]
Помогите пожалуйста) и если возможно подскажите как еще хранить посты в кэше (скажем сутки).
Как отрабатывает сниппет можно увидеть тут
Дмитрий
05 ноября 2016, 14:40
modx.pro
1 320
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0