Это скрипт кастомизации стандартного рейтинга uCoz. Он заменяет стандартное отображение звёзд на интерактивный выбор оценки от 1 до 10, отправляет голос через AJAX и после голосования обновляет отображение текущего рейтинга без перезагрузки страницы.

Установка:
Заходим в нужный модуль > Страница материала и комментариев к нему, ставим код после $RATING$:

Код
<script type="text/javascript">
$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>


Новая вариация

Код
$(function () {  
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>`  
);  
}  
});  
};  
  });