Здравствуйте! В административной части opencart 2.0.1.1 стоит задача вывести артикул (sku) в разделе Заказы после названия товара, который заказал клиент. Это будет удобно при сборке заказа. Дело в том, что в базе данных, в которую записывается информация о заказах попросту нет SKU, но есть id товара. Вопрос! Как сделать так, чтобы по id товара можно было вытащить артикул (sku) из базы данных продуктов и вставить в заказ? Спасибо!
Для того чтобы вытащить sku, необходимо для начала в файле \admin\model\sale\order.php изменить запрос в public function getOrderProducts($order_id) { на такой PHP: $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product op LEFT JOIN " . DB_PREFIX . "product p ON (p.product_id = op.product_id) WHERE order_id = '" . (int)$order_id . "'"); Далее посмотрите в контроллер admin\controller\sale\order.php Найдите Код: 'product_id' => $product['product_id'], и добавьте Код: 'sku' => $product['sku'], Далее в шаблоне, думаю сможете сами.
Далее в шаблоне order_info.tpl Вставляю в нужном мне месте строчку <?php echo $product['sku']; ?> и получаю ошибку((( 2015-09-16 9:41:26 - PHP Notice: Undefined index: sku admin/view/template/sale/order_info.tpl on line 313
вы не ту строку нашли, нужно именно вот эту, где то 1435 строка Код: 'product_id' => $product['product_id'], вся фишка в пробелах... а в тексте они съелись видимо
Действительно! не там искал Нужно было в массиве $data['products'][] = array( который находится на 1433 строке, а я менял в массиве $data['order_products'][] = array( находящемся на 753 строке Всем огромное спасибо! Проблема решена!
упс, проблема решена не полностью.. Не заметил сразу. При замене строчки в файле \admin\model\sale\order.php на указанную выше, в столбике количество, вместо количества заказанного товара, появляется количество товара на складе. Как бы это исправить?
Заменил в этой строчке $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product op LEFT JOIN " . DB_PREFIX . "product p ON (p.product_id = op.product_id) WHERE order_id = '" . (int)$order_id . "'"); LEFT JOIN на RIGHT JOIN проблему это не решило. Где попробовать заменить звездочку не очень понял. Можно подробнее?