В составе компонента Tickets нет сниппета подсчета комментариев (ticketCommentCount), поэтому приходится выкручиваться и искать решения данной проблемы. А оно, оказывается, очень простое. Достаточно написать сниппет, в котором мы произведем запрос к базе данных и подсчитаем количество строк в результате работы запроса:
<?php $q = $modx->newQuery('modResource', $id); $q->leftJoin('TicketThread','TicketThread', "`TicketThread`.`name` = 'resource-{$id}'"); $q->leftJoin('TicketComment','TicketComment', "`TicketThread`.`id` = `TicketComment`.`thread`"); $q->where(array( 'TicketComment.published' => 1 )); $q->select('COUNT(`TicketComment`.`id`) as `comments`'); $count = 0; if ($q->prepare() && $q->stmt->execute()) { $count = (integer) $q->stmt->fetch(PDO::FETCH_COLUMN); } return $count;
Вызвать можно следующим образом:
[[!ticketCommentCount:default=`0`? &id=`[[+id]]` ]]
В параметр ID нам нужно передать идентификатор ресурса, у которого мы считаем комментарии.