2016-10-04 4 views
8

Я хочу добавить настраиваемое поле на страницах заказа администратора.Добавить пользовательское поле на Opencart admin 'Order Info' страница

  1. сравнить значение, как если oc_order.order_id = oc_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.

[EDIT]: Хорошо, поэтому я смог написать 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, так как мне не удобно редактировать файлы ядра. Я решил, что мне нужна эта функция, так как я запускаю другой запрос. Я не смог найти таких vqmods в магазине opencart, поэтому я решил попробовать. –

+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> 
Смежные вопросы