Отображение текущего ранга узла из голосов (api голосования) в поле зрения
Как и в названии. Я борюсь с программированием, но безуспешно. Механизм api голосования слишком сложен для меня. Как я могу отобразить текущий ранг узла (порядковый номер) по голосам?
Мое мнение сейчас:
Критерии сортировки: (Результаты голосования) Результаты голосования: Описание функции
Отношения Узел: Результаты голосования
При отображении всех результатов у него есть номер заказа благодаря модулю просмотра полей php.
Отображение позиции в ранге текущего отдельного узла это ад для меня. Пользовательский sql-запрос вообще не работает.
Я использую api для голосования и модуль оценки.
Пожалуйста, помогите.
РЕДАКТИРОВАТЬ
Так как я использую +1/-1 Я пытаюсь:
- Сумма +1 голосов
- Сумма -1 Голосов
- Вычтите сумму -1 голосов из суммы +1
Код:
$plus_rates = db_query("SELECT count(value) AS sum, content_id AS nid FROM votingapi_vote WHERE tag = 'vote' AND value_type = 'points' AND value = 1 GROUP BY content_id ORDER BY sum DESC, nid ASC");
$minus_rates = db_query("SELECT count(value) AS sum, content_id AS nid FROM votingapi_vote WHERE tag = 'vote' AND value_type = 'points' AND value = -1 GROUP BY content_id ORDER BY sum DESC, nid ASC");
$pluses = array();
$minuses = array();
while ( $row = db_fetch_object($plus_rates) ) {
$pluses[$row->nid] = $row->sum;
}
$plus_rates = NULL;
while ( $row = db_fetch_object( $minus_rates ) ) {
$minuses[$row->nid] = $row->sum;
}
$minus_rates = NULL;
$keys = array_keys($minuses);
foreach($keys as $k) {
if (array_key_exists($k, $pluses)) {
$pluses[$k] = $pluses[$k] - $minuses[$k];
}
}
arsort($pluses, SORT_NUMERIC);
firep($pluses, 'pluses');
$плюсы отсортированы по порядку, но порядок полностью отличается от моего отображения вида:
- Сортировка циртерии: (Результаты голосования) Голосование результаты: Функция desc)
- Узел взаимосвязи: Результаты голосования, функция агрегирования: общий балл
РЕДАКТИРОВАТЬ 2
Я пытаюсь напрямую запросить votingapi_cache, но все равно порядок совершенно иной, чем в представлениях:
ВЫБЕРИТЕ значение, content_id ИЗ votingapi_cache, ГДЕ value_type= "очки" И тег = "голосование" И ФУНКЦИЯ = "сумма" ПОРЯДОК ПО значению DESC ПРЕДЕЛ 0, 30
3 answers
Проверьте комментарии к этому вопросу: Проблема визуализации значения рейтинга в представлении
Похоже, что вы, вероятно, не установили агрегатную функцию для связи Узел: Результаты голосования. Вы определенно можете отобразить общее количество голосов в представлении, не написав никакого собственного кода.
votingapi_vote
это не таблица, к которой вы можете получить доступ непосредственно в представлениях. Если вы используете модуль данных , вы должны иметь возможность сделать его доступным для представлений и создать представление на нем напрямую. Это будет на более низком уровне, чем то, что вы делаете через узлы, но может быть проще для вас.
Хорошо, я сделал это,
Настройки первого просмотра (Просмотр для основного списка рейтингов):
Критерии сортировки:
(Результаты голосования) Результаты голосования: Значение desc, Узел: Nid asc
Код:
$result = db_query("SELECT c.content_id AS nid, c.value AS sum
FROM votingapi_cache AS c
INNER JOIN node AS n ON c.content_id = n.nid
WHERE c.value_type = 'points'
AND c.tag = 'vote'
AND c.function = 'sum'
AND n.type = 'profile'
AND n.status = 1
ORDER BY sum DESC , nid ASC
");
$is_rated = FALSE;
while ($row = db_fetch_object($result)) {
$counter++;
if ($profile->nid == $row->nid) {
$is_rated = TRUE;
break;
}
}
В реальности следует также обратиться к временной таблице и кэшу.