Возникла такая проблема:
В таблицу oc_products добавлена новая строка с айдишником.
При редактировании какого-либо товара через админку этот айдишник естественно не учитывается и по умолчанию ставится 0.
Как исправить это недоразумение? Нужно что-бы при редактировании товара он подхватывал этот айдишник из базы, но на практике это реализовать оказалось не так то просто.
Первое что пришло в голову лезть в model/catalog/product.php
и найти там функцию editProduct($product_id, $data)
Добавил новый айдишник сюда:
$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', merlion_id = '" . (int)$data['merlion_id'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");
Затем сюда:
controller/module/product.php
Нашел функцию getForm и добавил это:
if (isset($this->request->post['merlion_id'])) { $this->data['merlion_id'] = $this->request->post['merlion_id']; } elseif (!empty($product_info)) { $this->data['merlion_id'] = $product_info['merlion_id']; } else { $this->data['merlion_id'] = ''; }
Так же и в функции getList():
Добавил:
$this->data['products'][] = array( 'product_id' => $result['product_id'], 'merlion_id' => $result['merlion_id'], 'name' => $result['name'], 'model' => $result['model'], 'price' => $result['price'], 'special' => $special, 'image' => $image, 'quantity' => $result['quantity'], 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), 'selected' => isset($this->request->post['selected']) && in_array($result['product_id'], $this->request->post['selected']), 'action' => $action );
Но оно все равно не фурычит. Ставит 0, как будто из базы не берет. Подскажите, что пропустил, не могу придумать ничего.