Установка:
Заходим в нужный модуль > Страница материала и комментариев к нему, ставим код после $RATING$:
$size = 16;//Размер иконки с рейтингом в px
$('ul[id^="uStarRating"]').css({'width':$size*10+'px'}).attr({'title':'Рейтинг: '+$RATING$*2+'/$RATED$'});
$.getScript('https://htmlstart.ucoz.net/_ld/2/217_10.rate.uwaid.r.js');
</script>
Новая вариация
const SIZE = 16; // размер одной звезды, px
const STEPS = 10; // количество полузвёзд (0.5 … 5)
const STEP = 0.5;
const SECTION = String(window.location).split('/')[3]; // раздел сайта
const $list = $('ul[id^="uStarRating"]')
.css('width', SIZE * STEPS + 'px')
.attr('title', `Рейтинг: ${$RATING$ * 2}/${$RATED$}`);
// --- Стили для всех звёзд генерируем одной строкой, а не в цикле ---
let css = '';
for (let i = 1; i <= STEPS; i++) {
css += `.u-${i}-stars:hover { width:${SIZE * i}px; } ` +
`.u-${i}-stars { left:${SIZE * (i - 1)}px; }\n`;
}
$list.before(`<style>${css}</style>`);
// --- Строим список звёзд ---
const id = String($('li[class^="u-star-li-"]').attr('class')).split('-')[3];
const $item = $('.u-star-li-' + id);
$item.hide();
let html = '';
for (let i = 1, rate = STEP; i <= STEPS; i++, rate += STEP) {
html += `<li class="u-star-li-${id}">
<a href="#" title="Оценка: ${i}"
onclick="rate('${id}',${rate});return false;"
class="u-${i}-stars">${rate}</a>
</li>`;
}
$item.last().after(html);
// --- Отправка голоса ---
window.rate = function (id, mark) {
_uPostForm('', {
type: 'POST',
url: '/' + SECTION + '/',
data: { a: 65, id: id, o_type: 'vi', mark: mark, mod: SECTION, ajax: 2 },
success(d) {
const $cmd = $('cmd[p="js"]', d);
if ($cmd.filter(':contains("Вы уже")').length) {
_uWnd.alert('Вы уже оценивали данный материал!', 'Рейтинг', { w: 270, h: 70, t: 8000 });
return;
}
_uWnd.alert('Голос успешно принят!', 'Рейтинг', { w: 270, h: 70, t: 8000 });
const percent = ($cmd.text().match(/width='(\d{1,3})%'/) || [])[1];
$('li[class^="u-star-li-"]').hide().last().after(
`<li class="u-current-rating" style="width:${percent}%"></li>`
);
}
});
};
});

1 комментарий
Присоединиться к обсуждению
Поделитесь мнением об этом материале — комментарий появится в списке слева сразу после отправки.