171 похожих чатов

``` <?Php // VK API // ver. 1.0

$access_token = ($modx->getOption('vk_access_token')?: '-1'); // Токен приложения ВК
$owner_id = ($modx->getOption('vk_group_id')?: '-1'); // Id группы
$post_id = $modx->getOption('post_id', $scriptProperties, '0'); // Пост
$extended = $modx->getOption('extended', $scriptProperties, '1'); // Расширенные поля
$class = $modx->getOption('class', $scriptProperties, '');
$tpl = $modx->getOption('tpl', $scriptProperties, '@INLINE <li><img src="[[+photo.sizes.7.url]]"></li>');
$skip_imgages = $modx->getOption('skip_img', $scriptProperties, ''); // Строка со значениями картинок, которые нужно пропустить

$response = $modx->cacheManager->get('vk_photos_'.$modx->resource->id, [xPDO::OPT_CACHE_KEY => 'vk_photos']);
if(empty($response) || $request['refresh'] == 1) {
$ch = curl_init();
$options = [
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => 'https://api.vk.com/method/wall.getById?&access_token='.$access_token.'&posts=-'.$owner_id.'_'.$post_id.'&v=5.120'
];
curl_setopt_array($ch, $options);
$result = json_decode(curl_exec($ch), true); // Декодируем полученный json массив
curl_close($ch);

$response = $result['response'][0]['attachments'];
$photos = $modx->cacheManager->set('vk_photos_'.$modx->resource->id, $response, 86400, [xPDO::OPT_CACHE_KEY => 'vk_photos']);
}

$pdo = $modx->getService('pdoTools');

$modx->setPlaceholder($totalVar, count($response));
$response = array_slice($response, $offset, $limit, true);

$skip_imgages = str_replace(' ', '', $skip_imgages); // Вырезать из строки со значениями пропуска картинок пробелы
$skip_imgages_arr = explode(",", $skip_imgages); // Создать массив значений номеров изображений, которые нужно пропустить
//$modx->log(modX::LOG_LEVEL_ERROR, "skip_imgages_arr: " . print_r($skip_imgages_arr, 1), 'FILE');

if ($response) {
$idx = 0; // Счётчик - индекс в массиве вывода
foreach ($response as $res) {
if (!in_array($idx + 1, $skip_imgages_arr)) {
$res['class'] = $class;
$res['idx'] = $idx;
$output .= $pdo->getChunk($tpl, $res);
}
$idx++;
}
}
return $output;

1 ответов

18 просмотров

Ну закардкодил под pdoPage и правда)) $modx->setPlaceholder($totalVar, count($response)); Сейчас в пустой плейсхолдер пишешь, не знаю выходит ли это боком, ну я бы поправил от греха.. $response = $modx->cacheManager->get('vk_photos_'.$modx->resource->id Кэшируешь относительно id текущего ресурса, а не переданных в сниппет данных. Казалось бы это на вкус и цвет, но есть вариант что в этом и дело, не зависимо от того, что передашь в сниппет, ключ кэша будет одинаковый!

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта