Reading list Switch to dark mode

    Optimize your OpenCart code

    Updated 5 January 2017

    If you are an Opencart developer or you have gone through one of Opencart’s controller then there, you would find a repetitive code of line for fetching the language or performing some validations. Here, I’m providing some tips in order to minimise the code from several lines to 5-6 lines.

    Here, I’m covering a few examples to make your OPpencart code optimised.

    Here’s the example of language in the product page and the appropriate solution to it. You would find a code like this on many pages.

    $this->load->language('catalog/product');
    $data['text_enabled'] = $this->language->get('text_enabled');
    $data['text_disabled'] = $this->language->get('text_disabled');
    $data['text_none'] = $this->language->get('text_none');
    $data['text_yes'] = $this->language->get('text_yes');
    $data['text_no'] = $this->language->get('text_no');
    $data['text_plus'] = $this->language->get('text_plus');
    $data['text_minus'] = $this->language->get('text_minus');
    $data['text_default'] = $this->language->get('text_default');
    $data['text_option'] = $this->language->get('text_option');
    $data['text_option_value'] = $this->language->get('text_option_value');
    $data['text_select'] = $this->language->get('text_select');
    $data['text_percent'] = $this->language->get('text_percent');
    $data['text_amount'] = $this->language->get('text_amount');
    

    So, this code is can be made very minimised by using just these line of codes.

    $language_array = $this->load->language('catalog/product');
    
    foreach ($language_array as $language_key => $language_value) {
    	$data[$language_key] = $language_value;
    }

    or, just writing,

    Searching for an experienced
    Opencart Company ?
    Find out More
    $data = array();
    $data = array_merge($data, $this->load->language('catalog/product'));

    or, simply,

    $data = $this->load->language('catalog/product');

    Similarly, we have another code which delivers data to form whether for add or edit.

    if (isset($this->request->post['model'])) {
    	$data['model'] = $this->request->post['model'];
    } elseif (!empty($product_info)) {
    	$data['model'] = $product_info['model'];
    } else {
    	$data['model'] = '';
    }
    
    if (isset($this->request->post['sku'])) {
    	$data['sku'] = $this->request->post['sku'];
    } elseif (!empty($product_info)) {
    	$data['sku'] = $product_info['sku'];
    } else {
    	$data['sku'] = '';
    }
    
    if (isset($this->request->post['upc'])) {
    	$data['upc'] = $this->request->post['upc'];
    } elseif (!empty($product_info)) {
    	$data['upc'] = $product_info['upc'];
    } else {
    	$data['upc'] = '';
    }
    
    if (isset($this->request->post['ean'])) {
    	$data['ean'] = $this->request->post['ean'];
    } elseif (!empty($product_info)) {
    	$data['ean'] = $product_info['ean'];
    } else {
    	$data['ean'] = '';
    }

    This code can be made optimised by putting all the indexes in one array and then iterating the code for those set of values like this.

    $form_keys = array('model','sku','upc','ean','location','jan','isbn','mpn');// more values can be added to this array
    
    foreach ($form_keys as $form_value) {
    	if (isset($this->request->post[$form_value])) {
    		$data[$form_value] = $this->request->post[$form_value];
    	} elseif (!empty($product_info)) {
    		$data[$form_value] = $product_info[$form_value];
    	} else {
    		$data[$form_value] = '';
    	}			
    }

    Similar will be the case with getting config values. For that too, you can use the above technique.

    These were a few optimisations. Other techniques will be posted in the upcoming blogs.

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home