Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
08 января 2013, 20:13
0
Спасибо.

Комментарий мне пришлось изменить, так как нужно использовать тег code для оформления частей скриптов или запросов. Удобнее читать.
08 января 2013, 09:33
0
Обновляйся на 0.8.2, там доработаны ветки комментариев.

Теперь можно так:
if ($thread = $modx->getObject('TicketThread', array('resource' => 'id ресурса'))) {
	echo $thread->get('comments');
}
Ветка создаётся при первом вызове TicketComments на странице и пишет себе в поле resource, где её вызвали. Так же там есть поля comment_last и comment_time — это id и время последнего комментария ветки (т.е. на странице).
07 января 2013, 22:03
0
Я там тупо копипастнул, сейчас поправил.

Проверь еще разок код отсюда.
07 января 2013, 21:45
0
Алексей, у тебя в голове картинка не сложилась.

Раздел тикетов — это контейнер для тикетов, класс TicketsSection.
Тикет — это дочерний ресурс контейнер, класс Ticket. Его можно создать только из страницы с типом TicketsSection в админке или сниппетом TicketForm на сайте.

Эти оба типа — расширенные классы, которые обладают особыми возможностями. Обычный ресурс так не умеет. В числе прочего — вывод кол-ва комментов. Причем, TicketsSection выведет сумму комментов для всех дочерних тикетов, а Ticket — только своих.

Если не хочешь создавать тикеты — то доставай кол-во комментов своим сниппетом, код запроса я тебе дал.
07 января 2013, 21:31
0
А должно быть Ticket.

Как документ создавал, в смысле, ресурс? Если через 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.
07 января 2013, 21:26
0
Не context_key, а class_key?
07 января 2013, 21:08
0
При выводе массива документа — какой там class_key?
07 января 2013, 20:39
0
Хоть убей, у меня всё работает.

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 все версии и ставь последнюю, потом чисти кэш.
07 января 2013, 15:21
0
Нет такой возможности, я же не хостинг.
07 января 2013, 15:20
0
Конечно, нужно использовать Tickets.

По нагрузке должно быть всё ок, там не чистится кэш сайта при создании\обновлении страницы. Только кэш ресурса и его родителя.
07 января 2013, 06:10
0
Насколько я понимаю, это от версии вообще не зависит. Только настройки веб-сервера.

На тестовых сайтах всегда устанавливается последняя стабильная версия.
07 января 2013, 06:09
0
У меня nginx отдаёт статику напрямую, без php.

Соответственно, до ресурсов с типом CSS и JS запрос даже не доходит.
06 января 2013, 19:46
0
Тут всё настолько просто, что мне остаётся только твитнуть.

Надеюсь, кто-нибудь поможет.
06 января 2013, 13:38
0
В заметке всё написано так, чтобы тупо копипастить — и работало.

Не знаю, что тут может быть сложного.

В любом случае, эти знания очень пригодятся в будущем. Навыки администрирования GNU/Linux никому не мешают.
06 января 2013, 13:00
0
1. Нужно как то связать юзеров там и тут. Не знаю, как вы это будете делать — но надо. А дальше, нужно разобрать xml, например, simplexml.

Писать в базу можно через PDO или xPDO. Если второй случай, то надо схему и модель — можно освоить заодно и разработку компонента.

2. Тут просто — modMail.
06 января 2013, 03:45
0
Эта инструкция как раз для того, чтобы не использовать панели, типа ISP.

Она вам такого наконфигурирует, во век не разгребёте.
05 января 2013, 22:46
0
Если скорость устраивает — зачем кидать тапками?

Время генерации страницы можно глядеть плейсхолдером [^t^]. Если показывает больше секунды — решение плохое.
05 января 2013, 22:29
0
Должно выглядеть так(лишние пробелы убирайте где [ ], нето даже с тегом code они теряются их движок считать пытается:

Если бы можно было так просто запихнуть теги MODX — сайт бы уже давно поломали.

Проверяем:
[[$TVinsert?&name=humb_projects]]
[[$TVinsert?&name=image01]]

<a href="[[*[[+name]]]]" class="lightbox" rel="tooltip" style="display:inline-block;" title="Сделать покрупнее">
<img src="[[*[[+name]]:phpthumbof=`w=300&h=300&zc=1`]]" class="img-circle imgborder" style="-webkit-box-shadow: 0 2px 30px rgba(0,0,0,.50); -moz-box-shadow: 0 2px 30px rgba(0,0,0,.50); box-shadow: 0 2px 30px rgba(0,0,0,.50);"/></a>
05 января 2013, 16:46
0
Добавь косую перед ссылкой, чтобы был url от корня сайта:
<a href="/[[+login_url]]&provider=Yandex">Yandex</a>

И еще советую включить friendly_urls.