Среднее значение starRating
Здравствуйте. Есть сниппет starRating, с помощью которого можно выводить рейтинг для голосования пользователями, и все у этого сниппета хорошо, кроме того, что он не выводит среднее бал голосования. Есть таблица modx_star_rating в которой содержатся поля – id, star_id, group_id, vote_total, vote_count. Нужно разделить значение из vote_total(общий бал) на значение vote_count(общее количество голосов) где id=*id(айди ресурса), а затем результат округлить до одного знака после запятой (что бы не получать значения типа 3.43434354). Но моих знаний не хватает что бы получить эти значения из базы и провести вышеописанное действие. Возможно кто-то поможет?
Вот код сниппета
Вот код сниппета
<?php
/**
* Star Rating snippet
*
* @package star_rating
*/
$snippetPath = $modx->getOption('core_path').'components/star_rating/';
$modx->addPackage('star_rating',$snippetPath.'model/');
$manager = $modx->getManager();
$manager->createObjectContainer('starRating');
$starId = isset($starId) ? $starId : null;
$groupId = isset($groupId) ? $groupId : '';
$c = $modx->newQuery('starRating');
$c->where(array('star_id' => $starId));
if ($groupId != '') $c->where(array('group_id' => $groupId));
$starRating = $modx->getObject('starRating', $c);
if ($starRating == null) {
$starRating = $modx->newObject('starRating');
$starRating->set('star_id',$starId);
$starRating->set('group_id',$groupId);
}
$starRating->initialize();
/* parameters */
$starRating->setConfig($scriptProperties);
/* process star rating */
$starRating->loadTheme();
$groupIdCheck = isset($_GET['group_id']) && $starRating->get('group_id') !== $_GET['group_id'] ? false : true;
if (isset($_GET['vote']) && isset($_GET['star_id']) && $starRating->get('star_id') == $_GET['star_id'] && $groupIdCheck) {
$starRating->setVote($_GET['vote']);
$starRating->addVote();
$modx->sendRedirect($starRating->getRedirectUrl());
}
return $starRating->renderVote();
Если нужна еще какая-нибудь информация, с радостью предоставлю Комментарии: 4
Так вызови сниппет.
{$_modx->runSnippet('!starRating', [
'starId' => $id,
'starTpl' => 'starTpl'
])}
Он по умолчанию выводит с точностью до двух знаков после запятой, если я правильно помню.
Здравствуйте. Создал сниппет с Вашим кодом, получаю ошибку из за {} — убрал. Теперь другая ошибка
Fatal error: Call to a member function runSnippet() on a non-object
это синтаксис на феноме, если не используете его, перепишите под стандартный в modx
[[!starRating?
&starId = `[[+id]]`
&starTpl = `starTpl`
]]
вроде бы так
[[!starRating?
&starId = `[[+id]]`
&starTpl = `starTpl`
]]
вроде бы так
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.