Всем привет! Подскажите как вывести SKU товара в список заказов order_list.tpl. Все форумы пересмотрел, так и не нашёл ответа на свой вопрос. Большое спасибо! Opencart/OcStore 3.x
Не то. Там отображение в других местах. Я нигде не могу найти чтобы SKU отображалось именно в списке заказов order_list.tpl, а там в истории самого заказа order_info.tpl @mars1an, здравствуйте. Может Вы подскажете?
В данном списке заказов нет перечня товаров, а значит нет sku. Для отображения sku, нужно для начала вывести все товары.
Если вы не владеете навыками, то никак. Вы же не предлагаете все сделать за вас? По указанной ссылке выше очень много информации как сделать и понять работу.
Не предлагаю) Прошу направить меня на путь ))) По ссылке я уже всё понял и всё реализовал. В контролере order для страницы order_list вообще не доступен вывод информации о товаре(
Вам нужно подсмотреть как в контроллере \catalog\controller\account\order.php начиная с public function info() { получают информацию по заказу и проделать все тоже самое, но для части index при этом учесть, что нужно добавить в массиив $data['orders'][] = array( а не просто отдельным массивом.
Можно и сюда, конечно, вывести артикула, но а если в заказе 10 - 20 или больше позиций или артикула длинные? Вот код ocmod'a, выводит колонку с артикулами товаров в заказе через запятую. Не проверял: Код: <file path="catalog/controller/account/order.php"> <operation> <search><![CDATA[$data['orders'][] = array(]]></search> <add position="before"><![CDATA[ $products = $this->model_account_order->getOrderProducts($result['order_id']); $sku_list = []; foreach ($products as $product) { $product_info = $this->model_catalog_product->getProduct($product['product_id']); if ($product_info['sku']) { $sku_list[] = $product_info['sku']; } } ]]></add> </operation> <operation> <search><![CDATA[$data['orders'][] = array(]]></search> <add position="after"><![CDATA[ 'sku_list' => implode(', ', $sku_list),]]></add> </operation> <operation> <search><![CDATA[$data['orders'] = array();]]></search> <add position="after"><![CDATA[ $this->load->model('catalog/product');]]></add> </operation> </file> <file path="catalog/view/theme/*/template/account/order_list.twig"> <operation> <search><![CDATA[<td class="text-right">{{ column_product }}</td>]]></search> <add position="after"><![CDATA[ <td class="text-left">{{ column_sku_list }}</td>]]></add> </operation> <operation> <search><![CDATA[<td class="text-right">{{ order.products }}</td>]]></search> <add position="after"><![CDATA[ <td class="text-right">{{ order.sku_list }}</td>]]></add> </operation> </file> <file path="catalog/language/ru*/account/order.php"> <operation> <search><![CDATA[$_['column_model']]]></search> <add position="before"><![CDATA[$_['column_sku_list'] = 'Список артикулов';]]></add> </operation> </file> <file path="catalog/language/en*/account/order.php"> <operation> <search><![CDATA[$_['column_model']]]></search> <add position="before"><![CDATA[$_['column_sku_list'] = 'SKU List';]]></add> </operation> </file>
вариант с выборкой артикулов сразу из базы Код: <file path="catalog/model/account/order.php"> <operation> <search><![CDATA[$query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname]]></search> <add position="replace"><![CDATA[//$query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname]]></add> </operation> <operation> <search><![CDATA[$query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname]]></search> <add position="after"><![CDATA[ $query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, o.date_added, o.total, o.currency_code, o.currency_value, GROUP_CONCAT(IF(LENGTH(p.sku), p.sku, NULL)) as sku FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) LEFT JOIN " . DB_PREFIX . "order_product op ON o.order_id = op.order_id LEFT JOIN " . DB_PREFIX . "product p ON op.product_id = p.product_id WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY o.order_id ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit); ]]></add> </operation> </file> <file path="catalog/controller/account/order.php"> <operation> <search><![CDATA[$data['orders'][] = array(]]></search> <add position="after"><![CDATA[ 'sku_list' => $result['sku'],]]></add> </operation> </file> <file path="catalog/view/theme/*/template/account/order_list.twig"> <operation> <search><![CDATA[<td class="text-right">{{ column_product }}</td>]]></search> <add position="after"><![CDATA[ <td class="text-left">{{ column_sku_list }}</td>]]></add> </operation> <operation> <search><![CDATA[<td class="text-right">{{ order.products }}</td>]]></search> <add position="after"><![CDATA[ <td class="text-right">{{ order.sku_list }}</td>]]></add> </operation> </file> <file path="catalog/language/ru*/account/order.php"> <operation> <search><![CDATA[$_['column_model']]]></search> <add position="before"><![CDATA[$_['column_sku_list'] = 'Список артикулов';]]></add> </operation> </file> <file path="catalog/language/en*/account/order.php"> <operation> <search><![CDATA[$_['column_model']]]></search> <add position="before"><![CDATA[$_['column_sku_list'] = 'SKU List';]]></add> </operation> </file> Если товаров будет много, то вызов нескольких десятков getProduct наверняка затормозит
Не работает. Немножко исправил, но не работает всё равно ( Код: <file path="catalog/controller/account/order.php"> <operation> <search><![CDATA[$data['orders'][] = array(]]></search> <add position="before"><![CDATA[ // $products = $this->model_account_order->getOrderProducts($result['order_id']); $products = $this->model_account_order->getOrderProducts($this->request->get['order_id']); $sku_list = []; foreach ($products as $product) { $product_info = $this->model_catalog_product->getProduct($product['product_id']); if ($product_info['sku']) { $sku_list[] = $product_info['sku']; } } ]]></add> </operation> <operation> <search><![CDATA[$data['orders'][] = array(]]></search> <add position="after"><![CDATA[ 'sku_list' => implode(', ', $sku_list),]]></add> </operation> <operation> <search><![CDATA[$data['orders'] = array();]]></search> <add position="after"><![CDATA[ $this->load->model('catalog/product');]]></add> </operation> </file> Потому что ругается на $products = $this->model_account_order->getOrderProducts($result['order_id']); Код: Fatal error: Uncaught Error: Call to a member function getProduct() on null и если после $data['orders'] = array(); я добавляю $this->load->model('catalog/product'); ругается на знак препинания