Рейтинг пользователя - общий, тикеты и комментарии

1 500
Выводим рейтинг пользователя как на modx.pro joxi.ru/eAOYVYPI476nQm

Т.е., выводим рейтинг общий, рейтинг за тикеты (Tickets) и рейтинг за комментарии.

1. Создаем сниппет getAuthorRating:

<?php
$userId = intval($userId);
if ($author = $modx->getObject('TicketAuthor',$userId)) $modx->setPlaceholders($author->toArray());
return;
2. Там где нужно вывести рейтинг:

[[!getAuthorRating? &userId=`[[+ID_пользователя]]`]]

<p>Рейтинг [[+rating]]</p>
<p>Рейтинг тикетов + [[+votes_tickets_up]] / - [[+votes_tickets_down]]</p>
<p>Рейтинг комментариев + [[+votes_comments_up]] / - [[+votes_comments_down]]</p>

И вывод списка пользователей как на modx.pro/users/:

[[!pdoPage?
    &element=`pdoUsers`
    &tpl=`users_list_tpl`
    &sortdir=`asc`
    &leftJoin=`{"Author":{"class":"TicketAuthor","on":"Author.id=modUser.id"}}`
    &select=`{"modUser":"*", "Author":"createdon,visitedon,tickets,comments,rating"}`
]]


Чанк users_list_tpl может содержать эти плейсхолдеры:

[[+createdon]] — дата регистрации
[[+visitedon]] — дата последней активности
[[+tickets]] — количество тикетов
[[+comments]] — количество комментариев
[[+rating]] — общий рейтинг


За решение спасибо modx.pro/users/panama/


Всех приветствую. Нужен вариант вывода общего рейтинга пользователя, рейтинга за тикеты и рейтинга за комментарии. Как на modx.pro joxi.ru/eAOYVYPI476nQm

Деньги отправлю за вариант с наименьшим кол-вом операций и запросов к БД. Ваши варианты предлагайте в комментариях.

Заранее благодарен.
Wassi Wassinen
18 февраля 2016, 14:49
modx.pro
20
3 778
+7

Комментарии: 8

Кирилл
19 февраля 2016, 09:37
+3
Создаем сниппет getTicketAuthor

<?php
$userId = intval($userId);
if ($author = $modx->getObject('TicketAuthor',$userId)) $modx->setPlaceholders($author->toArray());
return;

В чанке профиля, где необходимо вывести информацию о рейтинге, вставляем:

[[!getTicketAuthor? &userId=`[[+internalKey]]`]]

<p>Рейтинг [[+rating]]</p>
<p>Рейтинг тикетов + [[+votes_tickets_up]] / - [[+votes_tickets_down]]</p>
<p>Рейтинг комментариев + [[+votes_comments_up]] / - [[+votes_comments_down]]</p>
    Wassi Wassinen
    19 февраля 2016, 10:16
    0
    Спасибо за вариант. Куда перевести деньги?
      Это сообщение было удалено
        Wassi Wassinen
        19 февраля 2016, 10:25
        0
        Спасибо!
          Кирилл
          19 февраля 2016, 11:28
          0
          Просьба к Василию, удалить комментарий выше или убрать из него реквизиты. Спасибо :)
          P.S. мало все таки времени для редактирования комментария.
            Wassi Wassinen
            19 февраля 2016, 11:31
            +1
            Можно отправлять письмо из профиля, если нужно сообщить что-то конфиденциальное. Другое дело, что возможность активна не у всех.
      Кирилл
      19 февраля 2016, 10:35
      0
      Вот еще вариант для списка пользователей:

      [[!pdoPage?
          &element=`pdoUsers`
          &tpl=`users_list_tpl`
          &sortdir=`asc`
          &leftJoin=`{"Author":{"class":"TicketAuthor","on":"Author.id=modUser.id"}}`
          &select=`{"modUser":"*", "Author":"createdon,visitedon,tickets,comments,rating"}`
      ]]

      [[+createdon]] — дата регистрации
      [[+visitedon]] — дата последней активности
      [[+tickets]] — количество тикетов
      [[+comments]] — количество комментариев
      [[+rating]] — общий рейтинг
        Wassi Wassinen
        19 февраля 2016, 10:43
        0
        Отправил спасибо. :)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8