2016-10-04 11 views
8

मैं ओपनकार्ट व्यवस्थापक ऑर्डर पृष्ठों पर कस्टम फ़ील्ड जोड़ना चाहता हूं।ओपनकार्ट व्यवस्थापक 'ऑर्डर जानकारी' पृष्ठ पर एक कस्टम फ़ील्ड जोड़ें

  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' को परिभाषित करना होगा; सही? और टेम्पलेट फाइलें, मैं बस मूल्य प्रदर्शित करने के लिए एक जगह का चयन करें।

मैं ओपनकार्ट 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' पर एक नज़र डालें क्योंकि शायद आपको 'सार्वजनिक फ़ंक्शन getCustomTable ($ order_id)' की आवश्यकता नहीं है। यदि आप ओपनकार्ट मॉड्यूल विकास से परिचित नहीं हैं तो आपको डेवलपर से संपर्क करना चाहिए और ** vQmod ** (ओपनकार्ट की मूल फ़ाइलों को न बदलें) के लिए पूछना चाहिए। – kanenas

+0

मैं वास्तव में vqmod बनाने वाला था क्योंकि मैं कोर फ़ाइलों को संपादित करने में सहज नहीं हूं। मुझे लगा कि मुझे उस फ़ंक्शन की आवश्यकता है क्योंकि मैं एक अलग क्वेरी चला रहा हूं। मैं ओपनकार्ट स्टोर में ऐसे किसी भी vqmods को खोजने में सक्षम नहीं था इसलिए मैंने सोचा कि मैं इसे आज़माता हूं। –

+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> 
संबंधित मुद्दे