Вывод MIGX галерей из разных ресурсов с пагинацией
Всем привет.
Имеется структура ресурсов:
-Раздел
--Категория 1
--Категория 2
--Категория 3
В Категориях фото загружены через MIGX и выводится сниппетом pdoPage:
Параметр parents игнорируется, и поле gallery тянется только из текущего ресурса.
Параметр docid — принимает только один параметр и тоже не подходит
Пробовал корректировать по этому методу: webstool.ru/pdopage-i-getimagelist-postranichnaya-navigacziya-migx.html
Но в итоге сниппет дублирует элементы, по 2 раза выводит
Имеется структура ресурсов:
-Раздел
--Категория 1
--Категория 2
--Категория 3
В Категориях фото загружены через MIGX и выводится сниппетом pdoPage:
{'!pdoPage' | snippet : [
'element' => 'getImageList',
'limit' => '11',
'tvname' => 'gallery',
'tvPrefix' => '',
'tpl' => 'tpl-gallery',
'includeTVs' => 'gallery',
'processTVs' => 'gallery',
'prepareTVs' => 'gallery',
'includeContent' =>'1',
'toPlaceholder' => 'result',
'sort'=> '[{"sortby":"MIGX_id","sortdir":"DESC"}]'
]}
Вопрос, есть ли возможность вывести общую галерею в Разделе, используя Migx галереи из категорий 1,2,3 с пагинацией?Параметр parents игнорируется, и поле gallery тянется только из текущего ресурса.
Параметр docid — принимает только один параметр и тоже не подходит
Пробовал корректировать по этому методу: webstool.ru/pdopage-i-getimagelist-postranichnaya-navigacziya-migx.html
Но в итоге сниппет дублирует элементы, по 2 раза выводит
Комментарии: 6
Попробуйте сделать такой сниппет:
И используйте его в pdoPage:
<?php
$totalVar = $modx->getOption('totalVar', $scriptProperties, 'total');
$limit = $modx->getOption('limit', $scriptProperties, 10);
$offset = $modx->getOption('offset', $scriptProperties, 0);
$sortby = $modx->getOption('sortby', $scriptProperties, 'MIGX_id');
$sortdir = $modx->getOption('sortdir', $scriptProperties, 'DESC');
$docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id'));
$docid = str_replace(' ', '', $docid);
$table = $modx->getOption('table_prefix').'site_tmplvar_contentvalues';
$sql = "SELECT * FROM {$table} WHERE `contentid` IN ({$docid}) AND `tmplvarid` = '{$tvId}'";
$q = $modx->prepare($sql);
$q->execute();
$tvs = $q->fetchAll(PDO::FETCH_ASSOC);
$array = array();
foreach($tvs as $tv){
$a = json_decode($tv['value'], 1);
foreach($a as $i){
$array[] = $i;
}
}
$modx->setPlaceholder($totalVar, count($array));
function sorter($key) {
return function ($a, $b) use ($key) {
return strnatcmp($a[$key], $b[$key]);
};
}
usort($array, sorter($sortby));
$sortdir == 'DESC' ? krsort($array) : ksort($array);
$array = array_slice($array, $offset, $limit);
foreach($array as $item){
$out .= $modx->getChunk($tpl, $item);
}
return $out;
И используйте его в pdoPage:
[[!pdoPage?
&element=`SnippetName`
&tvId=`43` // ID TV "gallery"
&docid=`18,38,59,46` // ID ресурсов
&limit=`12`
&tpl=`tpl-gallery`
]]
[[!+page.nav]]
Спасибо, вроде бы то что нужно.
Подскажите, как передать в чанк ID ресурса с которого отображется фото, что бы путь корректно прописать, а то в [[+image]] приходит не полный путь а только название файла
Подскажите, как передать в чанк ID ресурса с которого отображется фото, что бы путь корректно прописать, а то в [[+image]] приходит не полный путь а только название файла
Добавьте на 20 строке:
<?php
//.......
foreach($tvs as $tv){
$a = json_decode($tv['value'], 1);
foreach($a as $i){
$i['resource_id'] = $tv['contentid']; // вот это
$array[] = $i;
}
}
//.......
В чанке используйте [[+resource_id]]
Добавил
$a['resource_id'] = $tv['contentid'];
, но [[+resource_id]] не выводится
Поспешили, я поправил )
Кайф. Спасибо большое
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.