Сегодня ко мне обратились с просьбой сделать так, чтобы отзывы сразу публиковались без необходимости их подтверждать из админки.
Возможно данная модификация окажется полезной, поэтому я решил опубликовать ее на сайте. Тем более, что модификация OpenCart в данном случае минимальная. Нужно внести небольшие изменения всего лишь в пару файлов CMS.
1) catalog\model\catalog\review.php
внутри функции addReview в теле запроса после
rating = '" . (int)$data['rating'] . "'
добавляем
, status = '1'
В итоге строка будет выглядеть так
$this->db->query("INSERT INTO " . DB_PREFIX . "review SET author = '" . $this->db->escape($data['name']) . "', customer_id = '" . (int)$this->customer->getId() . "', product_id = '" . (int)$product_id . "', text = '" . $this->db->escape($data['text']) . "', rating = '" . (int)$data['rating'] . "', status='1', date_added = NOW()");
Теперь, если написать отзыв - он автоматически опубликуется. Но видно его будет только после обновления страницы. Исправляем - делаем так, чтобы после публикации отзыва содержимое контейнера с отзывами обновилось само:
2) catalog\view\theme\default\template\product\product.tpl
Практически в самом низу ищем
$('input[name=\'captcha\']').val('');
и после этой строки добавляем
$('#review').load('index.php?route=product/product/review&product_id=<?php echo $product_id; ?>');
Удачных Вам экспериментов с OpenCart :))