Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Плагин Pagerate

Вопросы по плагинам MaxSite CMS. Только вопросы и решения
dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 12:57

Сделал плагин, позволяющий голосовать за посты, но не по 10-и бальной шкале, как плагин Rater, а накопительно.
Изображение
Есть кнопки +/ - для увеличения / уменьшения рейтинга

Так как я до момента написания плагина не знал ни ajax, ни jquery, то просьба сильно не пинать за корявый код :)

Плагин имеет некоторые опции:
    Незалогиненые пользователи не могут голосовать (опция)
    Возможность уведомлять по почте при изменении рейтинга (опция)
    Опция - запрет на уменьшение рейтинга
    возможность задать картикнки для кнопок в опциях
    возможность задавать текст подсказок для кнопок
    отображение всплывающей подсказки при изменении рейтинга

Скриншоты:
Изображение Изображение Изображение

Скачать плагин Pagerate

Подробнее о плагине на моем блоге

Технические подробности:
плагин использует таблицу mso_meta для хранения данных о рейинге записей (параметр pagerate_value)

PS В планах сделать модификацию плагина, которая будет записывать в базу отдельно отрицательный рейтинг, отдельно - положительный. При выводе - суммировать рузультат.
Скорее всего для этого оптимальным будет добавить 2 столбца в таблицу mso_page.

Хотелось бы услышать мнение на счет добавления в mso_page новых столбцов, в т.ч. и мнение Максима

PSS Работу этого плагина можно увидеть на моем блоге
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Re: Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 13:22

Да, кстати, забыл напомнить...
сделайте резервную копию таблицы mso_meta или всех базы
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Re: Плагин Pagerate

Сообщение Wave » 30 авг 2010, 13:30

1. Осталось допилить, чтобы на главную выводились только страницы не ниже какого-то рейтинга. Всё больше плюшек к макссайту появляется, которые можно использовать в соцсетях на этом движке.

2. В развитие первой мысли — можно организовать карму.

3. Проверка на залогированность ну очень примитивная. Если я не залогинен, но знаю о плагине, то файрбагом могу менять всё что мне надо. Поэтому надо бы добавить а) проверку на залогиненность в pagerate-ajax.php (если опция и не залогинен, то дай), б) в pagerate_autoload() если опция и не залогинен, то дай (это для экономии ресурсов), в) если всё же нужно показывать рейтинг анонимам, то хотя бы при этом можно не грузить js.

4. Если голосовать могут только юзеры, то (пока ещё не очень вчитывался в исходник) юзер может голосовать и чистить куки, голосовать и чистить куки. Впрочем, проверил экспериментально. Всё правильно, можно накрутить рейтинг как угодно.

5. Лучше бы брать картинки-стрелки из папки шаблона, а если нет, то дефолтные из плагина. Как это сделано в плуге main_menu.

6. «Кроме статичных страниц» — лучше бы сделать так: везде, нигде, на страницах типа (select с выбором)… Вот у меня на конкурсных сайтах четыре типа страниц, а этот плагин я бы прицепил только к одному типу (не блоговому).

7. И наконец, не понял, зачем разделение на плюсы и минусы? Имхо, имеет смысл разве что если запоминать и кто голосовал. Т.е. полноценно в базе, а не по кукам.

dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Re: Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 13:56

Осталось допилить, чтобы на главную выводились только страницы не ниже какого-то рейтинга. Всё больше плюшек к макссайту появляется, которые можно использовать в соцсетях на этом движке.

неплохая идея, попробую добавит плюшку.

п2. - карма для юзеров?
п3. - пока оставлю "на потом" :)

п.4 честно говоря я до сих пор путаю поянтия юзер и ком-юзер :oops:
ну а про куки - это из rater я взял, можно что то более сложное придумать, но не знаю, хватит ли ума :)

п.5 погляжу на main_menu, вариант хороший, лишний раз лазить в папку плагина не хочется

п.6 такое есть в планах, будем делать

п.7 разделение - чтобы знать, сколько "+" и сколько "-", более полная инфа, вроде на хабре так :) ну а рейтинг выодится суммированным, всплывающцую подсказку можно сделать с разделением.
аналог кармы в SMF

А если запоминать в базе, на сколько она может разрастись? Я затрудняюсь предположить. Хотя, если сайт малопосещаемый, то такое можно использовать.

а на самом деле, мне не очень нравитья хранить данные в мета для этого плагина :)
хотя ....
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Re: Плагин Pagerate

Сообщение Wave » 30 авг 2010, 14:15

dimonich110 писал(а):п.4 честно говоря я до сих пор путаю поянтия юзер и ком-юзер :oops:
ну а про куки - это из rater я взял, можно что то более сложное придумать, но не знаю, хватит ли ума :)

Речь не о путанице юзер-комьюзер, хотя я не против видеть в настройках "кто может голосовать - никто, все, юзеры и комьюзеры, только юзеры, только комьюзеры". Речь о том, что защита от накрутки в плагине минимальная. А для серьёзной защиты от накруток нужно вести базу, кто и как голосовал. По другому, увы, никак. Сюда же пункт семь. Т.е. либо запоминать всё, либо только итоговый результат. Ну да ладно, если есть желание промежуточно делать, бог в помощь. Кстати, на хабре если человек поставил несколько минусов подряд, он лишается права голосовать на какое-то время с формулировкой "слишком много минусуешь". И так далее. На хабре очень сложная карма-система.

dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Re: Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 14:26

ну про хабр - это пример чисто визуальный....
я так не смогу заморочиться :) хотя... но нам это особо и не нужно
на данный момент меня устраивает существующий функционал :) но кое-что добавлю из предложенного

кстати, wave, ты как один из тех, кто разбирается в системе и давно ее использует, принимает активность,
как смотришь на то, чтобы данные были в page, а не в meta?

если делать хранение результатов голосования в новой таблице, то какие параметры пользователей надо учитывать от накрутки? Тогда и рейтинг не надо хранить в page и meta. Но при этом будет тогда более сложная выборка результатов из базы.
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Re: Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 17:03

бажик один есть - в категориях не отображается рейтинг и, навернное, в тегах
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Re: Плагин Pagerate

Сообщение Wave » 30 авг 2010, 19:58

page_rating вроде бы нигде не используется, но если его занять, то для вывода надо будет или mso_get_pages переделывать, или после mso_get_pages ещё раз лезть в таблицу page для подхвата рейтинга. Впрочем, думаю, это не слишком накладно.

Хотя, стоп, чего это я. В mso_get_pages выбирается и page_rating, и page_rating_count. И вообще, rater именно эти поля использует. Зачем было вообще городить огород с метой? Только из-за потери совместимости со стандартным rater?

Тут вообще можно было сделать только вариацию rater, отличающуюся разве что в таких местах:
$curvalue = round($page['page_rating'] / $page['page_rating_count'] );

А вот дальше уже, имхо, делать таблицу многие-ко-многим, где будут связи, кто за что и как голосовал. Юзер1 за стр1 +, юзер1 за стр3 +, юзер2 за стр5 -, комьюзер1 за стр2 +.

В принципе, это же всё можно запихнуть и в таблицу меты.
записей в ней добавится не больше, чем (users + comusers) * pages штук. Вроде терпимо. Тем более, что по словам Макса, выборки из меты — одни из самых лёгких в запросах системы.

Ну, это всё так, на пальцах. Можно придумать и другие модели. Например, к каждому пользователю где-то хранить сериализованный массив, как он голосовал. Вроде получится экономней, учитывая, что основная задача тут не дать проголосовать повторно.

dimonich110
Модератор
Сообщений: 299
Зарегистрирован: 12 окт 2009, 10:48

Re: Плагин Pagerate

Сообщение dimonich110 » 30 авг 2010, 21:27

городил огород с метой из-за того, что "мой" рейтинг может быть отрицательным.
а page_rating всегда увеличивается? так же увеличиваются и page_rating_count, а результат - отношение 2х величин. Все это совсем другое и мне не подходит.
Если бы я использовал page_rating для своих нужд, то сломался бы Rater

Скорее всего буду в будущем делать таблицу или буду использовать meta для истории.
[url=http://d51x.ru]Шаблоны[/url] для Maxsite.

Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Re: Плагин Pagerate

Сообщение Wave » 30 авг 2010, 21:40

dimonich110 писал(а):городил огород с метой из-за того, что "мой" рейтинг может быть отрицательным.
а page_rating всегда увеличивается?
Там вроде ничто не указывает на то, что нельзя туда отрицательную величину запихнуть. Только и того, что нужно указать: плагин не совместим со стандартным rater, поэтому выберите изначально и не меняйте тра-ля-ля.
Но если будешь делать по взрослому, с записью того, кто и как проголосовал, то да, стандартные поля можно и не трогать.


Вернуться в «Плагины»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей