Дмитрий

Дмитрий

С нами с 16 января 2018; Место в рейтинге пользователей: #937
Дмитрий
01 февраля 2018, 18:54
-1
Действительно заработало…
А как мне
[[!If?
&subject=`[[+url1]]`
&operator=`notempty`
&then=`[[!GroupPicItemTpl]]`
]]

15 раз вызвать, где [[+url1]] меняет номер 1..15?
Дмитрий
01 февраля 2018, 12:20
0
Отлично. Спасибо.
Дмитрий
01 февраля 2018, 10:43
0
Слушайте, а я ведь щас понял, что кеш таким образом не верный для меня. У меня ресурс несколько документов с разными альбомами. А получилось, что везде один. Закешировал один.
Дмитрий
31 января 2018, 21:25
0
А какая версия на данный момент у CKeditor? В магазине версия старая, что даже плагины не поставить(((
Дмитрий
31 января 2018, 16:20
0
А если есть необходимость, а через админку нельзя?
То нужно лезть в core/cache/vk_photos/ и чистить?
Дмитрий
31 января 2018, 16:10
0
Спасибо. Только можно ответ? Если я щас сброшу кеш через админку, то он почиститься? И перекешируется через день?
Дмитрий
31 января 2018, 12:50
0
Упал код. Страница не загрузилась.
<?php
// VK API
    $owner_id = $modx->getOption('owner_id', $scriptProperties, '0'); // Группа
    $album_id = $modx->getOption('album_id', $scriptProperties, '0'); // Альбом
    $rev = $modx->getOption('rev', $scriptProperties, '1'); // 1 - новые сверху
    $extended = $modx->getOption('extended', $scriptProperties, '0'); // Расширенные поля
    $feed_type = $modx->getOption('feed_type', $scriptProperties, 'photo'); // photo, photo_tag
    $count = $modx->getOption('count', $scriptProperties, ''); // Количество загружаемых фото
    $class = $modx->getOption('class', $scriptProperties, '');
    $tpl = $modx->getOption('tpl', $scriptProperties, '@INLINE <li><img src="[[+src_bigxx]]"></li>');
    
    $photos= $modx->cacheManager->get('vk_photos', [xPDO::OPT_CACHE_KEY => 'vk_photos']);
    if(empty($photos)) { 
        /*получаем фото с ВК*/
        $query = file_get_contents('https://api.vk.com/method/photos.get?owner_id=-'.$owner_id.'&album_id='.$album_id.'&rev='.$rev.'&extended='.$extended.'&feed_type='.$feed_type.'&count='.$count);
        $result = json_decode($query, true); // Декодируем полученный json массив
        
        $response = $result['response'];
        $photos= $modx->cacheManager->set('vk_photos',$response, 86400, [xPDO::OPT_CACHE_KEY => 'vk_photos']
    }
    
    $output = '';
    $pdo = $modx->getService('pdoTools');
    
    $modx->setPlaceholder($totalVar, count($response));
    $response = array_slice($response, $offset, $limit, true);
    
    foreach ($response as $res) {    
        $res['class'] = $class;
        $output .= $pdo->getChunk($tpl, $res);
    }
    return $output;
Дмитрий
31 января 2018, 12:38
0
ОООО!!! Теперь огонь!
Большое спасибо за решение проблемы! Я просто сам практически ничего не понимаю в этом. Стихия другая, но делать нужно. Я вот код автора переделал, т.к. почти не работал. А за пагинацию спасибо.
Дмитрий
31 января 2018, 12:34
0
Если я правильно понял, сделал так
$query = file_get_contents('https://api.vk.com/method/photos.get?owner_id=-'.$owner_id.'&album_id='.$album_id.'&rev='.$rev.'&extended='.$extended.'&feed_type='.$feed_type.'&count='.$count);
    $result = json_decode($query, true); // Декодируем полученный json массив
    
    var_dump($result);
Результат
drive.google.com/open?id=1N8OiAMYFpUFjJXHP64w5vi3NYMm3SaJI
Дмитрий
31 января 2018, 12:28
0
<?php
// VK API
    $owner_id = $modx->getOption('owner_id', $scriptProperties, '0'); // Группа
    $album_id = $modx->getOption('album_id', $scriptProperties, '0'); // Альбом
    $rev = $modx->getOption('rev', $scriptProperties, '1'); // 1 - новые сверху
    $extended = $modx->getOption('extended', $scriptProperties, '0'); // Расширенные поля
    $feed_type = $modx->getOption('feed_type', $scriptProperties, 'photo'); // photo, photo_tag
    $count = $modx->getOption('count', $scriptProperties, ''); // Количество загружаемых фото
    $class = $modx->getOption('class', $scriptProperties, '');
    $tpl = $modx->getOption('tpl', $scriptProperties, '@INLINE <li><img src="[[+src_bigxx]]"></li>');
    
    $query = file_get_contents('https://api.vk.com/method/photos.get?owner_id=-'.$owner_id.'&album_id='.$album_id.'&rev='.$rev.'&extended='.$extended.'&feed_type='.$feed_type.'&count='.$count);
    $result = json_decode($query, true); // Декодируем полученный json массив
    
    $response = $result['response'];
    $output = '';
    $pdo = $modx->getService('pdoTools');
    
    $modx->setPlaceholder($totalVar, count($response));
    $response = array_slice($response, $offset, ($limit + $offset), true);
    
    foreach ($response as $res) {    
        $res['class'] = $class;
        $output .= $pdo->getChunk($tpl, $res);
    }
    return $output;
Версия pdo последняя 2.10.4-pl.
Дмитрий
31 января 2018, 12:04
0
Спасибо за участие решения проблемы.
[[!pdoPage?
&element=`GetVkAlbumPhoto`
                        		&owner_id=`[[*album_group_id]]`
                                &album_id=`[[*album_id]]`
                                &rev=`1`
                        		&tpl=`VkPicTpl`
                        		&limit=`5`
                        		&pageLimit=`10`
                        		&pageNavVar=`album_photo_page.nav`
                        		&tplPage=`@INLINE <li class="waves-effect"><a href="[[+href]]">[[+pageNo]]</a></li>`
                                &tplPageWrapper=`@INLINE <div class="pagination"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>`
                                &tplPageActive=`@INLINE <li class="active"><a href="[[+href]]">[[+pageNo]]</a></li>`
                                &tplPagePrev=`@INLINE <li class="waves-effect control"><a href="[[+href]]"><i class="material-icons">chevron_left</i></a></li>`
                                &tplPageNext=`@INLINE <li class="waves-effect control"><a href="[[+href]]"><i class="material-icons">chevron_right</i></a></li>`
                                &tplPageFirstEmpty=`@INLINE <li class="waves-effect control"><a href="[[+href]]">Первая</a></li>`
                                &tplPageLastEmpty=`@INLINE <li class="waves-effect control"><a href="[[+href]]">Последняя</a></li>`
                                &tplPagePrevEmpty=`@INLINE <div style="display: inline; padding-left: 15px"></div>`
                                &tplPageNextEmpty=`@INLINE <div style="display: inline; padding-left: 15px"></div>`
                        	]]
Вызвал. Страниц очень много. На деле 66 фото.
Страницы некоторые отображают те же фотки.
Можете посмотреть сами.
Дмитрий
26 января 2018, 14:47
0
Сделал таким образом.
<?php
    //VK API - photos.get
    $uid = $modx->getOption('uid',$scriptProperties, '0'); // Группа
    $gid = $modx->getOption('gid',$scriptProperties, '0'); // Альбом
    $rev = $modx->getOption('rev',$scriptProperties, '1'); // 1 новые сверху
    $extended = $modx->getOption('extended',$scriptProperties, '0'); // Расширенные поля
    $feed_type = $modx->getOption('feed_type',$scriptProperties, 'photo'); // photo, photo_tag
    $limit = $modx->getOption('limit',$scriptProperties, '-1'); // Количество загружаемых фото
    $class = $modx->getOption('class',$scriptProperties, '');
    $tpl = $modx->getOption('tpl', $scriptProperties, '@INLINE <li>[[+src_big]]</li>');
    
    $query = file_get_contents('https://api.vk.com/method/photos.get?owner_id=-'.$uid.'&album_id='.$gid.'&rev='.$rev.'&extended='.$extended.'&feed_type='.$feed_type.'&limit='.$limit.'&photo_sizes=0');
    $result = json_decode($query, true);
    
    $response = $result['response'];
    $output = '';
    $pdo = $modx->getService('pdoTools');
    
    foreach ($response as $res) {    
        $res['class'] = $class;
        $output .= $pdo->getChunk($tpl, $res);
    }
    return $output;
Если писать $photo_sizes = 1, тогда ничего не отображает. Если 0, тогда доступны src_xxbig в том числе. Не понял почему.
Чтобы все отображались $limit я так понял должен быть -1. Если 0, то ничего не будет.

А как ваше кеширование работает я не понял. Подставил код, ничего не отображается. Кеш чистил, ничего. Если можете, то доделайте и поясните.
uid группы не нужно писать с минусом.
Дмитрий
21 января 2018, 20:23
0
А вот выскочила это:
[2018-01-21 20:22:37] (ERROR @ /home/o/oooakg/kulibin.club/public_html/core/xpdo/cache/xpdoapccache.class.php: 36) xPDOAPCCache[myCache]: Error creating APC cache provider; xPDOAPCCache requires the APC extension for PHP, version 2.0.0 or later.
Дмитрий
21 января 2018, 20:21
0
Не нашёл связанного
Дмитрий
21 января 2018, 20:02
0
Где его логи посмотреть?
Дмитрий
17 января 2018, 10:18
0
Почистил кеш на сайте. Он помер.
Дмитрий
16 января 2018, 19:04
0
Ребята, что этот снипет безбожно тупит? Перестал выводить фотки по коду, который тут представлен.