SimpleGallery: несколько вызовов в документе, несколько групп изображений

Предположим:

1) В одном документе в двух разных местах вызывается SimpleGallery, что создает две группы изображений;

2) Часть изображений, загруженных с помощью SimpleGallery, показывается в одной группе изображений, другая часть — в другой.

Сейчас делаю с помощью поля «Дополнительно» и &addWhereList:

[!sgLister?
...
&addWhereList=`c.sg_add='tag'`
...
!]

В «Дополнительно» у изображений либо один, либо другой тег, в вызове SimpleGallery в документе &addWhereList=`c.sg_add='tag1'` или &addWhereList=`c.sg_add='tag2'`.

Вопрос: а нет ли у SimpleGallery какого-то специального параметра, который позволил бы обходиться без &addWhereList? Как в EvoGallery есть &tags?

19 комментариев

avatar
Нет, нету. И чем addWhereList не устраивает?
avatar
Например, во вкладке SimpleGallery убираю у изображения галочку Показывать/Да, сохраняю. Далее без &addWhereList избражение не показывается — как это и должно быть. Но если есть &addWhereList — показывается всё равно.

Из более важного, будет следующий вопрос про возможнсть использования parseChunk (или чего-то более нового) и чанка, в котором вызов SimpleGallery — [!sgLister?… !]. Если это возможно, то лучше, чтобы значение параметра было более простого вида как в EvoGallery в &tags=`tag1`, а не как в &addWhereList=`c.sg_add='tag1'`.
avatar
Ну вообще не должно показываться, но на крайний случай можете дописать условие &addWhereList=`sg_add=«tag1» and sg_isactive=1`
По второму вопросу вообще не понял. Если вы и так используете PHP, то смысл вызывать сниппет в чанке? В скрипте его и вызывайте, а в чанк вставляйте результат… В чем проблема?
avatar
Если SimpleGallery в чанке, то вместо длинного вызова [!sgLister?… !] в документ вставляется [!parseChunk? &ChunkName=`SG` &addWhereList=`c.sg_add='tag1'`!]. Правда, конкретно такая конструкция с parseChunk не работает.
avatar
Все параметры начинающиеся с sg_ будут передаваться sgLister. Например sg_addWhereList=`c.sg_add='tag1'`
ChunkName — название для чанка
Все остальные параметры будут передаваться в тот самый чанк для подстановки
<?php
include_once(MODX_BASE_PATH.'assets/snippets/DocLister/lib/DLTemplate.class.php');
$tpl = DLTemplate::getInstance($modx);
$sg_params = [];
if (count($params)){
	foreach($params as $key => $val){
		if (substr($key, 0, 3)=='sg_') {
			$param = substr($key, 3); 
			$sg_params[$param] = $val;
			unset($params[$key]);
		}
	}
}
$params['sg'] = $modx->runSnippet('sgLister',$sg_params);
return $tpl->parseChunck($ChunkName,$params);
avatar
Error: Uncaught Error: Call to undefined method DLTemplate::parseChunck()
avatar
очепятался: $tpl->parseСhunk
avatar
Аналогично.
avatar
Вообще, предлагаю на тему parseChunk в другом месте, чтобы было проще найти кому-то, кому это тоже понадобится. Сейчас создам новый вопрос.
avatar
Тут:

parseChunk и SimpleGallery

modx.im/blog/questions/6245.html
avatar
Так а чем тебя второй вариант то не устраивает? Который ниже?
avatar
в чанке ставить в месте галлереи [+sg+]

— В каком чанке? В SG находится вызов SimpleGallery: [!sgLister?… &addWhereList=`c.sg_add='tag1'`… !].

Если просто вставлять [[parseChunk? &ChunkName=`SG` &sg=`[!sgLister? &addWhereList=`c.sg_add='tag1'`!]`]] в документ напрямую или сначала в чанк, а его уже в документ, то не срабатывает &addWhereList=`c.sg_add='tag1'`, вообще никакой параметр не срабатывает.
avatar
ParseChunk тоже некэшируемый вызывай.
Вызов parseChunk: prntscr.com/w6gg55
Чанк SG: prntscr.com/w6ggfs
Фотография: prntscr.com/w6ggod
Результат: prntscr.com/w6ggw3
avatar
Вызов parseChunk: prntscr.com/w6gg55

Где он вызывается, куда вставляется? В документ же, где должна появиться галарея? И в вызове parseChunk у Вас вызов же SimpleGallery: [!sgLister? &tpl=`photo.tpl` &addWhereList=`c.sg_add='tag1'`!].

У меня желание противоположное — чтобы, если это вообще возможно, вызов SimpleGallery не вставлялся в документ прямо. У Вас вызов SimpleGallery весьма короткий, только из параметров &tpl и &addWhereList, а со всеми необходимыми параметрами он гораздо длиннее. Тогда уж проще этот вызов вставлять напрямую, без parseChunk.

Если бы было [[parseChunk? &ChunkName=`SG` &addWhereList=`c.sg_add='tag1'`]], это было бы удобно. (Вызов SimpleGallery в чанке SG).
avatar
Правильно ли я вас понял, что вы хотите сделать что-то на подобии конфигурации? Т.е. задать единую конфигурацию, которая будет отличаться только этим тэгом?
Сниппет sgTagLister:
<code><?php
$data = [
'tpl' => 'you.tpl',
'display' =>  -1,
'orderBy' => 'sg_id desc'
/* other you default params*/
];
if (isset($tag)) $data['addWhereList'] = 'sg_add="'.$modx->db->escape($tag).'"';
$params = array_merge($data,$params);
return $modx->runSnippet('sgLister',$param);
</code>
Вызов:
[!sgTagLister? &tag=`tag1`!]

Соответственно в $data задаете значения по умолчанию, если что-то будет присутствовать в вызове, они перекроют их. Параметр $tag для краткости.
Комментарий отредактирован 2020-12-20 14:47:19 пользователем liberpro
avatar
P.S.
А вот так разве не канает?
[[parseChunk? 
&ChunkName=`SG`
&sg=`[!sgLister? &addWhereList=`c.sg_add='tag1'`!]`]]

И в чанке ставить в месте галлереи [+sg+]?
avatar
Да и в целом: основная ценность SimpleGallery именно в удобном бэке (замороченную кастомизацию окна вынесем за скобки, но она тут хотя бы есть, в отличие от того же EG). Вывод на фронт, ну право, это такая мелочь же. sgLister просто облегчает работу, но написать свое решение дело то 10 минут от силы.
avatar
Сделайте 2 галереи, каждая на своей отдельной страницы, и в своем документе в первую группу вызывайте галерею с одной страницы, а во вторую группу — со второй. И никакие теги, ни addWhereList не нужны будут.
  • paic
  • 0
avatar
Слишком громоздко.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.