SKU в order_info.tpl

Тема в разделе "Общие вопросы", создана пользователем Dacha48, 16 сен 2015.

  1. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Здравствуйте!
    В административной части opencart 2.0.1.1 стоит задача вывести артикул (sku) в разделе Заказы после названия товара, который заказал клиент. Это будет удобно при сборке заказа.
    Дело в том, что в базе данных, в которую записывается информация о заказах попросту нет SKU, но есть id товара.
    Вопрос! Как сделать так, чтобы по id товара можно было вытащить артикул (sku) из базы данных продуктов и вставить в заказ?
    Спасибо!
     
    dzhavdet нравится это.
  2. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.340
    Симпатии:
    692
    Для того чтобы вытащить 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'],
    Далее в шаблоне, думаю сможете сами.
     
    Последнее редактирование: 16 сен 2015
    dzhavdet и Ален нравится это.
  3. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Далее в шаблоне 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
     
  4. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    тут ошибка... надо так 'sku' => $product['sku'],
     
    dzhavdet и Romans нравится это.
  5. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Тоже первым делом в глаза бросилось. Поменял, но это ничего не поменяло
     
  6. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    значит контроллер у вас в кеше модификатора. Обновите кеш
     
    dzhavdet нравится это.
  7. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Обновил((( не пашет
     
  8. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    вы не ту строку нашли, нужно именно вот эту, где то 1435 строка
    Код:
    'product_id'       => $product['product_id'],
    вся фишка в пробелах... а в тексте они съелись видимо
     
    dzhavdet и Romans нравится это.
  9. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Действительно! не там искал

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

    Всем огромное спасибо! Проблема решена!
     
  10. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    упс, проблема решена не полностью.. Не заметил сразу. При замене строчки в файле \admin\model\sale\order.php на указанную выше, в столбике количество, вместо количества заказанного товара, появляется количество товара на складе.
    Как бы это исправить?
     
  11. Vlad

    Vlad Эксперт

    Сообщения:
    3.907
    Симпатии:
    938
    А в шапку таблицы не добавили что то типа <td>SKU</td>
     
    dzhavdet нравится это.
  12. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Нет, это мне не нужно. Артикул выводится после названия товара и мне этого достаточно
     
  13. Vlad

    Vlad Эксперт

    Сообщения:
    3.907
    Симпатии:
    938
    а понял, попробуйте в запросе изменить на RIGHT JOIN
    или в запросе, * заменить на *,op.quantity
     
    dzhavdet нравится это.
  14. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Заменил в этой строчке
    $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 проблему это не решило.
    Где попробовать заменить звездочку не очень понял. Можно подробнее?
     
  15. Vlad

    Vlad Эксперт

    Сообщения:
    3.907
    Симпатии:
    938
    $query = $this->db->query("SELECT * FROM "
     
    dzhavdet нравится это.
  16. Dacha48

    Dacha48 Новичок

    Сообщения:
    19
    Симпатии:
    2
    Отлично! Помогло! Спасибо!
     
    dzhavdet нравится это.