Немного пошаманил и получил следующее решение для реализации голосования через star_rating.
у меня версия 2beta.
для начала нужно на странице где будет голосование подключить библиотеку mootools для этого где-нибудь d теге <head></head> нужно вставить строчку:
<script type="text/javascript" src="
http://www.domain.ru/manager/media/script/mootools/mootools.js"></script>
и файл с функцией, предварительно исправив url до страницы с вызовом сниппета (о ней пойдет речь ниже) и путь до изображения, которое будет появляться во время выполнения запроса и оповещать пользователя о том, что выполняется запрос, собсно:
<script type="text/javascript" src="/star.js"></script>
Файл star.js:
function aj_test(par1, par2, par3){
new Fx.Style(''+ par2, 'opacity').set(0);
$(par2 + '_spinner').setStyle('background', 'url(http://www.domain.ru/images/spinner.gif) no-repeat 60px center');
new Ajax(' http://www.domain.ru/14',
{
method: 'get',
update: '' + par2, data: 'vote=' + par1 + '& pid=' + par2 + '& tv=' + par3,
onComplete: function()
{
new Fx.Style(''+ par2, 'opacity').set(1);
$(par2 + '_spinner').setStyle('background', 'none');
}
}).request();
}
1) в шаболне или чанке где вызывается сниппет star_rating нужно заключить этот вызов в два дива с уникальными id (нужно для ajax скрипта)
у меня так:
<div id="[+id+]_spinner" >
<div id="[+id+]">
[[star_rating? &docID=`[+id+]` &useCookies=`true` &onevote=`true` &starTpl=`starTPL`]]
</div>
</div>
2) создал документ в дереве док-в с пар-ми "не отображать в меню", шаблон "blank". В контентной части этого дока вызываем сам сниппет [[star_rating? &docID=`@EVAL return $_GET[’pid’];` &useCookies=`true` &onevote=`true` &starTpl=`starTPL`]]
Эта конструкция будет использоваться, когда мы нажмем на звездочку чтоб проголосовать, js функция отправит get запрос этому документу, он вызовет скрипт, скрипт отработает и вернет рез-т, который мы подставим в страницу
3) в файле /assets/snippets/star_rating/rating.class.php
комментим три строчки (у меня они 125-128)
//unset ($_GET);
//$curURL = $modx->makeUrl($this->redirect);
//$modx->sendRedirect($curURL);
и меняем содержимое плэйсхолдера starRating (в районе строки 143)
вместо этого:
<div class='rating-bg'><ul class='star-rating'>
<li class='current-rating' style='width:" . $this->imgWidth * $this->_templateVarMeta['average'] . "px;'>" . $this->_lang['current_1'] . round($this->_templateVarMeta['average'], 1) . $this->_lang['current_2'] . "</li>
<li><!---<a href='" . $modx->makeUrl($modx->documentObject['id'], '', 'vote=1&pid=' . $this->documentId . '&tv=' . $this->_tvId) . "' title='" . $this->_lang['one_star'] . "' class='one-star'>--->1<!---</a>---></li>
<li><!---<a href='" . $modx->makeUrl($modx->documentObject['id'], '', 'vote=2&pid=' . $this->documentId . '&tv=' . $this->_tvId) . "' title='" . $this->_lang['two_stars'] . "' class='two-stars'>--->2<!---</a>---></li>
<li><!---<a href='" . $modx->makeUrl($modx->documentObject['id'], '', 'vote=3&pid=' . $this->documentId . '&tv=' . $this->_tvId) . "' title='" . $this->_lang['three_stars'] . "' class='three-stars'>--->3<!---</a>---></li>
<li><!---<a href='" . $modx->makeUrl($modx->documentObject['id'], '', 'vote=4&pid=' . $this->documentId . '&tv=' . $this->_tvId) . "' title='" . $this->_lang['four_stars'] . "' class='four-stars'>--->4<!---</a>---></li>
<li><!---<a href='" . $modx->makeUrl($modx->documentObject['id'], '', 'vote=5&pid=' . $this->documentId . '&tv=' . $this->_tvId) . "' title='" . $this->_lang['five_stars'] . "' class='five-stars'>--->5<!---</a>---></li>
</ul></div>
вставить вот это:
<div class='rating-bg'><ul class='star-rating'>
<li class='current-rating' style='width:" . $this->imgWidth * $this->_templateVarMeta['average'] . "px;'>" . $this->_lang['current_1'] . round($this->_templateVarMeta['average'], 1) . $this->_lang['current_2'] . "</li>
<li><!---<a href=\"javascript:void(0)\" onclick='aj_test(1,$this->documentId,$this->_tvId)' title='" . $this->_lang['one_star'] . "' class='one-star'>--->1<!---</a>---></li>
<li><!---<a href=\"javascript:void(0)\" onclick='aj_test(2,$this->documentId,$this->_tvId)' title='" . $this->_lang['two_stars'] . "' class='two-stars'>--->2<!---</a>---></li>
<li><!---<a href=\"javascript:void(0)\" onclick='aj_test(3,$this->documentId,$this->_tvId)' title='" . $this->_lang['three_stars'] . "' class='three-stars'>--->3<!---</a>---></li>
<li><!---<a href=\"javascript:void(0)\" onclick='aj_test(4,$this->documentId,$this->_tvId)' title='" . $this->_lang['four_stars'] . "' class='four-stars'>--->4<!---</a>---></li>
<li><!---<a href=\"javascript:void(0)\" onclick='aj_test(5,$this->documentId,$this->_tvId)' title='" . $this->_lang['five_stars'] . "' class='five-stars'>--->5<!---</a>---></li>
</ul></div>
Вот вроде и все. Я не программист и больше чем уверен, что это решение кривое, но у меня оно работает и мне этого пока достаточно