Отзывы с оценкой товара - доработка сниппета

Тут Тыц в комментах указано решение. Сделал всё как описано — всё работает, за исключением подсчёта средней оценки.
Сниппет:
<?php
$sql = "SELECT C.properties AS prop FROM modx_tickets_comments C LEFT JOIN modx_tickets_threads D
ON C.thread=D.id WHERE D.resource = ".$id;
$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($arr as $arr_one) {
    $tmp = json_decode($arr_one["prop"], true)["starrating"];
    $all[] = $tmp;
}
$middle = number_format(array_sum($all)/count($all), 1, '.', '' );
if (count($all) == 0) {
   $result = ""; 
} else {
$result = '<span itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><span class="stars"
 itemprop="rating">'.$middle.'</span>Рейтинг '.$middle.' на основе <span itemprop="count">'.count($arr).'</span> отзывов</span>';
}
$modx->setPlaceholders(array(
   'rating' => $result,
   'ratingCount' => "(".count($all).")"
));

отказывается работать — пишет что ошибка в 8 строке:

Parse error: syntax error, unexpected '[' in /core/cache/includes/elements/modsnippet/103.include.cache.php on line 8
Кто сможет помочь? Небольшое материальное вознаграждение гарантирую)
Сергей
25 августа 2016, 07:36
modx.pro
1
877
0

Комментарии: 8

Алексей Ерохин
25 августа 2016, 17:32
0
json_decode($arr_one["prop"], true)["starrating"];
Такая конструкция появилась только в php 5.4. Проверьте, что у вас на сервере используется
    Алексей Ерохин
    25 августа 2016, 17:49
    0
    *начиная с php 5.4 (опечатка)
      Сергей
      26 августа 2016, 14:05
      0
      Спасибо) Поменял PHP, ошибка пропала. Но теперь вообще ничего не происходит)
      Вас готов отблагодарить. Отпишитесь на почту пожалуйста)
        Сергей
        27 августа 2016, 22:24
        0
        Разобрался сам — вызывается вот так:
        [[!starrating-middle? &id=`[[*id]]`]]
                     [[+rating]]
        Где starrating-middle — название сниппета
          дмитрий
          07 июля 2021, 14:14
          0
          Выводить в списке товаров не пробовали? в карточке норм, а вот в списке под каждым товаром как?
            Сергей
            07 июля 2021, 14:22
            0
            По логике просто заменить [[*id]] на [[+id]]
              дмитрий
              07 июля 2021, 14:38
              0
              неа не работает так, нужно что то еще в снипете сделать
                дмитрий
                07 июля 2021, 15:13
                0
                в самом вверху вот так должно быть для списка
                $id =  $modx->getPlaceholder('id');
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8