MIGX и вывод одной превьюшки из галереи
Здравствуйте. Столкнулся с неопознанным. У меня есть структура вида
В чём проблема: он действительно выводит, но при этом он пишет мне вот такие URL'ы:
Но 22 — это НЕ id дочернего документа, откуда берётся галерея, это id документа из которого вызывается getImageList. Что интересно, если я рядом с getImageList пишу [[+id]] то он выводит мне правильный id дочернего документа а не 22. Что странно, имена файлов он пишет совершенно правильно, именно из разных директорий resourceimages, загвоздка именно в 22.
Каталог
-- Товар 1
-- Товар 2
В каждом товаре есть галерея MIGX со всевозможными фотками оного. Я пытаюсь одну из этих фоток вывести на страницу каталога. Делаю это таким запросом:[[!pdoMenu?
&includeTVs=`vendorImage,catImage`
&parents=`[[~id]]`
&sortBy=`pagetitle`
&levelClass=`level`
&tplOuter=`@INLINE [[+wrapper]]`
&tpl=`categoryItem`
&tplCategoryFolder=`categoryItem`
]]
В categoryItem, соответственно, есть вот такой код: [[getImageList? &docid=`[[+id]]` &tvname=`resourcealbum` &tpl=`CategoryItemImage` &limit=`1`]]
И в чанке CategoryItemImage выводится всего лишь одна строчка: [[+image]].В чём проблема: он действительно выводит, но при этом он пишет мне вот такие URL'ы:
/assets/resourceimages/22/lenovo-desktop-thinkcentre-edge-72z-front-view.png
Но 22 — это НЕ id дочернего документа, откуда берётся галерея, это id документа из которого вызывается getImageList. Что интересно, если я рядом с getImageList пишу [[+id]] то он выводит мне правильный id дочернего документа а не 22. Что странно, имена файлов он пишет совершенно правильно, именно из разных директорий resourceimages, загвоздка именно в 22.
Комментарии: 9
Не используется ли у вас случайно migxResourceMediaPath для картинок?
Делалось по вот этому хауту: rtfm.modx.com/extras/revo/migx/migx.tutorials/migx.use-resource-specific-mediasource-and-multifile-uploader
По-моему как раз это он самый.
По-моему как раз это он самый.
Насколько я помню, нормального решения этой проблемы нет. Предлагаемое решение — вызывать getImageList с processTV=`0`, а правильную ссылку формировать вручную (/assets/resourceimages/[[+id]]/[[+image]]). Хотя может уже и поменялось что-то с тех пор, как я видел похожую проблему :)
Спасибо, сделал по вашему совету в чанке вывода вот так:
Осталось две проблемы: почему в данном случае не работает phpthumbof?
/assets/resourceimages/[[+id]]/[[+image:phpthumbof=`h=100&w=100`]]
Это помогло. Осталось две проблемы: почему в данном случае не работает phpthumbof?
Правильный вариант выглядит так:
[[phpthumbof? &input=`/assets/resourceimages/[[+id]]/[[+image]]` &options=`h=100&w=100`]]
Если не заработает, можно попробовать [[+property.docid]] вместо [[+id]].
Спасибо, всё прекрасно заработало, лохматость повысилась и хвост ломить перестало. Вы очень помогли.
И второй вопрос. Там, где у меня вызов getImageList он выглядит так:
<a href="[[+link]]" [[+attributes]] class="thumbnail"
style="background-image: url([[getImageList? &docid=`[[+id]]` &processTVs=`0` &tvname=`resourcealbum` &tpl=`CategoryItemImage` &limit=`1`]]);">
Соответственно если в MIGX нет изображений то он выведет <a.... style="background-image: url( )">
И «заткнёт» изображение по умолчанию, которое там стоит. Как можно реализовать проверку на существование изображений в галерее MIGX?
Можно background-image: url() перенести в чанк CategoryItemImage. Тогда если не будет изображений, стиль останется без background-image.
Столкнулся с похожей проблемой. Брал за основу тот же метод:
https://docs.modx.com/extras/revo/migx/migx.tutorials/migx.use-resource-specific-media-source-and-multifile-uploader#MIGX.Useresource-specificmediasourceandmultifile-uploader-Createthedynamicresourcespecificmediasource
Использовался migxResourceMediaPath (для определения basePath и baseUrl Источника файлов):
https://docs.modx.com/extras/revo/migx/migx.frontend-usage
Первая галерея отобразилась нормально:
https://docs.modx.com/extras/revo/migx/migx.tutorials/migx.use-resource-specific-media-source-and-multifile-uploader#MIGX.Useresource-specificmediasourceandmultifile-uploader-Createthedynamicresourcespecificmediasource
Использовался migxResourceMediaPath (для определения basePath и baseUrl Источника файлов):
[[migxResourceMediaPath? &pathTpl=`assets/resourceimages/{id}/` &createFolder=`1`]]
Решил вывести несколько MIGX галерей от разных ресурсов на одной странице через getResources и getImageList:https://docs.modx.com/extras/revo/migx/migx.frontend-usage
Первая галерея отобразилась нормально:
/assets/resourceimages/1/foto_gal1.jpg
а для последующих галерей путь до фото упрямо прописывался от первой — id ресурса не менялся на нужный (такое ощущение, что он кэшировался):/assets/resourceimages/1/foto_gal2.jpg
/assets/resourceimages/1/foto_gal3.jpg
Помогло отключение кэширования при вызове migxResourceMediaPath в настойках Источника файлов:[[!migxResourceMediaPath? &pathTpl=`assets/resourceimages/{id}/` &createFolder=`1`]]
После этого, id стал корректным для каждой из галерей:/assets/resourceimages/1/foto_gal1.jpg
/assets/resourceimages/2/foto_gal2.jpg
/assets/resourceimages/3/foto_gal3.jpg
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.