Вывод количество комментариев Tickets
Сразу прошу извинения у Василия потому что я наверно достал тебя :)
Прикол получился в том, что Василий давал мне код:
У меня не так я проста на странице вывожу [[!TicketComments]]
Не как не получается сделать вывод кол-во комментариев вне сниплета на этой же странице где он подключен и при выводе документа через getResources
Единственный вариант который я нашёл как мне показалось самый нормальный это передавать данный в tv и сохранять их там
Прикол получился в том, что Василий давал мне код:
if ($res = $modx->getObject('Ticket',15)) {
echo $res->get('comments');
}
Он работает замечательно если у ресурса «Тип документа» -> «Раздел тикетов»У меня не так я проста на странице вывожу [[!TicketComments]]
Не как не получается сделать вывод кол-во комментариев вне сниплета на этой же странице где он подключен и при выводе документа через getResources
Единственный вариант который я нашёл как мне показалось самый нормальный это передавать данный в tv и сохранять их там
Комментарии: 18
Хоть убей, у меня всё работает.
1. Создаю новую страницу, тип «Документ», шаблон — 0.
2. Вызываю там сниппет Test,
3. В сниппет пишу
updated
После написания первого коммента проверил и $res->get('comments'); — всё окей, вывел уже единицу.
Если всё равно не работает — значит на твоём сайте уже чтото накручено, удаляй Tickets все версии и ставь последнюю, потом чисти кэш.
1. Создаю новую страницу, тип «Документ», шаблон — 0.
2. Вызываю там сниппет Test,
3. В сниппет пишу
if ($res = $modx->getObject('Ticket', 539)) {
echo '<pre>';print_r($res->toArray());die;
}
4. Выводятся все поля ресурса, в конце[hide_children_in_tree] => 0 [show_in_tree] => 0 [properties] => [comments] => 0 [views] => 2 [votes] => 0Должно работать именно так, везде.
updated
После написания первого коммента проверил и $res->get('comments'); — всё окей, вывел уже единицу.
Если всё равно не работает — значит на твоём сайте уже чтото накручено, удаляй Tickets все версии и ставь последнюю, потом чисти кэш.
Для уточнения '539' это id Ticket, у меня вывод массив документа которые я указал заместо 539
Удалил всё подчистую проверил все файлы на хостинге удалил всё, MySQL базу тоже проверил тоже удалил всё, короче очистил по полной, установил Tickets 0.8.0 всё тоже самое
При выводе массива документа — какой там class_key?
web
Не context_key, а class_key?
modDocument
А должно быть Ticket.
Как документ создавал, в смысле, ресурс? Если через Api — то нужно было указать верный class_key. При создании из админки или при помощи TicketForm — всё автоматом указывается.
Или ты просто вызываешь TicketComments на обычном ресурсе? Тогда конечно, таких полей не будет — ибо это фишка именно класса Ticket.
В этом случае можно получить кол-во комментов запросом в БД.
$id — идентификатор ресурса, на котором вызывался TicketComments.
Как документ создавал, в смысле, ресурс? Если через Api — то нужно было указать верный class_key. При создании из админки или при помощи TicketForm — всё автоматом указывается.
Или ты просто вызываешь TicketComments на обычном ресурсе? Тогда конечно, таких полей не будет — ибо это фишка именно класса Ticket.
В этом случае можно получить кол-во комментов запросом в БД.
$q = $modx->newQuery('modResource', $id);
$q->leftJoin('TicketThread','TicketThread', "`TicketThread`.`name` = 'resource-{$id}'");
$q->leftJoin('TicketComment','TicketComment', "`TicketThread`.`id` = `TicketComment`.`thread`");
$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;
$id — идентификатор ресурса, на котором вызывался TicketComments.
В этом вся и суть что я не хочу переводить «Тип ресурса» на «Раздел тикетов»
Алексей, у тебя в голове картинка не сложилась.
Раздел тикетов — это контейнер для тикетов, класс TicketsSection.
Тикет — это дочерний ресурс контейнер, класс Ticket. Его можно создать только из страницы с типом TicketsSection в админке или сниппетом TicketForm на сайте.
Эти оба типа — расширенные классы, которые обладают особыми возможностями. Обычный ресурс так не умеет. В числе прочего — вывод кол-ва комментов. Причем, TicketsSection выведет сумму комментов для всех дочерних тикетов, а Ticket — только своих.
Если не хочешь создавать тикеты — то доставай кол-во комментов своим сниппетом, код запроса я тебе дал.
Раздел тикетов — это контейнер для тикетов, класс TicketsSection.
Тикет — это дочерний ресурс контейнер, класс Ticket. Его можно создать только из страницы с типом TicketsSection в админке или сниппетом TicketForm на сайте.
Эти оба типа — расширенные классы, которые обладают особыми возможностями. Обычный ресурс так не умеет. В числе прочего — вывод кол-ва комментов. Причем, TicketsSection выведет сумму комментов для всех дочерних тикетов, а Ticket — только своих.
Если не хочешь создавать тикеты — то доставай кол-во комментов своим сниппетом, код запроса я тебе дал.
У меня в голове всё сложилось метод который ты дал я как рас сегодня утром начал изучать, но возникает ошибка которая даже не отображается в журнале ошибок, сейчас буду дальше химичить
Немножко не так… Он так будет неопубликованные комментарии тоже считать.
Лучше так:
Лучше так:
<?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;
Спасибо всё заработало!!! Блин реально я уже говорил и повторюсь запущу свой проект я тебе заплачу сколько будет мне не жалко
Обновляйся на 0.8.2, там доработаны ветки комментариев.
Теперь можно так:
Теперь можно так:
if ($thread = $modx->getObject('TicketThread', array('resource' => 'id ресурса'))) {
echo $thread->get('comments');
}
Ветка создаётся при первом вызове TicketComments на странице и пишет себе в поле resource, где её вызвали. Так же там есть поля comment_last и comment_time — это id и время последнего комментария ветки (т.е. на странице).
Привет. На последней версии не срабатывает код — пишет 0.
Тоже пользую ticketcomments отдельно.
Подскажи, может что-то за это время поменялось?
Тоже пользую ticketcomments отдельно.
Подскажи, может что-то за это время поменялось?
Пардон, работает, вызывать так:
[[!TicketCommentsCount? &id=`[[+id]]`]]
Как вывести тикеты тока определённого пользователя??? а не всех сразу? нужно что то типо этого:
[[!getComments? &id=`[[*id]]`]]
[[!getComments? &id=`[[*id]]`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.