Opencart: картинка товара в истории заказов покупателя

oc153.image-account-order-information_.png

При просмотре истории заказов зарегистрированный покупатель теперь сможет видеть фото товаров. Фото товара используется текущее (т.е. может не совпадать с тем, которое было на момент покупки).

Делалось на текущей версии Opencart из репозитория (т.е. 1531+, commit:a023998).

На 1541 тоже работает.

Кто хочет видеть меньшие размеры фотографий, вместо предложенных config_image_category_width может использовать config_image_additional_width. Некоторые "за" и "против" можно увидеть в комментариях.

commit 8914dee796792b5662cd40638829fd52e4664289
Author: Ruslan Brest <rb@labtodo.com>
Date:   Mon Aug 6 08:11:06 2012 +0300
    Product image on account/order/info page
diff --git a/upload/catalog/controller/account/order.php b/upload/catalog/controller/account/order.php
index 41dd890..016b996 100644
--- a/upload/catalog/controller/account/order.php
+++ b/upload/catalog/controller/account/order.php
@@ -306,7 +306,8 @@ class ControllerAccountOrder extends Controller {
            $this->data['shipping_method'] = $order_info['shipping_method'];
            
            $this->data['products'] = array();
-           
+           $this->load->model('tool/image');
+
            $products = $this->model_account_order->getOrderProducts($this->request->get['order_id']);
 
            foreach ($products as $product) {
@@ -327,8 +328,15 @@ class ControllerAccountOrder extends Controller {
                    );                  
                }
 
+               if (empty($product['image'])) {
+                   $thumb = '';
+               } else {
+                   $thumb = $this->model_tool_image->resize($product['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
+               }
+
                $this->data['products'][] = array(
                    'name'     => $product['name'],
+                   'thumb'    => $thumb,
                    'model'    => $product['model'],
                    'option'   => $option_data,
                    'quantity' => $product['quantity'],
diff --git a/upload/catalog/model/account/order.php b/upload/catalog/model/account/order.php
index 605c1ff..e26012f 100644
--- a/upload/catalog/model/account/order.php
+++ b/upload/catalog/model/account/order.php
@@ -116,7 +116,7 @@ class ModelAccountOrder extends Model {
    }
    
    public function getOrderProducts($order_id) {
-       $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
+       $query = $this->db->query("SELECT op.*, p.image 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 . "'");
    
        return $query->rows;
    }
diff --git a/upload/catalog/view/theme/default/stylesheet/stylesheet.css b/upload/catalog/view/theme/default/stylesheet/stylesheet.css
index e0084eb..1110151 100644
--- a/upload/catalog/view/theme/default/stylesheet/stylesheet.css
+++ b/upload/catalog/view/theme/default/stylesheet/stylesheet.css
@@ -508,6 +508,11 @@ table.list .center {
    text-align: center;
    padding: 7px;
 }
+table.list .left > img
+{
+   float: left;
+}
+
 table.radio {
    width: 100%;
    border-collapse: collapse;
diff --git a/upload/catalog/view/theme/default/template/account/order_info.tpl b/upload/catalog/view/theme/default/template/account/order_info.tpl
index c94aa0c..e9843be 100644
--- a/upload/catalog/view/theme/default/template/account/order_info.tpl
+++ b/upload/catalog/view/theme/default/template/account/order_info.tpl
@@ -62,11 +62,14 @@
     <tbody>
       <?php foreach ($products as $product) { ?>
       <tr>
-        <td class="left"><?php echo $product['name']; ?>
+        <td class="left">
+          <img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" />
+          <?php echo $product['name']; ?>
           <?php foreach ($product['option'] as $option) { ?>
           
            <small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
-          <?php } ?></td>
+          <?php } ?>
+        </td>
         <td class="left"><?php echo $product['model']; ?></td>
         <td class="right"><?php echo $product['quantity']; ?></td>
         <td class="right"><?php echo $product['price']; ?></td>

Измененные файлы текущей версии Опенкарт (1.5.3.xyz). Как всегда, рекомендую не заменять, а сравнивать со своими (WinMerge.org, TotalCommander, Meld и т.п.):