Рейтинг для ресурсов и вывод их по рейтингу
        UPD: Решение в комментах ниже.
Решил использовать дополнение CSS Star Rating для создания рейтинга ресурсов. (Может быть есть что то поновее?)
В общем рейтинг ресурсам присваивается, всё ок. А вот как теперь при помощи pdoResources вывести ресурсы с сортировкой по этому рейтингу не понятно.
Может быть кто то сталкивался?
    
    
                                                                                
            Решил использовать дополнение CSS Star Rating для создания рейтинга ресурсов. (Может быть есть что то поновее?)
В общем рейтинг ресурсам присваивается, всё ок. А вот как теперь при помощи pdoResources вывести ресурсы с сортировкой по этому рейтингу не понятно.
Может быть кто то сталкивался?
Комментарии: 5
                Ставил css rating stars — не понравилось (появились дубли страниц). Конечно сейчас может что и изменилось, но у себя давно снес. 
По мне, так LikeDislike лучше будет, только стандартных звездочек не хватает, зато есть возможность записывать результат голосования в tv, а потом сортировать по нему.
Есть VoteForms, но только для авторизованных, для анонимов никак.
                    По мне, так LikeDislike лучше будет, только стандартных звездочек не хватает, зато есть возможность записывать результат голосования в tv, а потом сортировать по нему.
Есть VoteForms, но только для авторизованных, для анонимов никак.
                https://modstore.pro/packages/utilities/voteforms
                    [[pdoResources?
    &class=`modResource`
    &parents=`0`
    &tpl=`@INLINE <li>[[+pagetitle]] - <span class="badge">[[+rating]]</span> </li>`
    &leftJoin=`{
        "VoteFormThread": {
        "class": "VoteFormThread",
        "on": "modResource.id = VoteFormThread.resource AND VoteFormThread.form = 1"
        }
    }`
    &select=`{
    "modResource": "*",
    "VoteFormThread": "rating"
    }`
    &sortby=`VoteFormThread.rating`
    &sortdir=`DESC`
]]            
                Немного не то. Нашёл вот решение, но строка 
даёт ошибку
Сами доработки:
                    $this->modx->resource->setTVValue('strtv', round($voteStats['average'], 1)); даёт ошибку
mod_fcgid: stderr: PHP Fatal error:  Call to a member function setTVValue() on nullСами доработки:
1. Файл /core/components/star_rating/model/star_rating/starrating.class.php
1.1. После строки
public $output = '';
добавить
public $modx = null;
1.2. Заменить
public function initialize() {
на
public function initialize(modX &$modx) {
1.3. В самый конец этого же метода (initialize) добавить:
$this->modx = $modx;
1.4. в метод renderVote() после строки
$currentText = round($voteStats['average'] . '/' . $this->config['maxStars'], 2);
добавить строку:
$this->modx->resource->setTVValue('имя-вашего-tv', $voteStats['average']);
2. Изменить сниппет starRating:
заменить строку
$starRating->initialize();
на
$starRating->initialize($modx);            
                Отвечу сам себе, вдруг пригодится кому нибудь. В общем в пункте 1.4
Вместо
Всё работает, значение в тв записывает.
Апдейтну сам пост и можно наверное в готовые решения перенести, а ещё лучше собрал бы кто нибудь в готовый пакет.
                    Вместо
$this->modx->resource->setTVValue('имя-вашего-tv', $voteStats['average']);надо писать$this->xpdo->resource->setTVValue('strtv', $voteStats['average']);Видимо с 2013 года что то в modx поменялось :)Всё работает, значение в тв записывает.
Апдейтну сам пост и можно наверное в готовые решения перенести, а ещё лучше собрал бы кто нибудь в готовый пакет.
[[!pdoResources?
                &leftJoin=`{ "rating": { "class": "starRating", "on": "rating.star_id = modResource.id" } }`
                &select=`{ "modResource":"*", "rating":"rating.vote_count as vote_count,rating.vote_total as vote_rating" }`
                &sortby=`{"(vote_rating/vote_count)":"DESC"}`
                &sortdir=`DESC`
            ]]            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.