Тут дело не только в скобке у вас подход к разработке в корне не правильный!
Приведу пример.
Это оригинальный код опенкарт:
public function getProduct($product_id) {
if ($this->customer->isLogged()) {
$customer_group_id = $this->customer->getCustomerGroupId();
} else {
$customer_group_id = $this->config->get('config_customer_group_id');
}
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE p...");
if ($query->num_rows) {
$query->row['price'] = ($query->row['discount'] ? $query->row['discount'] : $query->row['price']);
$query->row['rating'] = (int)$query->row['rating'];
return $query->row;
} else {
return false;
}
}
А это код, который получается после ваших изменений через vqmod (отступы сохранены):
public function getProduct($product_id)
{
$product = $this->getProduct_SpecialPro($product_id);
return $this->special_pro->getProduct($product_id,$product);
}
public function getProduct_SpecialPro(
$product_id) {
if ($this->customer->isLogged()) {
$customer_group_id = $this->customer->getCustomerGroupId();
} else {
$customer_group_id = $this->config->get('config_customer_group_id');
}
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT date_start FROM " . DB_PREFIX . "product_special ps
(SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND p...");
if ($query->num_rows) {
$query->row['price'] = ($query->row['discount'] ? $query->row['discount'] : $query->row['price']);
$query->row['rating'] = (int)$query->row['rating'];
return $query->row;
} else {
return false;
}
}
Спрашивается ЗАЧЕМ??
Зачем создавать еще одну функцию в стандартной модели?
Зачем изменять логику работы стандартного метода опенкарт (наиболее используемого метода, который используют десятки модулей) ?
Зачем грузить вашу модель через фронт контроллер? Чтобы добавить дополнительных конфликтов?
Зачем передавать весь массив товара в метод своего модуля, которые полностью зашифрован? Неужели нельзя передать только нужные параметры?
Как бы сделал я:
1. не меняя логику работы стандартного метода getProduct
после:
if ($query->num_rows) {
добавил бы:
$this->load->model('catalog/speсial_pro');
$query->row['special_pro'] = $this->special_pro->getProduct($product_id);
или в крайнем случае, так как я не знаю что делает ваш модуль:
$this->load->model('catalog/spesial_pro');
$query->row = $this->special_pro->getProduct($query->row);
Все! 2 строчки кода и никаких конфликтов с другими модулями в будущем! И никаких километровых vqmod файлов..