Вывод превью в Tickets

Как вывести превью первого загруженного изображения к тикету

Вывод превью в Tickets Очень часто необходима функция автоматического вывода превью первой картинки в списке тикетов, да и в самом тикете.
Существуют решения, чтоб с помощью плагина при сохранении тикета копировать путь к картинке превью в отдельное поле, но я считаю этот способ немного не универсальным, пусть лучше будет отдельный небольшой сниппет, который сам будет доставать путь к превью первой загруженной картинке.

Для этого необходимо создать сниппет getThumb (скажу сразу, что этот сниппет я нашел уже давно на просторах интернета, так что он не мой, тут моё будет только лайфак по способам его применения):

$q = $modx->newQuery('TicketFile');
$q->limit(1);
$q->select('thumb');
$q->where(array(
	'parent' => $input
));
if ($q->prepare() && $q->stmt->execute()) {
	return $q->stmt->fetch(PDO::FETCH_COLUMN);
}

Теперь для вывода превью в списке тикетов нужно прописать в нашем row чанке для тега img значение атрибута:[[+id:getThumb]], и тогда у нас будет выведена своя картинка-превью для каждого тикета. Выглядит это так:
<img src="[[+id:getThumb]] " alt="[[+pagetitle]]" title="[[+pagetitle]]">

Если мы хотим сделать то же самое в самом тикете, то нужно прописать [[*id:getThumb]], различается только в получении id. Выглядит это так:
<img src="[[*id:getThumb]] " alt="[[*pagetitle]]" title="[[*pagetitle]]">


Теперь, если мы хотим, что бы у нас, если отсутствуют загруженные изображения, то выводилось изображение no-image.jpg, для этого мы пропишем вот такую конструкцию для row чанка:
[[+id:getThumb:is=`[[+id]]`:then=`<img src="/img/no-image.png"  alt="[[+pagetitle]]" title="[[+pagetitle]]">`:else=`<img src="[[+id:getThumb]] " alt="[[+pagetitle]]" title="[[+pagetitle]]" >`]]

Для самого тикета, конструкция будет выглядеть так:
[[*id:getThumb:is=`[[*id]]`:then=`<img src="/img/no-image.png"  alt="[[*pagetitle]]" title="[[*pagetitle]]">`:else=`<img src="[[*id:getThumb]] " alt="[[*pagetitle]]" title="[[*pagetitle]]" >`]]

Теперь у нас будут автоматически выводиться самые первые загруженные изображения при создании тикета, а так же картинка-заглушка, если не было загружено ниодного изображения тикету. Этот способ будет работать, если вы используете стандартный источник файлов для Tickets: Tickets Files

09 сентября 2016, 15:41    Роман Воропаев Готовые решения для MODX 0    1290 0

Похожие статьи:

Добавил возможность в mspPayMaster отправлять данные для ККТ в PayMaster
Добавление дополнительных полей в Minishop2 к оформлению заказа, без вмешательства в исходники и без потерь при обновлении.
Выводим список всех товаров и их цен через Console в MODX Minishop2
msDifferentPricesDelivery 09 сентября 2016, 14:23
Разные цены доставки или бесплатная доставка в зависимости от общей суммы заказа для minishop2 MODX
mspPayMaster 09 сентября 2016, 13:59
Метод приема платежей через PayMaster для miniShop2 MODX с виджетом способов оплаты.

Комментарии (1)

  1. Роман Воропаев 09 сентября 2016, 14:11 # 0
    С помощью этого сниппета, если подумать, то можно сделать и вывод нескольких картинок, например для динамического слайдера или галереи вывести превью, так же, можно и не только превью вывести, если в источнике файлов прописать кроме thumb другие значения с размерами, то можно и их выводить.
    Кстати, если у вас в источнике файлов у thumb 120x90 и эти картинки слишком маленьке, для превью, либо меняете размер там, либо создайте дополнительный параметр, например с названием preview и в сниппете вместо:
    $q->select('thumb');
    написать:
    $q->select('preview');

    Вы должны авторизоваться или зарегистрироваться, чтобы оставлять комментарии.

    Комментарии через вконтакте: