Подскажите, как вывести свой сниппет через pdoPage
Все здравствуйте!
Уважаемые знатоки, подскажите, как правильно вывести результаты своего сниппета через пагинацию pdoPage?
Мой сниппет собирает комментарии к страницам товаров и выводит все в одном месте (нужна особая выборка, по этому решился на свой скрипт).
Код:
Благодарен буду любой подсказке.
Уважаемые знатоки, подскажите, как правильно вывести результаты своего сниппета через пагинацию pdoPage?
Мой сниппет собирает комментарии к страницам товаров и выводит все в одном месте (нужна особая выборка, по этому решился на свой скрипт).
Код:
<?php
// проверяем входные в сниппет параметры
if (empty($lmt)) {$lmt = '1000';}
if (empty($chunk)) {$chunk= 'tpl.Review';}
// установил фиксированное значение на время разработки
// попытка прикрутить pdoPage
$total = 800;
$totalVar=$modx->getOption('totalVar', $scriptProperties, 'total');
$modx->setPlaceholder($totalVar,$total);
$limit=$modx->getOption('limit', $scriptProperties, 10);
$offset=$modx->getOption('offset', $scriptProperties, 0);
// готовим запрос к базе данных
$query=$modx->newQuery('TicketComment');
$query->select(array(
'`TicketComment`.`id`, `TicketComment`.`text`, `TicketComment`.`name`, `TicketComment`.`createdon`, `TicketComment`.`properties`, `Therd` . `resource`'
));
$query->leftJoin('modUser','User','User.id = TicketComment.createdby');
$query->leftJoin('modUserProfile','Profile', 'Profile.internalkey = TicketComment.createdby');
$query->leftJoin('TicketThread','Therd', 'Therd.id = TicketComment.thread');
$query->where(array('TicketComment.deleted' => 0, 'TicketComment.parent' => 0));
$query->groupby('TicketComment.id');
$query->sortby('TicketComment.createdon','DESC');
$query->limit($limit, $offset);
$query->prepare();
//echo $query->toSQL();
if ($query->prepare() && $query->stmt->execute()) {
// Зачитываем в ассоциативный массив
$reviews = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
}
// переменная для вывода резальтатов сниппета
$output = '';
// перебираем результат и собираем вывод
foreach ($reviews as $review) {
$reviewID = $review['id'];
$reviewText = $review['text'];
$properties = $modx->fromJSON($review['properties']);
$reviewImg = $properties['image'];
$reviewImgOrg = $properties['image_orig'];
$reviewUserName = $review['name'];
$reviewCreatedAt = $review['createdon'];
$reviewResourceURI = $modx->makeUrl($review['resource'], 'web', '', 'full');
$reviewURI = $reviewResourceURI . '#comment-' . $review['id'];
$output .= $modx->getChunk($chunk, array(
'id' => $reviewID,
'text' => $reviewText,
'img' => $reviewImg,
'img_orign' => $reviewImgOrg,
'username' => $reviewUserName,
'createdat' => $reviewCreatedAt,
'parent' => $reviewResourceURI,
'url' => $reviewURI,
));
}
return $output;В итоге, получаю только первую страницу без пагинации…Благодарен буду любой подсказке.
Комментарии: 20
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
я просто забыл закрывающие скобки для сниппета (((((((
Спасибо, что откликнулись =), а так может хоть скрипт кому пригодиться.
На всякий случай, правильный вызов:
У меня есть страница, на которой есть форма, которая отсылает чререз аякс запрос и блок с результатами запроса, куда они вставляются после успешного его выполнения. Первоначально выглядит к примеру так:
в сниппете «display something», если в $_REQUEST ничего нет, то возвращаются все записи. И все сделано впринципе как в статье, т.е. прописаны $total, $totalVar, $limit и $offset. И пагинация в этом случае выводится (т.е. когда выводятся все данные), типа сниппет отработал, без запроса с формы и все ок. НО после ввода данных с формы, отправки их через аякс и получении ответа с этого сниппета, где был выполнен другой запрос на основании данных из формы, мы все так же видим пагинацию первоначальную, со ссылками вида
и тд. И выходит что результат запроса аяксом вставлен в блок id=«search-results», но пагинация то осталась старая. Как сделать, чтоб пагинация работала именно для текущих результатов полученных с помощью аякса?
Старался понятно расписать) заранее спасибо за ответы!)
либо используете полностью pdoPage без своего ajax. Потому что pdoPage и знать не знает что у вас там в ajax. и как следствие не сможет перерисовать вам пагинацию.
Где-то была статья по поводу фильтров на PdoPage, но есть ощущение что или писать все самому или брать mSearch2, к нему можно прикрутить свою таблицу и там встроенные фильтры и все это на ajax работает.
СТатья:
ilyaut.ru/tips-and-tricks/simple-ajax-filter-using-pdopage/