Как отсортировать представление, используя средние оценки Drupal Fivestar? - PullRequest
2 голосов
/ 13 сентября 2009

Я использую Drupal 6.13, Views 6.x-2.6, Voting API 6.x-2.3, Fivestar 6.x-1.18.

У меня есть тип контента с полем типа Fivestar Rating. У меня есть представление, где я собираюсь перечислить все узлы с этим типом контента, отсортированные в порядке убывания по общему среднему рейтингу. Представление работает в том смысле, что оно отображает правильную информацию (голос пользователя с возможностью голосовать и общий средний голос). Но я не могу на всю жизнь заставить его правильно разобраться.

По моему мнению, у меня есть связь с "Узлом: Результаты голосования", Тип значения = "Процент", Тег голосования = "Нормальный", Функция агрегирования: "Средний".

Я пробовал несколько вещей, но я ожидаю, что сработает добавление «Критерии сортировки» с «(Результаты голосования) Результаты голосования: Значение» и убыванием. Когда я делаю это, если я смотрю на запрос sql и вижу «ORDER BY node_title ASC», что явно не правильно. Я ожидаю увидеть «ORDER BY голосоватьapi_cache_node_percent_vote_average_value DESC». Любые указатели будут наиболее цениться.

Запрос здесь:

SELECT node.nid AS nid,
   node.title AS node_title,
   profile_values_profile_full_name.value AS profile_values_profile_full_name_value,
   users.uid AS users_uid,
   votingapi_vote_node_percent_vote_curuser.value AS votingapi_vote_node_percent_vote_curuser_value,
   votingapi_cache_node_percent_vote_average.value AS votingapi_cache_node_percent_vote_average_value
 FROM node node 
 LEFT JOIN votingapi_cache votingapi_cache_node_percent_vote_average ON node.nid = votingapi_cache_node_percent_vote_average.content_id AND (votingapi_cache_node_percent_vote_average.content_type = 'node' AND votingapi_cache_node_percent_vote_average.value_type = 'percent' AND votingapi_cache_node_percent_vote_average.tag = 'vote' AND votingapi_cache_node_percent_vote_average.function = 'average')
 LEFT JOIN votingapi_vote votingapi_vote_node_percent_vote_curuser ON node.nid = votingapi_vote_node_percent_vote_curuser.content_id AND (votingapi_vote_node_percent_vote_curuser.content_type = 'node' AND votingapi_vote_node_percent_vote_curuser.value_type = 'percent' AND votingapi_vote_node_percent_vote_curuser.tag = 'vote' AND votingapi_vote_node_percent_vote_curuser.uid = '***CURRENT_USER***')
 LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid
 LEFT JOIN users users_node_revisions ON node_revisions.uid = users_node_revisions.uid
 INNER JOIN users users ON node.uid = users.uid
 LEFT JOIN profile_values profile_values_profile_full_name ON users.uid = profile_values_profile_full_name.uid AND profile_values_profile_full_name.fid = '5'
 WHERE (node.type in ('passion_talk')) AND (node.status <> 0)
   ORDER BY node_title ASC

Ответы [ 2 ]

2 голосов
/ 13 сентября 2009

Это довольно странно; представление top_content, включенное в VotingAPI, включает в себя отображение Fivestar, которое точно устанавливает отношения, которые вы описываете. Это работает или показывает проблему, с которой вы столкнулись?

1 голос
/ 13 сентября 2009

Ах, я понял это. Я использовал стиль таблицы, и в заголовке узла была установлена ​​сортировка по умолчанию, в результате чего все критерии сортировки игнорировались.

...