Подружить JSONDerulo с pdoPage

В пакете JSONDerulo modx.com/extras/package/jsonderulo, который выводит фиды ютьюба, твитера и т.п. есть параметр лимит, этот параметр, по умолчанию равен 10, ноль (без ограничения) не понимает, в связке с pdoPage не получается постраничной разбивки.
Прошу чуть ума-разума)) и дельного совета.
Владимир
15 марта 2014, 14:29
modx.pro
1
1 274
0

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

Володя
15 марта 2014, 20:05
0
И наверно вряд ли задружат вдвоем...Pdopage необходимо знать сколько элементов всего в выборке, затем бьет по страницам. А JSONDerulo вряд ли получает количество постов или чего там… соответственно пагинации нет
    Владимир
    15 марта 2014, 20:11
    0
    Да, надо что бы записывал в какую то свою таблицу… Ибо без пагинации использовать не удобно…
    Саша Пекшев
    16 января 2015, 15:39
    +1
    Если кому надо могу выложить костыль JSONDerulo для Youtube, там просто к каждой соц сети своё апи.
      Владимир
      16 января 2015, 15:43
      0
      Давай, конечно!
        Саша Пекшев
        16 января 2015, 15:49
        2
        +1
        Это надо найти и заменить в снипите 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 еще описание видео забираю в оригинале этого тоже нету
          Владимир
          16 января 2015, 15:50
          0
          Сегодня же попробую. Спасибо!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6