Cортировка тикетов по голосам like dislike

Всем привет.
Напишите пожалуйста как сделать сортировку тикетов по голосам like dislike.
Что то не получается.
Александр
22 марта 2019, 11:31
modx.pro
575
0

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

Павел Романов
22 марта 2019, 15:55
0
Если используете LikeDislike, то можете рейтинг писать в TV и по нему уже сортировать.
    Александр
    22 марта 2019, 16:05
    0
    Можно подробней?)
    Вызов тикетов надо через джойны получется делать?
      Павел Романов
      22 марта 2019, 16:16
      0
      Судя по документации ничего не нужно — getTickets работает на pdoTols и там должны быть доступны стандартные методы.
      [[getTickets?
      $includeTVs=`rating`
      &sortby=`{ "rating":"ASC" }`
      ......
      ]]

      Естественно, вместо «rating» имя Вашей TV.
        Александр
        22 марта 2019, 16:23
        0
        Что то не получается, вызов like:
        [[!LikeDislike?
                &tpl=`up_down`
                &likeId=`[[+id]]`
                &rating=`type=1,tv=like,output=votes_up`
            ]]
        Вызов тикет:
        [[!getTickets?
                &element=`getTickets`
                &tpl=`ticket`
                &includeTVs=`like`
                &sortby=`{ "like":"ASC" }`
            ]]
        Выводит так: prntscr.com/n1gmja
          Павел Романов
          22 марта 2019, 16:27
          0
          TV like уже было или только сейчас сделали?
          Значение туда пишется только в момент лайка и если создали только сейчас, то в них ничего нет.
          Соответственно, нужно либо прописать текущие значения рейтинга, либо «пролайкать» заново.
            Александр
            22 марта 2019, 16:32
            0
            С начало удалил все лайки, создал TV, подключил и два раза лайкнул.
            Не подскажите еще как посмотреть содержимое TV, что там точно есть лайки?
              Павел Романов
              22 марта 2019, 16:35
              0
              Если сделали его скрытым, то откройте, зайдите в редактор тикета и проверьте ).
                Александр
                22 марта 2019, 16:36
                0
                Вы про «Тип ввода»?
                Да, скрытый, а какой тогда лучше выбрать?
                  Павел Романов
                  22 марта 2019, 16:37
                  0
                  Число или текст.
                    Александр
                    22 марта 2019, 16:39
                    0
                    А в «Категория» like dislike выбрать получается?
                    Или tickets?
                      Павел Романов
                      22 марта 2019, 16:40
                      0
                      Это вообще не важно.
                      Александр
                      22 марта 2019, 16:44
                      0
                      Что то также
                      Павел Романов
                      22 марта 2019, 16:59
                      0
                      Проверил у себя, все работает.
                      Если дадите доступ в админку (почта в профиле), гляну.
                      Александр
                      22 марта 2019, 17:09
                      0
                      Можете пожалуйста просто вызов показать?
                      Павел Романов
                      22 марта 2019, 17:17
                      0
                      А что там показывать — он такой как я выше написал:


                      Вывод, если направление ASC:


                      Вывод, если DESC:


                      В запросе сортировка есть:
                      Александр
                      22 марта 2019, 17:24
                      0
                      А like dislike как вызывается?
                      И где?
                      Павел Романов
                      22 марта 2019, 17:30
                      0
                      Они никак не связаны. У Вас что в TV-шках? Проверили, значения там прописаны?

                      Я просто создал TV like и вбил туда 1 и 2, которые для теста вывожу рядом с заголовком:
                      Александр
                      22 марта 2019, 17:34
                      0
                      Где их смотреть?)
                      Что то не найду.
                      Тут должно быть по идее?
                      prntscr.com/n1hs8t
                      Павел Романов
                      22 марта 2019, 17:41
                      0
                      Кликните по «Предложения».
                      Справа откроется редактор, внизу будет таблица с тикетами и там Правый клик » Изменить:


                      Там вкладка Дополнительные поля (TV), на которой будет like:


                      И почитайте документацию — там много интересного )).
                      Александр
                      22 марта 2019, 17:58
                      0
                      У меня нету дополнительные поля prntscr.com/n1i67p
                      Александр
                      22 марта 2019, 18:04
                      0
                      Проблема оказывается то, что like dislike не записывает в tv, а так если в ручную написать, все работает.
                      Павел Романов
                      22 марта 2019, 18:05
                      0
                      Э… а Вы TV с шаблоном тикетов вообще связали?
                      Александр
                      22 марта 2019, 18:06
                      0
                      С этим разобрался)
                      like в TV не хочет записывать что то
                      Павел Романов
                      22 марта 2019, 18:27
                      0
                      Можете xLike поставить — он тоже умеет в TV писать (в конце пример плагина).
                      Александр
                      22 марта 2019, 18:37
                      0
                      Мне получается надо создать сниппет и этот код оттуда вызывать?
                      Павел Романов
                      22 марта 2019, 19:04
                      0
                      Если написано «плагин», значит надо создать именно плагин ).
                      Вот рабочий:
                      <?php
                      if($modx->event->name == 'xLikeOnVote'){
                          $tvid = 5; //тут вместо 5 - ID TV "like" 
                          $tvo = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvid, 'contentid' => $parent
                          ));
                          if($tvo){
                              $tvo->set('value', $rating);
                          }else{
                              $tvo = $modx->newObject('modTemplateVarResource', array(
                                  'tmplvarid' => $tvid,
                                  'contentid' => $parent,
                                  'value' => $rating
                              ));
                          }
                          $tvo->save();
                      }

                      Обратите внимание на комментарий на третьей строке — там нужно поставить ID Вашей TV.
                      Ну и на вкладке «Системные события» не забудьте отметить флажок xLikeOnVote
                      Александр
                      23 марта 2019, 09:11
                      0
                      Все работает, спасибо!
                      Павел Романов
                      22 марта 2019, 18:06
                      0
                      .
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
28