Отзывы с оценкой товара - доработка сниппета
Тут Тыц в комментах указано решение. Сделал всё как описано — всё работает, за исключением подсчёта средней оценки.
Сниппет:
отказывается работать — пишет что ошибка в 8 строке:
Сниппет:
<?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
Кто сможет помочь? Небольшое материальное вознаграждение гарантирую) Комментарии: 8
json_decode($arr_one["prop"], true)["starrating"];
Такая конструкция появилась только в php 5.4. Проверьте, что у вас на сервере используется
*начиная с php 5.4 (опечатка)
Спасибо) Поменял PHP, ошибка пропала. Но теперь вообще ничего не происходит)
Вас готов отблагодарить. Отпишитесь на почту пожалуйста)
Вас готов отблагодарить. Отпишитесь на почту пожалуйста)
Разобрался сам — вызывается вот так:
[[!starrating-middle? &id=`[[*id]]`]]
[[+rating]]
Где starrating-middle — название сниппета
Выводить в списке товаров не пробовали? в карточке норм, а вот в списке под каждым товаром как?
По логике просто заменить [[*id]] на [[+id]]
неа не работает так, нужно что то еще в снипете сделать
в самом вверху вот так должно быть для списка
$id = $modx->getPlaceholder('id');
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.