[ms2Gallery] Версия 1.3.0 - сниппет ms2GalleryResources
Как и обещал, представляю вашему вниманию новую версию ms2Gallery со сниппетом для вывода ресурсов с прикреплёнными изображениями.
Честно говоря, это вопрос №1 в поддержке магазина по ms2Gallery — «как вывести документы из контейнера такого-то с присоединением превью такого-то?». И мне очень надоело объяснять, как работает вот эта портянка:
Поэтому с версии 1.3.0 вы можете вызывать отдельный сниппет:
Сниппет называется ms2GalleryResources, потому что внутри у него старый добрый pdoResources. По большому счету, новый сниппет — это просто обёртка, которая готовит параметры и передаёт их в родительский сниппет.
Соответственно, вы можете использовать любые параметры pdoResources, плюс 3 новых:
Этот сниппет заменяет собой ms2GalleryFirstImages, который вышел не очень удачным решением.
Понятное дело, что работа напрямую через pdoResources возможна, как и прежде. Новый сниппет просто избавляет вас от необходимости вручную прописывать присоединения таблицы и выборку полей.
Обновляемся, пишем отзывы.
В следующей версии планирую добавить возможность отключения вкладки галереи для некоторых шаблонов и настройку для оформления вывода плейсхолдеров с картинками на странице.
Честно говоря, это вопрос №1 в поддержке магазина по ms2Gallery — «как вывести документы из контейнера такого-то с присоединением превью такого-то?». И мне очень надоело объяснять, как работает вот эта портянка:
[[!pdoPage?
&element=`pdoResources`
&loadModels=`ms2gallery`
&parents=`0`
&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"
}`
]]
[[!+page.nav]]Поэтому с версии 1.3.0 вы можете вызывать отдельный сниппет:
[[!pdoPage?
&element=`ms2GalleryResources`
&parents=`0`
&tpl=`@INLINE
<p>
<a href="[[+uri]]">[[+pagetitle]]</a>
<a href="[[+120x90.original]]"><img src="[[+120x90]]" title="[[+120x90.name]]" /></a>
</p>
`
&typeOfJoin=`inner`
&includeThumbs=`120x90,360x270`
&includeOriginal=`1`
]]
[[!+page.nav]]Как видите, теперь всё стало гораздо проще.Сниппет называется ms2GalleryResources, потому что внутри у него старый добрый pdoResources. По большому счету, новый сниппет — это просто обёртка, которая готовит параметры и передаёт их в родительский сниппет.
Соответственно, вы можете использовать любые параметры pdoResources, плюс 3 новых:
- typeOfJoin — Тип присоединения картинок ресурса. Left — это Left Join, то есть, ресурсы будут выбираться, даже если у них нет картинок. И inner — это Inner Join, будут выбираться только ресурсы с картинками.
- includeThumbs — Список разрешенных превью через запятую. Например «120x90,360x270».
- includeOriginal — Добавление в выборку дополнительного join со ссылкой на оригинальное изображение. Будет доступно в массиве ресурса как «разрешение.original», например «120x90.original».
Этот сниппет заменяет собой ms2GalleryFirstImages, который вышел не очень удачным решением.
Понятное дело, что работа напрямую через pdoResources возможна, как и прежде. Новый сниппет просто избавляет вас от необходимости вручную прописывать присоединения таблицы и выборку полей.
Обновляемся, пишем отзывы.
В следующей версии планирую добавить возможность отключения вкладки галереи для некоторых шаблонов и настройку для оформления вывода плейсхолдеров с картинками на странице.
Комментарии: 48
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
о да, жду)!
Для паджинации, у меня картинок может быть более 100 и выводить портянкой все на одной странице не логично.
Если нужно только превьюшки, без больших картинок, то всё еще проще:
Можно еще добавить
Укажи id ресурса, который тебе нужен:
В пусто. У меня размеры 180x180, 640x480
Пример для pdoResources чуть выше в комментариях, только учти, что вместе resource_id там product_id.
Ошибка в файле core/components/ms2gallery/processors/mgr/gallery/getlist.class.php
Ошибка в путях components/ms2gallery/img/mgr/extensions/
Вот так работает:
Все никак руки не дойдут там зарегистрироваться и разобраться с функционалом…
А так, в источнике файлов есть настройка imageUploadDir, которая отвечает за то, куда добавлять картинку: в начало или в конец.
Потому и вопрос, можно ли вызывать первое оригинальное изображение галереи ресурса и модифицировать его, например как тивишку модификатором phpthumbon и т.п.?
Это как бы противоречит самой идее ms2Gallery. Все изображения там ресайзятся во время загрузки файла, а не страницы.
Но оригинальный файл есть, запись о нём в БД и ссылки в ms2GalleryResources — тоже.
Вот если бы еще в любом чанке можно было бы вызвать любое первое оригинальное изображение, но максимально просто, типа ms2GalleryResources+id ресурса и вот оно))) да еще потом его заресайзить как надо…
А на все случаи жизни превьюшек не создашь, тем более что вертикальные и горизонтальные изображения нужно учитывать…
PS пойду куплю еще одну ms2Gallery )) Благо у меня уже 50% скидка.
Вызывать как-то так:
Заранее благодарен.
Вот по такому принципу:
Параметр &size=`360x270` (например).
ЗЫ/ Сниппет FirstImage действительно разрывал мозг ))
Если делать так
[[!pdoPage?
&element=`ms2GalleryResources`
&parents=`[[*id]]`
&depth=`0`
&tpl=`babelLanguageLinks`
&typeOfJoin=`left`
&includeThumbs=`1000x450`
&includeOriginal=`1`
&sortby=`menuindex`
&sortdir=`ASC`
]]
то babelLanguageLinks дает только один одинаковый ID, игнорируя вложенные документы.
{extends 'file:elements/templates/base.tpl'}
{block 'page_class'}brand-page{/block}
{block 'main'}
{$_modx->resource.longtitle}
{$_modx->resource.content}
{'ms2GalleryResources' | snippet: [
'parents' => $_modx->resource.id,
'sortby' => 'menuindex',
'sortdir' => 'ASC',
'typeOfJoin' => 'inner',
'includeThumbs' => '400x400',
'tpl' => '@FILE elements/chunks/brands/brands_row.tpl'
]}
{/block}
Здесь
docs.modx.pro/komponentyi/ms2gallery/snippetyi/ms2galleryresources
написано, что ваш ms2GalleryResources наследует все параметры от pdoResources
значит у него таже история. Добавьте параметр limit и нужно вам количество.