09-09-2016 10:41
3619

Вывод превью в 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); }

Вывести список всех товаров и их цен в minishop2Вам будет интересно:Вывести список всех товаров и их цен в minishop2

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

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

Для самого тикета, конструкция будет выглядеть так: [[*id:getThumb:is=`[[*id]]`:then=`[[*pagetitle]]`:else=`[[*pagetitle]]`]]

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