Back to Top

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