Выборка отдельных изображнений в ms2gallery

Здравствуйте!
Возникла задача выводить в разных местах на одной странице изображения из ms2Gallery.
Т.е., в одной части страницы я делаю выборку 4-х изображений с ID 1,2,4,6, а в другой части страницы изображений с ID 3,5,7,8 и т.д.
Я задал этот вопрос в официальном разделе этого дополнения, и получил ответ от Василия. Попытался разобраться, но не смог — знаний не хватает.
Подскажите, как при помощи pdoResources присоединить из таблицы изображения с определёнными ID, возможно ли это вообще?
В описании к дополнению в качестве примера есть конструкция:
[[!pdoPage?
	&element=`pdoResources`
	&loadModels=`ms2gallery`
	&parents=`[[*id]]`
	&tpl=`myRowTpl`
	&leftJoin=`{
		"120x90": {"class":"msResourceFile","alias":"120x90", "on": "120x90.resource_id = modResource.id AND 120x90.path LIKE '%/120x90/' AND 120x90.rank=0"}
		,"360x270": {"class":"msResourceFile","alias":"360x270", "on": "360x270.resource_id = modResource.id AND 360x270.path LIKE '%/360x270/' AND 360x270.rank=0"}
	}`
	&select=`{
		"modResource":"*"
		,"120x90":"120x90.url as 120x90"
		,"360x270":"360x270.url as 360x270"
	}`
	&showLog=`1`
]]
В этом примере мы 2 раза присоединяем таблицу галереи и выбираем превью размерами 120х90 и 360х270.
В чанке myRowTpl эти картинки выводятся так:
<img src="[[+120x90]]" title="" alt="" />
<img src="[[+360x270]]" title="" alt="" />
Как будет выглядеть эта конструкция для моей задачи?
Спасибо!
Илья
07 июля 2014, 15:16
modx.pro
4
4 510
0

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

Василий Наумкин
07 июля 2014, 21:21
+1
[[!pdoResources?
	&loadModels=`ms2gallery`
	&class=`msResourceFile`
	&tpl=`@INLINE [[+rank]]. <img src="[[+url]]" />`
	&where=`{"resource_id":"[[*id]]","path:LIKE":"%/120x90/","active":1}`
	&limit=`3`
	&sortby=`FIELD(rank,1,3,5)`
	&sortdir=``
]]

