Можно добавить возможность изменять дату отзыва или дату комментария через админпанель. Таким образом будет возможность изменять дату в любое время, не прибегая к вмешательству в mysql через phpmyadmin. Для этого необходимо внести изменения в 3 файла (представления,контролера и модели), которые отвечают за отзывы. 1. В файле /admin/view/template/catalog/review_form.tpl после блока
<tr>
<td><?php echo $entry_status; ?></td>
<td><select name="status">
<?php if ($status) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
</select></td>
</tr>
добавить
<tr>
<td>дата</td>
<td><input type="text" name="date_added" value="<?php echo date('Y-m-d',strtotime($date_added)); ?>" class="date"/></td>
</tr>
а также перед последней строчкой
<?php echo $footer; ?>
вставить
<script type="text/javascript">
$(function(){
$('.date').datepicker({dateFormat: 'yy-mm-dd'});
});
</script>
Таким образом мы добавим на странице добавления/редактирования отзыва поле с датой, значение которой для удобства будем выбирать с помощью jQuery-виджета календаря datepicker (который успешно используется на других формах админпанели магазина). 2. В файле /admin/model/catalog/review.php функции addReview и editReview изложить в следующей редакции
public function addReview($data) {
$this->db->query("INSERT INTO " . DB_PREFIX . "review SET author = '" . $this->db->escape($data['author']) . "', product_id = '" . $this->db->escape($data['product_id']) . "', text = '" . $this->db->escape(strip_tags($data['text'])) . "', rating = '" . (int)$data['rating'] . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "'");
$this->cache->delete('product');
}
public function editReview($review_id, $data) {
$this->db->query("UPDATE " . DB_PREFIX . "review SET author = '" . $this->db->escape($data['author']) . "', product_id = '" . $this->db->escape($data['product_id']) . "', text = '" . $this->db->escape(strip_tags($data['text'])) . "', rating = '" . (int)$data['rating'] . "', status = '" . (int)$data['status'] . "', date_added = '" . $this->db->escape($data['date_added']) . "' WHERE review_id = '" . (int)$review_id . "'");
$this->cache->delete('product');
}
фактически это равнозначно, что заменить в запросах на добавление этих функций date_added = NOW() на date_added = '" . $this->db->escape($data['date_added']) . "' после этого вместо текущей даты в таблицу будет вставляться значение из $data['date_added'] 3. В файле /admin/controller/catalog/review.php после блока
if (isset($this->request->post['status'])) {
$this->data['status'] = $this->request->post['status'];
} elseif (!empty($review_info)) {
$this->data['status'] = $review_info['status'];
} else {
$this->data['status'] = '';
}
добавить
if (isset($this->request->post['date_added'])) {
$this->data['date_added'] = $this->request->post['date_added'];
} elseif (!empty($review_info)) {
$this->data['date_added'] = $review_info['date_added'];
} else {
$this->data['date_added'] = date("Y-m-d");
}
Это нужно для того, чтобы получать в $data['date_added'] значение, введенное из формы, при добавлении отзыва, или выбранное из базы, при редактировании отзыва.