На форуме 9558 тем, 76453 сообщений, 44667 участников
тема · 2 819 просмотров · 15 ответов

SKU в order_info.tpl

Общие вопросы
читают: 0 участников и 1 гость
порядок
16 сен 2015 07:18#1
Здравствуйте!
В административной части opencart 2.0.1.1 стоит задача вывести артикул (sku) в разделе Заказы после названия товара, который заказал клиент. Это будет удобно при сборке заказа.
Дело в том, что в базе данных, в которую записывается информация о заказах попросту нет SKU, но есть id товара.
Вопрос! Как сделать так, чтобы по id товара можно было вытащить артикул (sku) из базы данных продуктов и вставить в заказ?
Спасибо!
16 сен 2015 09:22· изменено#2
Для того чтобы вытащить 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

Найдите
code
'product_id'       => $product['product_id'],


и добавьте
code
'sku'       => $product['sku'],


Далее в шаблоне, думаю сможете сами.
16 сен 2015 09:47#3
Далее в шаблоне 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
16 сен 2015 10:00#5
Тоже первым делом в глаза бросилось. Поменял, но это ничего не поменяло
16 сен 2015 10:15#7
Обновил((( не пашет
16 сен 2015 10:21#8
вы не ту строку нашли, нужно именно вот эту, где то 1435 строка
code
'product_id'       => $product['product_id'],

вся фишка в пробелах... а в тексте они съелись видимо
16 сен 2015 10:28#9
Действительно! не там искал

Нужно было в массиве $data['products'][] = array( который находится на 1433 строке, а я менял в массиве $data['order_products'][] = array(находящемся на 753 строке

Всем огромное спасибо! Проблема решена!
18 сен 2015 22:08#10
упс, проблема решена не полностью.. Не заметил сразу. При замене строчки в файле \admin\model\sale\order.php на указанную выше, в столбике количество, вместо количества заказанного товара, появляется количество товара на складе.
Как бы это исправить?
19 сен 2015 09:39#11
А в шапку таблицы не добавили что то типа <td>SKU</td>
19 сен 2015 09:40#12
Нет, это мне не нужно. Артикул выводится после названия товара и мне этого достаточно
19 сен 2015 09:49#13
а понял, попробуйте в запросе изменить на RIGHT JOIN
или в запросе, * заменить на *,op.quantity
19 сен 2015 09:57#14
Заменил в этой строчке
$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 проблему это не решило.
Где попробовать заменить звездочку не очень понял. Можно подробнее?
19 сен 2015 10:07#15
$query = $this->db->query("SELECT * FROM "
19 сен 2015 15:37#16
Отлично! Помогло! Спасибо!
сообщения 1–16 из 16
Чтобы ответить, войдите или зарегистрируйтесь.

Похожие темы