[[!pdoResources?
	&loadModels=`ms2gallery`
	&class=`msResourceFile`
	&tpl=`@INLINE [[+rank]]. <img src="[[+url]]"/>`
	&where=`{"resource_id":"[[*id]]", "path:LIKE":"%/120x90/","active":1}`
	&limit=`3`
	&sortby=`FIELD(rank,0,2,4)`
	&sortdir=``
]]
    Илья
    07 июля 2014, 22:52
    0
    Спасибо Василий!
    Последний вопрос (боюсь спрашивать):
    А если мой чанк вывода изображений выглядит вот так
    <div id="msGallery">
    	<a rel="fancybox" href="[[+url:default=`/assets/ms2gallery/minishop2/img/web/ms2_big.png`]]" target="_blank" title="[[+description]]">
    		<img src="[[+190x143:default=`/assets/components/ms2gallery/img/web/ms2_medium.png`]]" width="190" height="143" alt="[[+name]]" title="[[+description]]" id="mainImage" />
    	</a>
    </div>
    как будет выглядеть вызов &where для оригинального изображения [[+url]]
      Василий Наумкин
      08 июля 2014, 09:47
      0
      Я тебя не понимаю. Какая связь между чанком оформления и условием выборки?

      Вопрос сформулируй понятно — что ты хочешь выбрать? А вот после выборки ты уже будешь оформлять результаты.
        Илья
        08 июля 2014, 10:09
        0
        Вот так я вызываю изображения из галереи
        [[!pdoResources?
        	&loadModels=`ms2gallery`
        	&class=`msResourceFile`
        	&tpl=`myRowTpl`
        	&where=`{"resource_id":"[[*id]]","path:LIKE":"%/190x143/","active":1}`
        	&limit=`8`
        	&sortby=`FIELD(rank,1,5,8,11)`
        	&sortdir=``
        ]]
        Вот так выглядит чанк myRowTpl
        <div id="msGallery">
        	<a rel="fancybox" href="[[+url]]" target="_blank">
        		<img src="[[+190x143]]" width="190" height="143" id="mainImage" />
        	</a>
        </div>
        Сейчас я получаю в качестве основного изображения [[+url]] превью [[+190x143]]
        А мне нужно вызвать и превью и оригинал изображения, так чтобы можно было организовать вывод fancybox галереи разбитой на части.
        Спасибо за терпение!
          Василий Наумкин
          08 июля 2014, 10:48
          0
          [[+url]] — это путь к большому изображению
          [[+190x143]] — путь к превью.

          В чанке показывается превью, при клике открывается большое изображение. В чем затруднение?
            Илья
            08 июля 2014, 16:42
            0
            Да, постараюсь понятнее написать:
            — мне нужно сделать выборку определённых изображений из галереи, превью и оригинала.
              Василий Наумкин
              08 июля 2014, 17:16
              0
              where здесь не причем, нужно присоединять позиции через join.

              И мне надоело уже все объяснять, давай дальше сам думай.
                Илья
                09 июля 2014, 17:03
                0
                Василий, и всё же я вынужден просить тебя помочь.
                Пример который приведён на официальной странице ms2gallery у меня не работает.
                Сам я разобраться не могу, три дня просидел бесполезно — нужно учится, а у меня нет времени (я прежде всего строитель и одновременно администратор сайта).
                Готов оплатить за помощь!
                  Илья
                  10 июля 2014, 19:23
                  0
                  Я сделал вот так:
                  [[!pdoResources?
                  	&loadModels=`ms2gallery`
                  	&class=`msResourceFile`
                  	&tpl=`@INLINE <img src="[[+190x143]]" /> <img src="[[+url]]" />`
                  	&where=`{"resource_id":"[[*id]]","parent":"0","active":"1"}`
                  	&sortby=`FIELD(rank,1,2,3,4)`
                  	&sortdir=`ASC`
                  	&leftJoin=`{
                  		"190x143":{"class":"msResourceFile","alias":"190x143", "on":"190x143.parent=msResourceFile.id AND 190x143.path LIKE '%/190x143/'"}
                  	}`
                  	&select=`{
                  		"msResourceFile":"*"
                  		,"190x143":"190x143.url as 190x143"
                  	}`
                  &showLog=`1`
                  ]]
                  Получаю ошибку «error #1052: Column 'rank' in order clause is ambiguous»
                  Без &sortby=`FIELD(rank,1,2,3,4)` выводятся все изображения галереи
                  Как отсортировать?
                  И вообще, правильно делаю?
                    Василий Наумкин
                    10 июля 2014, 22:56
                    0
                    &sortby=`FIELD(msResourceFile.rank,1,2,3,4)`
                      Илья
                      11 июля 2014, 11:29
                      0
                      Блин, не работает такая выборка: msResourceFile. — не помогло
                        Илья
                        12 июля 2014, 21:24
                        0
                        Нашёл!
                        Надо в параметры выборки &where добавить «rank:IN»:[ 0,1,2,3,4 ]
                        Работает!
                          Игорь Новичек
                          14 июля 2014, 13:11
                          0
                          Зачем такой огород городить?
                          Не проще ли было сделать один стандартный вызов галереи на странице, а затем через сниппет IF раскидать их по нужным местам.
                          Если я правильно понял, все происходит в пределах одного id, то есть
                          документ+изображения 1,2,3,4,5,6,7,8?
                          По ресурсам вариант с IF менее затратен, чем дважды вызывать pdoResources.
                          Или дважды вызвать галерею с &where
      Илья
      08 июля 2014, 11:03
      0
      Затруднение сделать вызов изображений [[+url]] и [[+190x143]] с помощью &where
      Так вызывается превью
      &where=`{"resource_id":"[[*id]]","path:LIKE":"%/190x143/","active":1}`
      А как вызвать [[+url]] (оригинал)?
        Konstantin
        10 сентября 2016, 19:48
        0
        Вот так решил задачу вывода url картинки второго изображения в галереи товара modx.pro/help/9791/#comment-66944
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          15