Ошибка микроразметки продукта

Ярило
На сайте с 25.04.2017
Offline
36
9266

Добрый день, форумчане!

Не смог найти решение данной проблемы =( всю остальную разметку сделал.

Правда валюта Руб в категориях не показывается, что туда писать тоже не понял и куда именно (в какую строку). В самой карточке товара вся разметка кроме "0" отзыва сделана без ошибок

reviewCount

0 (Значение параметра reviewCount должно быть положительным.)

</p>

<meta itemprop = "ratingValue" content="<?php echo $rating; ?>">
<meta itemprop = "worstRating" content="0">
<meta itemprop = "bestRating" content="5">
<meta itemprop = "reviewCount" content="<?php echo $review_count; ?>">
<hr>
K
На сайте с 26.04.2017
Offline
19
#1

В $review_count что лежит?

Насколько я понял, рейтинг должен на чём-то основываться: либо просто на количестве голосов (ratingCount), либо на количестве отзывов (reviewCount).

Если рейтинг продукта у Вас основан на голосах, а не на отзывах, то нужно использовать itemprop="ratingCount" вместо itemprop="reviewCount". И, разумеется, значение не должно быть нулевым. Могу заблуждаться.

Если рейтинг у конкретного продукта вообще отсутствует, выводить микроразметку, опять же, как я понял, не надо.

<?php if ($rating && ($review_count || $rating_count)): ?>

<meta itemprop="ratingValue" content="<?= $rating ?>">
<meta itemprop="worstRating" content="<?= $worst_rating ?>">
<meta itemprop="bestRating" content="<?= $best_rating ?>">

<?php if ($review_count): ?>
<meta itemprop="reviewCount" content="<?= $review_count ?>">
<?php elseif ($rating_count): ?>
<meta itemprop="ratingCount" content="<?= $rating_count ?>">
<?php endif; ?>
<?php endif; ?>
Ярило
На сайте с 25.04.2017
Offline
36
#2
Kratech:
В $review_count что лежит?

Насколько я понял, рейтинг должен на чём-то основываться: либо просто на количестве голосов (ratingCount), либо на количестве отзывов (reviewCount).

Если рейтинг продукта у Вас основан на голосах, а не на отзывах, то нужно использовать itemprop="ratingCount" вместо itemprop="reviewCount". И, разумеется, значение не должно быть нулевым. Могу заблуждаться.

Если рейтинг у конкретного продукта вообще отсутствует, выводить микроразметку, опять же, как я понял, не надо.

<?php if ($rating && ($review_count || $rating_count)): ?>

<meta itemprop="ratingValue" content="<?= $rating ?>">
<meta itemprop="worstRating" content="<?= $worst_rating ?>">
<meta itemprop="bestRating" content="<?= $best_rating ?>">

<?php if ($review_count): ?>
<meta itemprop="reviewCount" content="<?= $review_count ?>">
<?php elseif ($rating_count): ?>
<meta itemprop="ratingCount" content="<?= $rating_count ?>">
<?php endif; ?>
<?php endif; ?>

Рейтинг основывается на отзывах (платформа Опенкарт)

беда в том, что если добавить отзыв о товаре, то ошибка пропадает. Если нету отзыва и стоит "0", то выводит ошибку. Как сделать (что и куда прописать) что бы было условие, есть отзыв то выводит, нету отзыва, он его пропускает

K
На сайте с 26.04.2017
Offline
19
#3

В шаблоне продукта, там же, откуда Вы эту микроразметку взяли, оборачиваете её в условие IF ($review_count). Если данная переменная (подразумевается, что в ней лежит целочисленное значение, количество отзывов) не равна нулю, то разметка внутри условия будет выведена.

<?php if ($review_count): ?>

<meta itemprop="ratingValue" content="<?= $rating ?>">
<meta itemprop="worstRating" content="<?= $worst_rating ?>">
<meta itemprop="bestRating" content="<?= $best_rating ?>">
<meta itemprop="reviewCount" content="<?= $review_count ?>">
<?php endif; ?>
[Удален]
#4
Ярило:
Правда валюта Руб в категориях не показывается, что туда писать тоже не понял и куда именно

у микроразметки Product нет такой характеристики как валюта и цена, есть характеристика предложение - itemprop="offers" (вот там может быть цена и валюта)

Ярило
На сайте с 25.04.2017
Offline
36
#5
Kratech:
В шаблоне продукта, там же, откуда Вы эту микроразметку взяли, оборачиваете её в условие IF ($review_count). Если данная переменная (подразумевается, что в ней лежит целочисленное значение, количество отзывов) не равна нулю, то разметка внутри условия будет выведена.

<?php if ($review_count): ?>

<meta itemprop="ratingValue" content="<?= $rating ?>">
<meta itemprop="worstRating" content="<?= $worst_rating ?>">
<meta itemprop="bestRating" content="<?= $best_rating ?>">
<meta itemprop="reviewCount" content="<?= $review_count ?>">
<?php endif; ?>

Условие прописано как я понял, но всё равно выдает ошибку

</div>

<?php if ($review_status) { ?>
<div class="rating" itemprop = "aggregateRating" itemscope itemtype = "http://schema.org/AggregateRating">
<p>
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($rating < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-1x"></i><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } ?>
<?php } ?>
<a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $reviews; ?></a> / <a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $text_write; ?></a>
</p>
<meta itemprop = "ratingValue" content="<?php echo $rating; ?>">
<meta itemprop = "worstRating" content="0">
<meta itemprop = "bestRating" content="5">
<meta itemprop = "reviewCount" content="<?php echo $review_count; ?>">
<hr>


---------- Добавлено 30.06.2017 в 09:34 ----------

Переделал вот так (я не прогер и опыта нету вообще нет) помогите поправить. теперь карточки товара не открываются
<?php if ($review_status) { ?>
<div class="rating" itemprop = "aggregateRating" itemscope itemtype = "http://schema.org/AggregateRating">
<p>
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($rating < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-1x"></i><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } ?>
<?php } ?>
<?php if ($review_count) { ?>
<a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $reviews; ?></a> / <a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $text_write; ?></a>
</p>
<meta itemprop = "ratingValue" content="<?php echo $rating; ?>">
<meta itemprop = "worstRating" content="0">
<meta itemprop = "bestRating" content="5">
<meta itemprop = "reviewCount" content="<?php echo $review_count; ?>">
<hr>



---------- Добавлено 30.06.2017 в 10:12 ----------

Вернёмся к началу =) вот код, что и куда нужно прописать, что бы выполнялось условие:

Когда отзывов 0, то система его пропускает

reviewCount

0 (Значение параметра reviewCount должно быть положительным.)

<?php if ($review_status) { ?>

<div class="rating" itemprop = "aggregateRating" itemscope itemtype = "http://schema.org/AggregateRating">
<p>
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($rating < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-1x"></i><i class="fa fa-star-o fa-stack-1x"></i></span>
<?php } ?>
<?php } ?>
<a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $reviews; ?></a> / <a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;"><?php echo $text_write; ?></a>
</p>
<meta itemprop = "ratingValue" content="<?php echo $rating; ?>">
<meta itemprop = "worstRating" content="0">
<meta itemprop = "bestRating" content="5">
<meta itemprop = "reviewCount" content="<?php echo $review_count; ?>">
<hr>

Отдельно в файле php прописано:

$data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);

$data['review_count'] = ($product_info['reviews']) ? (int)$product_info['reviews'] : 0 ;
$data['review_count'] = (int)$product_info['reviews'];
$data['rating'] = (int)$product_info['rating'];

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий