|
Самообновляющийся рейтинг материалов
|
|
| Sierra | Отредактировал Sierra - Суббота, 28 Февраля 2009, 16:41 Дата: 25 Февраля 2009, 18:46 | Сообщение # 1 |  ● ● ● ● ● 106 сообщений Статус: Offline | Рейтинг обновляется без перезагрузки страницы, т.е. показывается сразу после выбора оценки. Настройки css (в данном примере можно обойтись и без них), картинки рейтинга и т.д. выкладывать не буду - всё это можно найти или сделать самостоятельно, либо взять от другого рейтинга. Для работы скрипта нужен jQuery. Пример приведен для каталога сайтов. Вид материалов: Code <div id="rating$ID$"><?if($RATE_FORM$)?><div id="ratechoose$ID$"> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-1-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="1" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-2-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="2" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-3-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="3" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-4-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="4" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-5-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="5" /></a> </div> <script type="text/javascript"> $("#ratechoose$ID$ a").click(function () {$("#ratechoose$ID$").html('<img src="ссылка на картинку-лоадер" alt="" />');}); function ratingshow() {$("#ratechoose$ID$").load("# #rating$ID$");} </script> <?else?> <img src="путь до папки с картинками рейтинга/$RATING_NUM$.gif" border="0" alt="$RATING$/$RATED$" /> <?endif?></div><?endif?> Страница материала и комментариев к нему: Code <div id="rating"><?if($RATE_FORM$)?><div id="ratechoose"> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-1-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="1" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-2-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="2" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-3-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="3" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-4-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="4" /></a> <a href="javascript://" onclick="uz.util.Connect.asyncRequest('GET','/dir/0-0-5-$ID$-3',{success:function(){ratingshow();}});"><img src="ссылка на картинку" border="0" alt="5" /></a> </div> <script type="text/javascript"> $("#ratechoose a").click(function () {$("#ratechoose").html('<img src="ссылка на картинку-лоадер" alt="" />');}); function ratingshow() {$("#ratechoose").load("# #rating");} </script> <?else?> <img src="путь до папки с картинками рейтинга/$RATING_NUM$.gif" border="0" alt="$RATING$/$RATED$" /> <?endif?></div><?endif?> | | |
|
| Vanofuture | Дата: 25 Февраля 2009, 18:59 | Сообщение # 2 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | А если материалов больше одного то что делать?  | | |
|
| Sierra | Отредактировал Sierra - Пятница, 06 Марта 2009, 14:58 Дата: 06 Марта 2009, 14:54 | Сообщение # 3 |  ● ● ● ● ● 106 сообщений Статус: Offline | К #rating и #ratechoose приписать $ID$ - получится #rating$ID$ и #ratechoose$ID$. Добавлено (06 Март 2009, 14:54) --------------------------------------------- Новая версия скрипта! Редактировать тему уже не могу, поэтому выложу так. Добавлен вывод ошибки "Вы уже голосовали!", если пользователь уже голосовал за материал. Кода стало гораздо меньше и сам скрипт фактически переписан. Опять же визуальную часть я опускаю - это не важно, можете делать как хотите сами, но не забудьте добавить onclick="rating(x);" Для каталога сайтов Вид материалов и/или страница материала (везде код будет одинаковый): Code <div id="rating$ID$"><?if($RATE_FORM$)?> <img src="..." style="border:0;cursor:pointer;" alt="1" onclick="rating(1);" /> <img src="..." style="border:0;cursor:pointer;" alt="2" onclick="rating(2);" /> <img src="..." style="border:0;cursor:pointer;" alt="3" onclick="rating(3);" /> <img src="..." style="border:0;cursor:pointer;" alt="4" onclick="rating(4);" /> <img src="..." style="border:0;cursor:pointer;" alt="5" onclick="rating(5);" /> <br />Текущий рейтинг: $RATING$/$RATED$ <script type="text/javascript"> function rating(n) { $("#rating$ID$").html('<img src="..." align="center" alt="Загрузка..." />'); // картинка-загрузчик, строка не обязательна $.get("/dir/0-0-"+n+"-$ID$-3",function(data) {if(data.match("уже")){$("#rating$ID$").html("Вы уже голосовали за этот материал!");}else{$("#rating$ID$").load("$ENTRY_URL$ #rating$ID$");}}); } </script> <?else?> <img src=".../$RATING_NUM$.gif" alt="Рейтинг фильма: $RATING$/$RATED$" /> <?endif?></div> Для других модулей вместо "/dir/0-0-"+n+"-$ID$-3" подставляем: блог: "/blog/0-0-"+n+"-$ID$-14-1" доска объявлений: "/board/0-1-"+n+"-1-3" новости: "/news/0-0-"+n+"-$ID$-15-1" каталог статей: "/publ/0-1-"+n+"-$ID$-3" каталог файлов: "/load/0-1-"+n+"-$ID$-3" фотоальбом: "/photo/$CID$-1-$ID$-13-"+n (кавычку в конце НЕ надо!) Как работает скрипт? После клика на картинке через onclick запускается функция rating, которая отправляет на сервер запрос через $.get. Полученный ответ проверяется на наличие слова уже (т.е. вы уже голосовали), и если наличие подтверждается, то выводится ошибка "Вы уже голосовали за этот материал!". Если же нет - обновляется div с id rating$ID$, и выводится обновленный рейтинг материала. | | |
|
| Бармалей | Дата: 06 Марта 2009, 15:48 | Сообщение # 4 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline |
 | | |
