2016-10-04 288 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> 
相关问题