Среднее значение 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();

Если нужна еще какая-нибудь информация, с радостью предоставлю
15 сентября 2016, 17:06    Dolce   
0    388 0

Комментарии (4)

  1. Алексей 16 сентября 2016, 06:44 # 0
    Так вызови сниппет.
    {$_modx->runSnippet('!starRating', [
           'starId' => $id,
           'starTpl' => 'starTpl'
     ])}
    
    Он по умолчанию выводит с точностью до двух знаков после запятой, если я правильно помню.
    1. Dolce 20 сентября 2016, 15:17 # 0
      Здравствуйте. Создал сниппет с Вашим кодом, получаю ошибку из за {} — убрал. Теперь другая ошибка
      Fatal error: Call to a member function runSnippet() on a non-object
      1. Антон 21 сентября 2016, 06:14 # 0
        1. Алексей 21 сентября 2016, 07:04 # 0
          это синтаксис на феноме, если не используете его, перепишите под стандартный в modx
          [[!starRating?
          &starId = `[[+id]]`
          &starTpl = `starTpl`
          ]]
          вроде бы так
      Вы должны авторизоваться, чтобы оставлять комментарии.