2016-10-04 279 views
8

我想在opencart管理訂單頁面上添加自定義字段。在Opencart管理員'訂購信息'頁面上添加自定義字段

  1. 比較一樣,如果oc_order.order_idoc_custom_table.order_id =然後管理員順序列表上顯示oc_custom_table.comment值。
  2. 在管理訂單信息頁面顯示相同的東西。

我在admin_model_order.php頁面添加了一個自定義函數,其中包含所有所有查詢。

public function getCustomTable($order_id) { 
     $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "custom_table WHERE order_id = '" . (int)$order_id . "'"); 

     return $query->rows; 
    }

控制器頁面非常擁擠,我不知道在哪裏添加變量,以便顯示訂單特定的信息。

在語言中,我只需要定義像$ _text_custom_variable ='test'這樣的語言變量;對?和模板文件,我只是選擇一個地方來顯示值。

我使用的是Opencart 2.0版本。

[編輯]:好的,我可以通過引用其中一個vqmod來編寫VQMOD,但仍然無法提取數據。我得到錯誤Trying to get property of non-object

我試着先在訂單列表中添加數據。

<!--Template File --> 
<file name="admin/view/template/sale/order_list.tpl"> 
     <operation> 
      <search position="before"><![CDATA[ 
      <td class="text-left"><?php echo $order['date_added']; ?></td> 
      ]]></search> 
      <add><![CDATA[ 
      <td class="text-right"><?php echo 'CO'. $order['custom_orders'];?></td> 
      ]]></add> 
     </operation> 
     <operation> 
      <search position="before"><![CDATA[ 
      <td class="text-left"><?php if ($sort == 'o.date_added') { ?> 
      ]]></search> 
      <add><![CDATA[ 
      <td class="text-right">custom orders <i class="fa fa-shopping-cart"></i></td> 
      ]]></add> 
     </operation>   
    </file> 
<!--Model File --> 
    <file name="admin/model/sale/order.php"> 
     <operation> 
      <search position="before"><![CDATA[ 
      public function getTotalEmailsByProductsOrdered($products) { 
      ]]></search> 
      <add><![CDATA[ 
      public function getCustomOrderNumber($order_id) { 
      $custom_orders =''; 
      $query = $this->db->query("SELECT o.order_id, s.external_order_number, s.custom_order_number 
             FROM oc_order o 
             LEFT JOIN " . DB_PREFIX . "custom_orders s ON (s.external_order_number = o.order_id) 
             WHERE o.order_id = '" . (int)$order_id . "'"); 
       foreach ($query->rows as $row) { 

       $custom_orders += $this->custom_orders->$row['custom_orders']; 
       } 
       return $custom_orders; 
       } 


      ]]></add> 
     </operation>   
    </file> 
<!--Controller File --> 
    <file name="admin/controller/sale/order.php"> 
     <operation> 
      <search position="before"><![CDATA[ 
       'delete'  => $this->url->link('sale/order/delete', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL') 
      ]]></search> 
      <add><![CDATA[ 
       'custom_orders'  => $this->model_sale_order->getCustomOrderNumber($result['order_id']), 
      ]]></add> 
     </operation>   
    </file> 
+0

查看'/ admin/model/sale/order.php',因爲可能你不需要'public function getCustomTable($ order_id)'。如果您不熟悉Opencart模塊開發,則應聯繫開發人員並要求** vQmod **(不要更改Opencart的核心文件)。 – kanenas

+0

我實際上會創建vqmod,因爲我在編輯核心文件時不舒服。我想我需要這個功能,因爲我正在運行一個不同的查詢。我無法在opencart商店中找到任何這樣的vqmod,所以我想我試試看。 –

+0

嗨,我添加完整的文件。仍然沒有數據 –

回答

2

我自己弄明白了。這就是我所理解的。我可能錯了,但簡單的代碼工作。

我在做管理命令部分的更改,重要的是要弄清楚正在進行更改的方法。對於模型部分,使用適當的方法並添加查詢或編輯當前查詢。與控制器一樣。如果您嘗試顯示爲列表 - order_list(getList())或order_info(getInfo)部分。這對我來說可能很簡單,但對我來說,這是我的第一個,所以花了很多時間。

以下是VQMOD格式的工作代碼。

<modification> 
    <id><![CDATA[custom order list]]></id> 
    <version>1</version> 
    <vqmver>2.X</vqmver> 
    <author>customAuthor</author> 
    <file name="admin/language/english/sale/order.php"> 
     <operation> 
      <search position="after"><![CDATA[ 
      $_['text_order_id']       = 'Order ID:'; 
      ]]></search> 
      <add><![CDATA[ 
      $_['text_custom_order_number']       = 'custom:'; 
      ]]></add> 
     </operation> 
     <operation> 
      <search position="after"><![CDATA[ 
      $_['column_order_id']       = 'Order ID'; 
      ]]></search> 
      <add><![CDATA[ 
      $_['column_custom_order_number']       = 'custom <i class="fa fa-shopping-cart"></i>'; 
      ]]></add> 
     </operation> 

    </file> 
    <file name="admin/view/template/sale/order_list.tpl"> 

     <operation> 
      <search position="after"><![CDATA[ 
      <a href="<?php echo $sort_order; ?>"><?php echo $column_order_id; ?></a> 
      ]]></search> 
      <add><![CDATA[ 
      <!-- custom --> 
        <td class="text-left"> 
         <?php echo $column_custom_order_number; ?></a> 
        </td> 

      <!-- custom --> 
      ]]></add> 
     </operation> 
     <operation> 
      <search position="after"><![CDATA[ 
      <td class="text-right"><?php echo $order['order_id']; ?></td> 
      ]]></search> 
      <add><![CDATA[ 
      <td class="text-left"><?php if(!empty($order['cu_orders'])){echo "CU".$order['cu_orders'];} else{echo " ";} ?></td> 
      ]]></add> 
     </operation> 

    </file> 
    <file name="admin/view/template/sale/order_info.tpl"> 

     <operation> 
      <search position="after" offset="1"><![CDATA[ 
      <td>#<?php echo $order_id; ?></td> 
      ]]></search> 
      <add><![CDATA[ 
      <!-- Shopgate --> 
        <tr> 
         <td><?php echo $text_custom_order_number; ?></td> 
         <td><?php if (!empty($custom_order_number)) { ?> 
          <?php echo 'CU'.$custom_order_number; ?> 
          <?php } else { ?> 
          <?php echo " "; ?> 
          <?php } ?> 
         </td> 

        </tr> 

      <!-- Shopgate --> 
      ]]></add> 
     </operation>   
    </file> 
    <file name="admin/model/sale/order.php"> 
    <!-- getOrder() Modifications --> 
     <operation> 
      <search position="replace"><![CDATA[ 
      (SELECT CONCAT(c.firstname, ' ', c.lastname) FROM " . DB_PREFIX . "customer c WHERE c.customer_id = o.customer_id) AS customer 
      ]]></search> 
      <add><![CDATA[ 
      (SELECT CONCAT(c.firstname, ' ', c.lastname) FROM " . DB_PREFIX . "customer c WHERE c.customer_id = o.customer_id) AS customer, (SELECT s.custom_order_number FROM " . DB_PREFIX . "custom_orders s WHERE s.custom_order_number = o.order_id) AS custom_order_number 
      ]]></add> 
     </operation> 
     <operation> 
      <search position="after"><![CDATA[ 
      'order_id'    => $order_query->row['order_id'], 
      ]]></search> 
      <add><![CDATA[ 
      'custom_order_number'    => $order_query->row['custom_order_number'], 
      ]]></add> 
     </operation> 
     <!-- getOrderS() Modifications --> 
     <operation> 
      <search position="replace"><![CDATA[ 
      CONCAT(o.firstname, ' ', o.lastname) AS customer, 
      ]]></search> 
      <add><![CDATA[ 
      CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT s.custom_order_number FROM " . DB_PREFIX . "custom_orders s WHERE s.custom_order_number = o.order_id) AS custom_order_number, 
      ]]></add> 
     </operation> 

    </file> 
    <file name="admin/controller/sale/order.php"> 
    <!-- getList() Modifications --> 
     <operation> 
      <search position="after"><![CDATA[ 
       'order_id'  => $result['order_id'], 
      ]]></search> 
      <add><![CDATA[ 
       'cu_orders'  => $result['custom_order_number'], 
      ]]></add> 
     </operation> 
    <!-- getForm() Modifications --> 
     <operation> 
      <search position="after"><![CDATA[ 
       $data['store_id'] = $order_info['store_id']; 
      ]]></search> 
      <add><![CDATA[ 
       $data['custom_order_number'] = $order_info['custom_order_number']; 
      ]]></add> 
     </operation> 
     <!-- getInfo() Modifications --> 
     <operation> 
      <search position="after"><![CDATA[ 
       $data['text_order_id'] = $this->language->get('text_order_id'); 
      ]]></search> 
      <add><![CDATA[ 
       $data['text_custom_order_number'] = $this->language->get('text_custom_order_number'); 
      ]]></add> 
     </operation> 
     <operation> 
      <search position="after"><![CDATA[ 
       $data['store_name'] = $order_info['store_name']; 
      ]]></search> 
      <add><![CDATA[ 
       $data['custom_order_number'] = $order_info['custom_order_number']; 
      ]]></add> 
     </operation> 

    </file>   
</modification> 
相關問題