|
| Sierra | Отредактировал Sierra - Пятница, 06 Марта 2009, 16:26 Дата: 06 Марта 2009, 16:26 | Сообщение # 5 |  ● ● ● ● ● 106 сообщений Статус: Offline | Бармалей, этот рейтинг косячный и кода дофига в нем. То там звездачки не обновляются, то можно голосовать после того как ты уже проголосовал, т.е. рейтинг реагирует на наведение мыши. Короче я с этим рейтингом много работал и он меня полностью не устраивал, поэтому и написал свой. | | |
|
| Tоhas | Дата: 28 Апреля 2009, 02:49 | Сообщение # 6 | ● ● ● ● ● 36 сообщений Статус: Offline | А почему у меня он сам не обновляется? Зависает на стадии "Загрузка..." Quote (Sierra [url=http://helper.ucoz.ru/forum/26-4724-55505-16-1235576811) →[/url]]Для работы скрипта нужен jQuery. Это включить где-то в админке нужно или что? | | |
|
| kydapodatsya | Дата: 28 Апреля 2009, 02:52 | Сообщение # 7 |  ● ● ● ● ● Дизайнер 2557 сообщений Статус: Offline | Это включить где-то в админке нужно или что? после обновления по умолчанию включено  | | |
|
| mrSpam | Дата: 28 Апреля 2009, 08:27 | Сообщение # 8 |  ● ● ● ● ● 184 сообщения Статус: Offline | kydapodatsya, да пускай в админке поищет =)))) Sierra, спасиб =)  | | |
|
| Tоhas | Отредактировал Tоhas - Вторник, 28 Апреля 2009, 13:37 Дата: 28 Апреля 2009, 13:36 | Сообщение # 9 | ● ● ● ● ● 36 сообщений Статус: Offline | да пускай в админке поищет =)))) пилятЬ! Чего искать-то?! "Отключение Ajax для переглючателей страниц?" | | |
|
| mrSpam | Дата: 28 Апреля 2009, 14:00 | Сообщение # 10 |  ● ● ● ● ● 184 сообщения Статус: Offline | Quote (Tоhas [url=http://helper.ucoz.ru/forum/26-4724-61175-16-1240872573) →[/url]]Это включить где-то в админке нужно или что? Tоhas, вот что =) | | |
|
| Tоhas | Дата: 28 Апреля 2009, 22:56 | Сообщение # 11 | ● ● ● ● ● 36 сообщений Статус: Offline | Вы чё больные что-ли? Вас спрашивают, а вы вместо того, чтобы дать человеку ответ нормальный - корчите из себя обезъян! Или закройте тему и влепите мне замечание, как обычно любите делать, либо отвечайте нормально! | | |
|
| NecroProger | Дата: 28 Апреля 2009, 23:20 | Сообщение # 12 |  ● ● ● ● ● 1024 сообщения Статус: Offline | Quote (Tоhas [url=http://helper.ucoz.ru/forum/26-4724-61349-16-1240944991) →[/url]]Вы чё больные что-ли? Я - да. Просто непонятно зачем приходят люди сюда с такими знаниями, вот мы (я во всяком случае) и хохочем.  | | |
|