Хорошо, я попробую это сделать, но давайте уточним несколько вещей:
1) DB_PREFIX
- это просто константа php, объявленная в вашем файле config.php.Исходя из предоставленного вами запроса, он, вероятно, равен ocuk
.Дело в том, что вы пишете запросы, используя эту константу, и они становятся переносимыми между установками независимо от выбранного пользователем префикса базы данных.
2) Opencart основан на MCVL (расширение MVC который включает в себя языковые файлы) структуру.Место для выполнения запросов находится в модели .Место для вызова методов модели находится в controller .Контроллер передает вывод в представление и часто использует языковые переменные из файлов language .
Итак, я бы написал функцию и поместил ее в модель вашего продукта -в этом случае это catalog/model/catalog/product.php
.Эта функция называется метод , поскольку теперь она является частью вашего класса модели.Функция выведет в вашу таблицу строки о том, что зарегистрированный клиент приобрел данный продукт.Также важно проверить (а), что клиент вошел в систему и (б) что заказы, с которыми вы запрашиваете, являются реальными заказами - с order_status_id> 0. Мы можем пойти на это, но достаточно сказатьчто вам всегда нужно проверять order_status_id, если вы хотите знать о фактически выполненных заказах.Такой метод может выглядеть примерно так:
public function getOrderProductHistory($product_id) {
$result = [];
if ($customer_id = $this->customer->getId()) {
$sql = "
SELECT *
FROM " . DB_PREFIX . "order o
JOIN " . DB_PREFIX . "order_product op USING (order_id)
WHERE o.order_status_id > 0
AND o.customer_id = '" . (int)$customer_id . "'
";
$query = $this->db->query($sql);
$result = $query->rows;
}
return $result;
}
Теперь в вашем контроллере (на странице продукта это catalog/controller/product/product.php
) вы можете вызвать этот метод, чтобы получить такие результаты:
$order_product_history = $this->model_catalog_product->getOrderProductHistory($product_id);
А затем сделайте что-нибудь на основе вывода:
if ($order_product_history) {
$data['has_been_ordered'] = true;
} else {
$data['has_been_ordered'] = false;
}
Теперь $has_been_ordered
- это логическое значение, к которому вы можете обратиться в своем представлении , чтобы отобразить сообщение для клиента.Для вас есть еще немного кода для написания, но, надеюсь, это поможет вам хорошо начать.