Недавно установил у себя на «италии по-русски» пару модулей, после обновления железа и друпала с 4.7.x на 5.x, среди них:
Voting API
User Karma
Extra Voting forms
Причем, User Karma используется только для подсчета общей кармы пользователей.
Не хитрыми манипуляциями сделал пару вещей:
1 – вывод кармы пользователя в темах и комментариях, а также в меню пользователя, все через функцию user_karma_user_karma().
2 – вывод кармы в профилях пользователей
3 – страницу мы, по подобию hbrahabr, которая еще будет дополнятся
4 – рейтинг «героев» и «злодеев» портала
5 – кармограф, благодаря классу Graph Drawing Class 2
Так что карма-функционал харбахабра легко реализуем при помощи друпала.
Комментарии
Extra Voting forms опиши в 2х словах модуль если несложно?
penexe, а он вроде стоит на этом сайте, дает возможность оценивать посты и комментарии пользователей.
тут стоит vote up down, я просто думал что это из другой оперы )
Что-то я не пойму как карма считается и рейтинг, какая зависимость.
Для чего Ранк там в этом модуле?
В грфике карма считается путем суммирования позитивных и негативных голосов в течении часа, получаем график, где зеленая волна – позитивные голоса, красная – негативные.
А карму считает модуль karma, путем суммирования голосов, полученных пользователем, можно выставить «жизнь» кармы, и голоса старше тот. времени не считать.
Круууууто! Не могли бы вы описать по-шагово как сделать такую страничку?
И еще вопросик, в Views возможно добавить фильтр по карме?
насколько корректно работает? разбирались в функционале? я поставил - КУЧАААА настроек, нет ли перевода к этому модулю хотя бы?
jason32, да вроде все работает, график я сам читаю, карма тоже вроде правильно считается, без сбоев.
Как сделали форму для голосования в таком виде? У меня только чекбоксы или выпадающий список.
И как обновили jquery?
Обновил модуль, все заработало.
Только у меня почему то прибавляет и убавляет по два очка?...
Причем когда оцениваешь комментарии, то очки меняются и в статье тоже?
проверь в настройках voting api или Extra Voting forms
Да в настройках все в порядке. В принципе, это глючит только на старых постах, на новых в принципе все работает...
Вопрос такой еще к тебе, ты разобрался по какому принципу она карму начисляет и рассчитывает?
И позволяет ли начислять карму за добавление комментариев?
Привет может вопрос и тупой но хочеться спросить ты график когда рисуешь. У тебя скрипт по крону ходит и кармузаписывает в базу данных. А потом ты от туда считываешь значения для графика?
Лучше на корн создание графика повесить, у меня он генерируется каждый раз при открытии страницы. Карма пользователей считается при голосовании, сам модуль хранит карму в кеше плюс есть все голоса которые пользователь получил за комментарии или ноды.
Это нормальное поведение модуля, в настройках есть срок жизни нодов и комментариев за которые можно голосовать.
Ничего сверхъестественного, складывает плюсики пользователя с минусиками и получает карму.
Да.
Заранее спасибо
Ainur, вот допустим возьмем функцию user_karma_user_karma() , она ,насколько я понял, вызывает votingapi_get_vote() , которая уже в свою очередь лезет в базу с одним запросом.
т.е. можно предположить, что если я захочу вывести на главную страницу информацию о карме пользователя, мне придется выполнять +1 запрос к БД. Но по идее, если включена система автоматического присвоения роли пользователя в зависимости от кармы, то получается выполняется два одинаковых запроса, что не очень разумно.
Можно-ли как-то от этого избавиться? Спрашиваю здесь потому, что вижу, вы довольно глубоко копались в этом модуле.
PS. разделение на героев и злодеев чем сделано если не секрет?
Присвоением ролей не пользуюсь, модуль имеет 2 способа вывода кармы, один – жестокий через user_karma_calculate_karma
Второй – более разумный, через функцию user_karma_user_karma, которая её через votingapi_get_vote из базы, в этом случае, если удалить какой-то комментарий с плюсом или минусом, то карма пользователя не будет пересчитана, пересчет кармы произойдет только после получения еще одного голоса.
Герои и злодеи считаются просто: выбираю всех пользователей с кармой в массив, получаю героев, потом сортирую через asort – получаю злодеев.
Немного прояснилось, спасибо )
Надеюсь не сильно напрягу, если поинтересуюсь ещё ко всему прочему в каком месте производятся рассчеты, связанные с героями и злодеями.. модуль, функция, страница views с кодом?
повторюсь с тупым вопрсом - как выбрать юзеров с кармой в массив? данных о карме юзеров в бд не обнаружил.
Присоеденяюсь к вопросу о рейтинге юзеров по карме.
Внимателmyj изучив модуль user_karma понял, что карма нигде в базе не хранится. Она рассчитывается на основе всех оценок (поинтов), которые лежат в таблице голсовалки.
Раскажите пожалуйста механизм постороения рейтинга.
Заранее благодарен.
>повторюсь с тупым вопрсом - как выбрать юзеров с кармой в массив? данных о карме юзеров в бд не обнаружил.
Данные о карме хранятся в таблицах voting_api.
Ainur,
скажи, пожалуйста, как ты вообще сделал страницу "we" с произвольным содержимым, в котором ты можешь вычислять массивы учатников?.. :-о
У меня в распоряжении есть Views и Panels, но, видимо, это все не то. Шаблон типа node-we.tpl.php тоже не парсится.
кстати да, резонный вопрос - карму не вытянешь прямо через Views? как это сделано?
>кстати да, резонный вопрос - карму не вытянешь прямо через Views? как это сделано?
Данные кармы легко вытягиваются через Views, т.к. voting_api, используемый для подсчета кармы, имеет соответствующие хуки.
Krotty@drupal.org
Данные кармы легко вытягиваются через Views, т.к. voting_api, используемый для подсчета кармы, имеет соответствующие хуки.
да неужели, легче легкого. Если написали Хук - можете выкладывать, никто в обиде не будет
Мои извинения.
Моя уверенность базировалась на заявлении автора модуля User Karma что он без проблем интегрируется c Views.
Но сейчас узнал что и автор был сильно удивлен когда узнал что это не так.
Одна из упомянутых проблем - views выводит списки нодов, а карма это оценка юзеров. (Так что возможно разве что выводить карму автора ноды)
Вторая - Voting API экспортирует во Views только "свой" тип данных - points.
Похоже нужно действительно писать свои хуки, но и при этом список пользовтелей с кармой можно будет сделать разве что при искользовании usernode.
пришлось писать поле у Views для кармы, как будет время - выложу сюда
ЛЮДИ! Прошу помощи. Так и не понял как выцепить данные из таблицы Voiting API так что бы можно было построить график изменения кармы за сутки.
Нашел очень красивый модуль для D5 Open Flash Chart - на его основе хотел забацать график - так вот запрос к базе правильный не составить, не понимаю где инфу брать. Был бы рад примеру запроса к базе.