Тоже пытаюсь сделать отзывы статическими, чтобы индексировались ПС. Что сделал: в /catalog/view/theme/magazin/template/product/product.tpl заменил
<div id="review"></div>
на
<div id="review">
<?php if ($reviews_array) { ?>
<?php foreach ($reviews_array as $review) { ?>
<table class="table table-striped table-bordered">
<tr>
<td style="width: 50%;"><strong><?php echo $review['author']; ?></strong></td>
<td class="text-right"><?php echo $review['date_added']; ?></td>
</tr>
<tr>
<td colspan="2"><p><?php echo $review['text']; ?></p>
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($review['rating'] < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
<?php } ?>
<?php } ?></td>
</tr>
</table>
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<meta itemprop="name" content="<?php echo $heading_title; ?>" >
<meta itemprop="author" content="<?php echo $review['author']; ?>" >
<meta itemprop="datePublished" content="<?php echo $review['date_added']; ?>">
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1"/>
<meta itemprop="ratingValue" content="<?php echo $review['rating']?>"/>
<meta itemprop="bestRating" content = "5"/>
</div>
<meta itemprop="description" content="<?php echo $review['text']; ?>" />
</div>
<?php } ?>
<div class="text-right"><?php echo $pagination; ?></div>
<?php } else { ?>
<p><?php echo $text_no_reviews; ?></p>
<?php } ?>
</div>
и в /catalog/controller/product/product.php после
$this->model_catalog_product->updateViewed($this->request->get['product_id']);
вставил
$this->load->model('catalog/review');
if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
} else {
$page = 1;
}
$review_total = $this->model_catalog_review->getTotalReviewsByProductId($product_id);
$results = $this->model_catalog_review->getReviewsByProductId($product_id, ($page - 1) * 5, 5);
$data['text_no_reviews'] = $this->language->get('text_no_reviews');
$data['reviews_array'] = array();
foreach ($results as $result) {
$data['reviews_array'][] = array(
'author' => $result['author'],
'text' => strip_tags($result['text']),
'rating' => (int)$result['rating'],
'reviews' => sprintf($this->language->get('text_reviews'), (int)$review_total),
'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
);
}
$pagination = new Pagination();
$pagination->total = $review_total;
$pagination->page = $page;
$pagination->limit = 5;
$pagination->text = $this->language->get('text_pagination');
$pagination->url = $this->url->link('product/product', $url . '&product_id=' . $product_id . '&page={page}');
$data['review_pagination'] = $pagination->render();
На странице товара отображаются ошибки, что я не задал переменные reviews_array & text_no_reviews :
Notice: Undefined variable: reviews_array in /var/www/asdasd/data/www/asd.ru/catalog/view/theme/magazin/template/product/product.tpl on line 667
Notice: Undefined variable: text_no_reviews in /var/www/asdasd/data/www/asd.ru/catalog/view/theme/magazin/template/product/product.tpl on line 699
Вопрос: В чем мой прокол? Я же их задал перед foreach
$data['text_no_reviews'] = $this->language->get('text_no_reviews');
$data['reviews_array'] = array();
Заранее вам благодарен!