Здравствуйте.
Не подскажите, как организовать рейтинг для статей в MODX?
Есть расширения в разных репозиториях, но одни, как правило, устаревшие и глючные, а другие работают только при авторизации пользователя.
Может можно как-то просто организовать рейтинг, без авторизации? С подсчётом рейтинга, анти-спамом и без дополнительных ссылок.
Есть дополнение новое на хосте, xLike. Но там процентная оценка. А для снипетов поисковика нужно вроде бы 5-ти бальная система.
Спасибо.
Есть огромные подозрения что сниппет canonical, ибо уже были проблемы с путями в другом месте.
Вот логи:
[2017-10-19 15:15:48] (ERROR @ /home/evgek987/public_html/core/model/modx/modx.class.php: 991) `id` is not a valid integer and may not be passed to makeUrl()
[2017-10-19 15:15:48] (ERROR in resource 49 @ /home/evgek987/public_html/core/model/modx/modparser.class.php: 1353) Bad link tag `[[~id]]` encountered
[2017-10-19 15:15:48] (ERROR in resource 49 @ /home/evgek987/public_html/core/model/modx/modparser.class.php: 1353) Bad link tag `[[~20]]` encountered
[2017-10-19 15:15:54] (ERROR @ /home/evgek987/public_html/core/model/modx/modx.class.php: 991) `id` is not a valid integer and may not be passed to makeUrl()
[2017-10-19 15:15:54] (ERROR in resource 50 @ /home/evgek987/public_html/core/model/modx/modparser.class.php: 1353) Bad link tag `[[~id]]` encountered
[2017-10-19 15:15:54] (ERROR in resource 50 @ /home/evgek987/public_html/core/model/modx/modparser.class.php: 1353) Bad link tag `[[~20]]` encountered
[2017-10-19 15:15:58] (ERROR in resource 8 @ /home/evgek987/public_html/core/model/modx/modparser.class.php: 1353) Bad link tag `[[~20]]` encountered
По ошибкам гуглил — подобніе проблемі встречаются у людей, но ни на одном форуме решения не нашел. Дело не в Вашем компоненте, скорее всего, а в багаг самого MODX. Куда не зайду — у людей вечно что-то не работает, и никто не знает в чем проблема… Я уже год с етим MODX парюсь, и так и не смог сделать полноценный сайт с нужным функционалом… Уже просто руки опускаются
Кстати, Александр, скажите почему у ваших постов нету рейтинга?
Всё-таки решил реализовать это в виде компонента. Загрузить его можно пока отсюда. Исходные коды на GitHub. Проект SimpleRating.
Принцип работы: добавить в шаблон или чанк вызов сниппета getSimpleRating:
Защита от спама осуществляется на основе IP адресов.
Немного попозже опубликую статью по этому компоненту.
Установил, почистил кеш.
Разместил его в шаблоне , появился, работает, все оч здорово.
Пробую проголосовать с 5-ти разных точек, у всех разные IP — не дает возможности голосовать. Вот я один раз как проголосовал, он отметил звездочки и проставил рейтиг и 1 голос. Все, с других мест\заходов он уже голосовать вообще не дает.
И еще один момент. Александр, скажите пжл, правильно ли я понимаю. Я хочу отключить подстановку js и css файлов. Для этого я просто в сниппете getSimpleRating просто удаляю 2-ве начальные строчки и прописываю руками их в шаблоне.
Проверить работоспособность дополнения можно очень просто следующим способом:
1. Открыть базу данных, например, с помощью phpmyadmin.
2. Найти в базе таблицу префикс_simple_rating, открыть её содержимое.
3. Найти в таблице строку соответствующую определенному ресурсу (поле resource).
4. Нажать 2 раза на ячейку rating_ips и изменить ip адрес, например, какую-нибудь одну цифру.
5. После этого проголосовать ещё раз.
У меня несколько точек выхода по Москве и несколько из Европы + мобильный инет тот же. И везде у меня не активно голосование там где уже я проголосовал.
Согласно вашему методу.
Я нашел ресурс, изменил в таблице rating_ips ip адрес и у меня снова появилось возможность голосовать.
Зашел через rdp на сервачек в Риге, обновил открытую страницу с ресурсом и у меня появилась возможность голосовать (до этого была не активна). Зашел через локальную машину в Москве, обновил страницу (изначально на ней голосовал) и снова появилась возможность проголосовать.
Далее я проголосовал из Риги, обновил страницу в Москве и снова не могу голосовать. Хотя rating_ips был изменен и при изменении была возможность голосовать и там и там.
Отключил все скрипты, перепробовал jquery — не помогло(
Сборка доступна по адресу: yadi.sk/d/lpMLL6zH3LpLib
Попробуйте сейчас, но предварительно удалите все старые записи из таблицы префикс_simple_rating.
Сбросил куки, очистил кеш.
Все тоже самое, дает проголосовать только один раз(
Поместите его вызов в шаблон:
После этого на странице будет виден ваш ip-адрес, и вы сможете понять, почему так… Куки и кэш тут роли не играют.
У меня развернут виртуальный сервер (42.2), который находится на windows2012r2 (42.1)
Может есть какое то решение для сего? xLike работал корректно вроде, в плане что не один раз голосовалось.
Можно, конечно использовать cookie. Но, если они у пользователя отключены, то он сможет проголосовать много раз. Или как вариант он их может чистить перед каждым голосованием. Данный способ тоже некоторые веб-программисты используют. Но он менее надежный, чем по IP. Хотя и по IP можно тоже обойти.
Вам надо попробовать обратиться к сайту из устройства, которое не находиться в данной локальной сети и посмотреть результат. Если он будет такой же, то необходимо настроить передачу на сервер заголовка, содержащего реальный IP адрес клиента. После этого у вас всё будет работать.
В дополнении xLike работают 2 режима. Один для авторизированных пользователей. Тут понятно, учёт идёт по id пользователя. Другой, не для авторизированных пользователей. Т.е. у которых, в системе MODX, id равен 0. Второй работает также на основе IP, плюс дополнительно ещё сохраняет session_id. session_id насколько понял, автор, использует для защиты, от повторного голосования, если вдруг у пользователся поменялся IP.
Единственное в xLike, если вы в авторизованы в бэкенде, а во форнтэнде нет, при голосовании, он считает вас авторизованным, и сохраняет голос как авторизованного пользователя. Если после этого открыть, например, другой браузер, в котором вы не авторизованы в админке, он позволит ещё раз проголосовать, как не авторизированному пользователю, хотя у вас будет тот же IP. Но это скорее особенность, чем ошибка.
Если необходимо, то могу настроить защиту с помощью COOKIE и убрать по IP.
Вам в самый раз разместить сей компонент на репозитории (платный\бесплатный это уже ваш выбор). Было бы хорошо что был бы у него выбор ip или куки. Почему нет?
Хорошо что зашел прочитать сию тему, а то хотел уже снимать какой трафик идет на сервачек, дабы потом в nat у 2012r2 возиться…
Ссылка на транспортный пакет: yadi.sk/d/pF116mjT3LwmtR
Кроме этого изображение со звёздочками имеет больший размер. Это позволит их отчётливо отображать на смартфонах.
Вот прям то что нужно получилось! Спасибо вам за чудесный компонент)