Как в TicketLatest (посл тикет) вывести [[+stars]]

Как в TicketLatest (последние тикеты) вывести плэйсхолдер [[+stars]], как в сниппете TicketMeta?

Задача просто в шаблон вывода последних тикетов добавить кол-во просмотров и кол-во звезд (подписчиков).

Спасибо!
Серьёзный
31 января 2016, 15:23
modx.pro
5
2 475
0

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

Серьёзный
31 января 2016, 18:41
0
Сам разобрался, это работает [[+section.properties.ratings.star_ticket]]
Может быть есть еще более изящные варианты?
    Серьёзный
    31 января 2016, 18:50
    0
    Нет. Не то я вывел себе =)

    Видимо не подкючена таблица tickets_stars. Как это сделать?
      Серьёзный
      01 февраля 2016, 13:26
      0
      Никто не знает?
        Илья Уткин
        01 февраля 2016, 14:23
        +1
        Надо присоединить таблицу звёздочек и посчитать их количество у каждого тикета. По-моему, как-то так, но надо смотреть showLog и править, если что не так…

        [[!TicketLatest?
          ...
          &leftJoin=`{
            "Star":{ "class":"TicketStar", "on":"Star.id = Ticket.id AND Star.class = 'Ticket'" }
          }`
          &select=`{
            "Star": "COUNT(*) as stars"
          }`
        ]]
          Серьёзный
          01 февраля 2016, 16:05
          0
          Илья, спасибо большое)

          Чуток подправил, вышло так, работает:
          [[!TicketLatest?
              &limit=`5`
              &fastMode=`1`
              &action=`tickets`
              &tpl=`TPL.cp.Tickets.ticket.latest`
              &leftJoin=`{
                  "Star":{ "class":"TicketStar", "on":"Star.id = Ticket.id AND Star.class = 'Ticket'" }
              }`
              &select=`{
                  "Star": "owner as stars"
              }`
          ]]
            Илья Уткин
            01 февраля 2016, 16:09
            0
            Не, так неправильно — это он выведет id одного из пользователей, добавивших тикет в избранное. Нужен именно COUNT. Попробуй так
            &select=`{
                    "Star": "COUNT(id) as stars"
                }`
              Илья Уткин
              01 февраля 2016, 16:12
              0
              В самом сниппете getTickets вот так прописано
              &select=`{
                      "Star": "COUNT(Star.id) as stars"
                  }`
                Серьёзный
                01 февраля 2016, 16:20
                0
                Вот блин. Смотрю в таблицу yadi.sk/i/2cNGDRjjo7Joc
                Вижу нужные значения, у двух тикетов по одной звезде, у остальных по нулю, еще думаю, почему это поле странно называется так владельцем… =))) Совпадение.

                Еще раз спасибо!
                  Илья Уткин
                  01 февраля 2016, 16:24
                  0
                  Хах… я тоже тупанул)))

                  Пользователь — это createdby, вроде, а owner — это id тикета. Значит JOIN надо так писать:
                  [[!TicketLatest?
                      &limit=`5`
                      &fastMode=`1`
                      &action=`tickets`
                      &tpl=`TPL.cp.Tickets.ticket.latest`
                      &leftJoin=`{
                          "Star":{ "class":"TicketStar", "on":"Star.owner = Ticket.id AND Star.class = 'Ticket'" }
                      }`
                      &select=`{
                          "Star": "COUNT(Star.id) as stars"
                      }`
                  ]]
                    Серьёзный
                    01 февраля 2016, 16:27
                    0
                    Так. Стоп)
                    Сейчас по нулям.
                    owner всё же не id тикета =)
                    Что же это за owner?
                    Сейчас разберусь…

                    В общем столбец OWNER в таблице звёзд — это точно не ID тикета.
                    Это что-то с автором связано.
                    createdBy — это ID modUser.
                    А вот столбец ID (первый) — это и есть ID тикета

                    Так что окончательный вариант, рабочий:
                    [[!TicketLatest?
                        &limit=`5`
                        &fastMode=`1`
                        &action=`tickets`
                        &tpl=`TPL.cp.Tickets.ticket.latest`
                        &leftJoin=`{
                            "Star":{
                                "class":"TicketStar",
                                "on":"Star.id = Ticket.id AND Star.class = 'Ticket'"
                            }
                        }`
                        &select=`{
                            "Star": "COUNT(Star.id) as stars"
                        }`
                    ]]
                      Илья Уткин
                      01 февраля 2016, 16:38
                      0
                      Дам-с =)))
                        Серьёзный
                        01 февраля 2016, 16:39
                        0
                        Последний общий вопрос.
                        Где вообще смотреть классы? =)
                        Вот откуда ты узнал, что таблице звёзд — это класс TicketStar?
                        Где-то в исходниках?
                          Илья Уткин
                          01 февраля 2016, 16:46
                          0
                          Вообще этот класс я в тикеты добавлял bezumkin.ru/sections/components/2951/

                          А так, да, классы в исходниках надо смотреть. Я на гитхабе обычно смотрю — там удобно по папкам лазить
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          14