Подружить JSONDerulo с pdoPage
В пакете JSONDerulo modx.com/extras/package/jsonderulo, который выводит фиды ютьюба, твитера и т.п. есть параметр лимит, этот параметр, по умолчанию равен 10, ноль (без ограничения) не понимает, в связке с pdoPage не получается постраничной разбивки.
Прошу чуть ума-разума)) и дельного совета.
Прошу чуть ума-разума)) и дельного совета.
Комментарии: 6
И наверно вряд ли задружат вдвоем...Pdopage необходимо знать сколько элементов всего в выборке, затем бьет по страницам. А JSONDerulo вряд ли получает количество постов или чего там… соответственно пагинации нет
Да, надо что бы записывал в какую то свою таблицу… Ибо без пагинации использовать не удобно…
Если кому надо могу выложить костыль JSONDerulo для Youtube, там просто к каждой соц сети своё апи.
Давай, конечно!
Это надо найти и заменить в снипите JSONDerulo
И вызов сниппета
//-----------------------------------------------------------
// YouTube API V2 uploads
//-----------------------------------------------------------
} elseif( $feed == 'youtubev2uploads' ) {
$feedUrl = 'http://gdata.youtube.com/feeds/api/users/{username}/uploads?max-results={limit}&start-index={offset}&alt=json';
$JSON = file_get_contents("https://gdata.youtube.com/feeds/api/users/".$users."/uploads?v=2&alt=jsonc&max-results=0");
$JSON_Data = json_decode($JSON);
$total = $JSON_Data->{'data'}->{'totalItems'};
$totalVar = $modx->getOption('totalVar', $scriptProperties, 'total');
$modx->setPlaceholder($totalVar,$total);
if (empty($offset)) {$offset = '1';}
else{$offset++;}
$startIndex = $offset; //$modx->getOption('startIndex', $scriptProperties, 1);
$videoParams = $modx->getOption('videoParams', $scriptProperties, '?fs=1');
$excludeEmpty = explode(',', $modx->getOption('excludeEmpty', $scriptProperties, 'link'));
$feeds = explode(',', $modx->getOption('users', $scriptProperties, ''));
foreach ($feeds as $username) {
$cacheId = 'jsonderulo-youtubeuploadsfeed-'.$cacheName.'-'.$username;
if (($json = $modx->cacheManager->get($cacheId)) === null) {
if ($ch === null) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
}
curl_setopt_array($ch, array(
CURLOPT_URL => str_replace(array('{username}', '{limit}', '{offset}'), array($username, $limit, $startIndex), $feedUrl),
));
$json = curl_exec($ch);
if (empty($json)) {
continue;
}
//$modx->cacheManager->set($cacheId, $json, $cacheTime);
}
$feed = json_decode($json);
if ($feed === null) {
continue;
}
$feeditems = $feed->feed;
foreach ($feeditems->entry as $video) {
foreach ($excludeEmpty as $k) {
if ($video->$k == '') {
continue 2;
}
}
$videoId = substr($video->id->{'$t'},42);
$videoContent = $video->content->{'$t'};
$videoContent = str_replace("\n","
",$videoContent);
$rawFeedData[] = array(
'published' => strtotime($video->published->{'$t'}),
'picture' => $video->{'media$group'}->{'media$thumbnail'}[0]->url,
'title' => $video->title->{'$t'},
'ytlink' => $video->link[0]->href,
'embedlink' => 'https://www.youtube.com/embed/' .$videoId. $videoParams,
'videoId' => $videoId,
'content' => $videoContent,
'author' => $video->author[0]->name->{'$t'},
);
}
}
foreach ($rawFeedData as $image) {
$output .= $modx->getChunk($tpl, $image);
}
И вызов сниппета
[[!pdoPage?
&elementClass=`modSnippet`
&element=`JSONDerulo`
&limit=`5`
&feed=`youtubev2uploads`
&tpl=`jd.youTube`
&users=`YOUTUBE-CHANNEL`
&cacheTime=`10`
&cacheName=`youtube.cache`
&pageLimit=`13`
]]
<div class="paging">
<ul class="pagination">
[[!+page.nav]]
</ul>
</div>
и я кстати с youtube еще описание видео забираю в оригинале этого тоже нету
Сегодня же попробую. Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.