Добавить пользовательское поле на странице «Информация о заказе» на странице Opencart

Я хочу добавить настраиваемое поле на страницах заказа администратора.

  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> 

    Related of "Добавить пользовательское поле на странице «Информация о заказе» на странице Opencart"

    Я смог сам это понять. И это то, что я понял. Я, возможно, ошибался, но простой код работал.

    Я делал изменения в разделе «Порядок администрирования», и важно выяснить, какой метод внесено в это изменение. Для раздела «Модель» используйте подходящий метод и добавьте запрос или отредактируйте настоящий запрос. То же самое с контроллером. Если вы пытаетесь отобразить в качестве списка – 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>