Картинка в списке элементов коллекции Collection

Сегодня я оставлю заметку о том, как вывести изображение для каждой записи


Я применял 2 способа.
Первый — это когда изображение у нас хранится в TV-параметре. Например, у нас есть новость и картинка для нее хранится в отдельном TV.
Второй — когда нужно вывести первое изображении из галереи ms2Gallery. Например, у нас имеется раздел Галерея или Портфолио.

В первом случае все просто.
Добавляем столбец таким образом

где
preview — TV параметр содержащий изображение
render_preview — сниппет со следующим содержимым:
<?php
$img = $scriptProperties['value'];
if (empty($img)) {
    return "";
}
$img = str_replace('//', '/', '/'.$img);
return '<img style="width: 100%; max-height: 100px;" src="'.$img.'">';


Когда в список Collection нужно вывести первое изображение из ms2Gallery, то я поступаю так:
Добавляю в Виды коллекций столбец из существующего поля.

На изображении это description. Это не важно, главное чтобы он не был задействован.
В поле «Сниппет-рендер» указываем «maket_preview».
Содержимое данного сниппета ниже:
<?php
$img = $modx->runSnippet('ms2Gallery', [
    'tpl'=>'tpl.collection.image',
    'resources'=>$scriptProperties['row']['id'],
    'limit'=>'1',
]);
return $img;
чанк «tpl.collection.image» имеет следующее содержимое
{if $files?}
    {foreach $files as $file}
        <img src="{$file['medium']}" style="width: 100%;">
    {/foreach}
{/if}
где,
medium — название одной из заготовок в Источниках файлов

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