Как вывести количество комментариев в Tickets

24.02.2017
7294

В составе компонента 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 нам нужно передать идентификатор ресурса, у которого мы считаем комментарии. 

Как вывести количество комментариев в Tickets

0 Число голосов: 9
5
5
1
9

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

  1. Кирилл 09 июня 2017, 15:03 # 0
    Вопрос касается счетчика, но правда в портфолио, одного из вашего уроков(блог), как в данном случае вывести количество ресурсов по tv:
    <?php
    $tvid = 6;
    $result = array();
    $temp = array();
    $output = '';
    
    $q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
    $q->select('contentid,value');
    if ($q->prepare() && $q->stmt->execute()) {
        while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
            $val = explode(',',$row['value']);
            $temp = array_merge($temp,$val);
        }
    }
    
    $result = array_unique($temp);
    foreach ($result as $item){
        $output .= '<li><a href="#" class="'.$item.'">'.$item.'</a></li>';
    }
    echo $output;
    1. pavel 25 июля 2020, 18:30 # 0
      Здравствуйте.А как вывести самые комментируемые посты?

      Наши клиенты

      Многие компании уже доверяют нам. Будьте в их числе!

      Хотите реализовать проект?

      Контакты

      Напишите нам - мы расскажем вам много интересного!


      Пермь, ул. Крупской 34, офис 510