Home Blog Page 6

Adding a new position for different layout in OpenCart 2.2 like full width

A week early Opencart.com launched its new design and layout, and we were going through the website and found that it is using full-width layout but default OpenCart installation does not have full width in the content area. Thus we started to make the full-width position for different layout in OpenCart 2.2.

For OpenCart 3 full-width module visit below:
https://webocreation.com/opencart-free-extension-to-add-full-width-position-in-layout

Admin works

Find following code at admin/view/template/design/layout_form.tpl

<legend><?php echo $text_module; ?></legend>
<?php $module_row = 0; ?>
<div class="row">

Just below it, add the following code:

 <div class="col-lg-12 col-md-12 col-sm-12">
    <table id="module-column-full" class="table table-striped table-bordered table-hover">
        <thead>
            <tr>
                <td class="text-center">Full Width</td>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($layout_modules as $layout_module) { ?>
                <?php if ($layout_module['position'] == 'column_full') { ?>
                    <tr id="module-row<?php echo $module_row; ?>">
                        <td class="text-left">
                            <div class="input-group">
                                <select name="layout_module[<?php echo $module_row; ?>][code]" class="form-control input-sm">
                                    <?php foreach ($extensions as $extension) { ?>
                                        <optgroup label="<?php echo $extension['name']; ?>">
                                            <?php if (!$extension['module']) { ?>
                                                <?php if ($extension['code'] == $layout_module['code']) { ?>
                                                    <option value="<?php echo $extension['code']; ?>" selected="selected"><?php echo $extension['name']; ?></option>
                                                <?php } else { ?>
                                                    <option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
                                                <?php } ?>
                                            <?php } else { ?>
                                                <?php foreach ($extension['module'] as $module) { ?>
                                                    <?php if ($module['code'] == $layout_module['code']) { ?>
                                                        <option value="<?php echo $module['code']; ?>" selected="selected"><?php echo $module['name']; ?></option>
                                                    <?php } else { ?>
                                                        <option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
                                                    <?php } ?>
                                                <?php } ?>
                                            <?php } ?>
                                        </optgroup>
                                    <?php } ?>
                                </select>
                                <input type="hidden" name="layout_module[<?php echo $module_row; ?>][position]" value="<?php echo $layout_module['position']; ?>"/>
                                <input type="hidden" name="layout_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $layout_module['sort_order']; ?>"/>
                                <div class="input-group-btn">
                                    <a href="<?php echo $layout_module['edit']; ?>" type="button" data-toggle="tooltip" title="<?php echo $button_edit; ?>" target="_blank" class="btn btn-primary btn-sm">
                                        <i class="fa fa-pencil"></i>
                                    </a>
                                    <button type="button" onclick="$('#module-row<?php echo $module_row; ?>').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger btn-sm">
                                        <i class="fa fa fa-minus-circle"></i>
                                    </button>
                                </div>
                            </div>
                        </td>
                    </tr>
                    <?php $module_row++; ?>
                <?php } ?>
            <?php } ?>
        </tbody>
        <tfoot>
            <tr>
                <td class="text-left">
                    <div class="input-group">
                        <select class="form-control input-sm">
                            <?php foreach ($extensions as $extension) { ?>
                                <optgroup label="<?php echo $extension['name']; ?>">
                                    <?php if (!$extension['module']) { ?>
                                        <option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
                                    <?php } else { ?>
                                        <?php foreach ($extension['module'] as $module) { ?>
                                            <option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
                                        <?php } ?>
                                    <?php } ?>
                                </optgroup>
                            <?php } ?>
                        </select>
                        <div class="input-group-btn">
                            <button type="button" onclick="addModule('column-full');" data-toggle="tooltip" title="<?php echo $button_module_add; ?>" class="btn btn-primary btn-sm">
                                <i class="fa fa-plus-circle"></i>
                            </button>
                        </div>
                    </div>
                </td>
            </tr>
        </tfoot>
    </table>
</div>

Now on the same page find:

$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom

Then add #module-content-full just after that code above in two places and final JavaScript codes will look like below:

import App from './app.js';

const app = new App();

$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom, #module-content-full').delegate("select[name*='code']", 'change', function() {
  var part = this.value.split('.');
  if (!part[1]) {
    $(this)
      .parent()
      .find('a')
      .attr(
        'href',
        'index.php?route=extension/module/' +
          part[0] +
          '&token=<?php echo $token; ?>'
      );
  } else {
    $(this)
      .parent()
      .find('a')
      .attr(
        'href',
        'index.php?route=extension/module/' +
          part[0] +
          '&token=<?php echo $token; ?>&module_id=' +
          part[1]
      );
  }
});

$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom, #module-content-full').trigger('change');

Admin works completed now we have to work in front end or presentation layer.

Front end works:

First, make the content full Controller and .tpl file to show the modules:

Create a file named content_full.tpl at catalog\view\theme\default\template\common folder and place the code below:

<?php foreach ($modules as $module) { ?>
<?php echo $module; ?>
<?php } ?>

Similarly, create another file named content_full.php at catalog\controller\common folder and place the code below:

<?php
class ControllerCommonContentFull extends Controller {
 public function index() {
 $this->load->model('design/layout');

 if (isset($this->request->get['route'])) {
 $route = (string)$this->request->get['route'];
 } else {
 $route = 'common/home';
 }

 $layout_id = 0;

 if ($route == 'product/category' && isset($this->request->get['path'])) {
 $this->load->model('catalog/category');

 $path = explode('_', (string)$this->request->get['path']);

 $layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
 }

 if ($route == 'product/product' && isset($this->request->get['product_id'])) {
 $this->load->model('catalog/product');

 $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
 }

 if ($route == 'information/information' && isset($this->request->get['information_id'])) {
 $this->load->model('catalog/information');

 $layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
 }

 if (!$layout_id) {
 $layout_id = $this->model_design_layout->getLayout($route);
 }

 if (!$layout_id) {
 $layout_id = $this->config->get('config_layout_id');
 }

 $this->load->model('extension/module');

 $data['modules'] = array();
 $modules = $this->model_design_layout->getLayoutModules($layout_id, 'column_full');

 foreach ($modules as $module) {
 $part = explode('.', $module['code']);

 if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
 $module_data = $this->load->controller('extension/module/' . $part[0]);

 if ($module_data) {
 $data['modules'][] = $module_data;
 }
 }

 if (isset($part[1])) {
 $setting_info = $this->model_extension_module->getModule($part[1]);

 if ($setting_info && $setting_info['status']) {
 $output = $this->load->controller('extension/module/' . $part[0], $setting_info);

 if ($output) {
 $data['modules'][] = $output;
 }
 }
 }
 }
 return $this->load->view('common/content_full', $data);
 }
}

Now show this at the account/login layout

Open catalog\controller\account\login.php controller file and find the following line:

$data['column_right'] = $this->load->controller('common/column_right');

Then below it add following code:

$data['content_full'] = $this->load->controller('common/content_full');

Open catalog\view\theme\default\template\account\login.tpl file and find following code:

<?php echo $header; ?>

Below it adds the following line of code:

<?php echo $content_full; ?>

Ocmod file to add the full-width position to all layout at the front end:

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>Full Width Module Position</name>
    <version>1.0</version>
    <author>WebOCreation</author>
    <link>https://webocreation.com</link>
    <code>Full_Width_Position_1_1</code>
    <file path="catalog/controller/*/*.php">
        <operation>
            <search><![CDATA[
		    $data['column_left'] = $this->load->controller('common/column_left');
            ]]></search>
            <add position="before"><![CDATA[
            $data['content_full'] = $this->load->controller('common/content_full');
            ]]></add>
        </operation>
    </file>
    <file path="catalog/view/theme/*/template/*/*.tpl">
        <operation>
            <search><![CDATA[
		    <?php echo $header; ?>
            ]]></search>
            <add position="after"><![CDATA[
            <?php echo $content_full; ?>
            ]]></add>
        </operation>
    </file>
</modification>

Enjoy and let me know if there is any confusion so that we can move ahead to solve the problem.

Search terms: new module positions, opencart position, module positions, opencart layout, opencart layout tutorials

10 ways to speed up the Opencart 3 and 4 – website speed optimization

In this Opencart tutorial on website speed optimization, we are showing you 10 ways to speed up Opencart 3 and 4 which you can do from the free Opencart module and tips provided below. This helps to optimize website speed in Opencart and increase opencart page load speed.

Choose a better hosting provider and better cache module

Just choose a better hosting provider for Opencart, better is always expensive so choose as per your budget. Choose a good cache module for Opencart. If you are using the shared hosting then ask them which cache are they providing and use the cache module as per it, our is using LSCache so we use the LSCache module.

Defer all the extra CSS and JS at the footer.

In the module, we just defer all the JavaScript with ‘defer=”defer”‘, with this, the script will not run until after the page has loaded, better to use only for the external scripts.

<script defer='defer' src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>

For jQuery, we load at first because it is a building block so we load at the header and without defer. The following is the Ocmod XML which makes those changes. This is done with above downloaded module and works only for the Opencart 3, for opencart 4 we will provide it soon.

<file path="catalog/controller/common/header.php">
    <operation>
      <search>
        <![CDATA[
		      $data['links'] = $this->document->getLinks();
        ]]>
      </search>
      <add position="replace">
        <![CDATA[
        $data['links'] ="";
          //$data['links'] = $this->document->getLinks();
        ]]>
      </add>
    </operation>
    <operation>
      <search><![CDATA[
		$data['styles'] = $this->document->getStyles();
]]>      </search>
      <add position="replace"><![CDATA[
      $data['styles'] ="";
  //$data['styles'] = $this->document->getStyles();
]]>      </add>
    </operation>
  </file>
  <file path="catalog/controller/common/footer.php">
    <operation>
      <search><![CDATA[
		$data['scripts'] = $this->document->getScripts('footer');
]]>      </search>
      <add position="after"><![CDATA[
    $data['links'] = $this->document->getLinks();
    $data['styles'] = $this->document->getStyles();
    //$data['scripts'] = $this->document->getScripts();
]]>      </add>
    </operation>
  </file>
  <file path="catalog/view/theme/*/template/common/header.twig">
    <operation>
      <search><![CDATA[
<script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
]]>      </search>
      <add position="replace" offset="6"><![CDATA[
<!--<script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" />
<link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet">-->
]]>      </add>
    </operation>
    <operation>
      <search><![CDATA[
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
]]>      </search>
      <add position="replace" offset="3"><![CDATA[
<!--<script src="catalog/view/javascript/common.js" type="text/javascript"></script>-->
]]>      </add>
    </operation>
  </file>
  <file path="catalog/view/theme/*/template/common/footer.twig">
    <operation>
      <search>
        <![CDATA[{% for script in scripts %}]]>
      </search>
      <add position="before"><![CDATA[
<link href="catalog/view/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
<link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" />
<link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet">
    
{% for style in styles %} 
<link href="{{ style.href }}" type="text/css" rel="{{ style.rel }}" media="{{ style.media }}" />
{% endfor %}
{% for link in links %}
<link href="{{ link.href }}" rel="{{ link.rel }}" />
{% endfor %}
<script defer="defer" src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
]]>      </add>
    </operation>
  </file>

Use the image sizes properly

One idea to size the image is to use the ratio in all image settings. The best image ratio is 16:9. So, create images of size 1200px width and 675 px height and in all settings use a 16:9 ratio. Go to Admin >> Extensions >> Extensions >> Choose Theme as extension type >> Then edit your active theme >> Then enter the sizes for Images in the ratio of 16:9, like we are using it as:

Opencart image sizes width and height

Use the proper extension for the image:

JPEGs are for photographs and realistic images. PNGs are for line art, text-heavy images, and images with few colors. See the difference

PNG vs JPEG load time

You can easily convert the PNG to jpeg or jpeg to PNG online as well as on Photoshop. Like, we use https://www.photopea.com/ online tool to convert them which is easy and fast.

Convert Jpeg to Png

Optimize the image properly

Use the ImageOptim for properly optimizing the image. It optimizes as per the page speed insight. You can download the ImageOptim here. Right-click the image and open with ImageOptim and it will optimize and replace the image with an optimized one.

image optimizer opencart

Lazy loading of images:

With just adding loading=”lazy” in the image tag it will lazy load the images.

 <img loading="lazy" src="catalog/language/en-gb/en-gb.png" alt="English" title="English">

Created one module for lazy loading of the image:

<file path="catalog/view/theme/*/*/*/*.twig|catalog/view/theme/*/template/*/*/*.twig">
    <operation>
      <search>
        <![CDATA[<img ]]>
      </search>
      <add position="replace">
        <![CDATA[<img loading="lazy"   ]]>
      </add>
    </operation>
  </file>

GZIP for more efficient transfer to requesting clients. The compression level must be between 0 – 9.

Gzip Compression is an effective way to reduce the size of files. To enable the text compression in Opencart, go to Admin >> System >> Settings >> Server tab >> Add the “Output Compression Level”. The value should be 0-9, what we find out is most of the time it works above 5 but hit and trial is the only option that we see. With these, it minimizes the byte size of network responses and fewer bytes means the page loads fast.

Speed up the repeat visit by serving static assets with an efficient cache policy 

You can serve static assets with an efficient cache policy by adding the following code in the .htaccess file, these are just our ideas, you can make changes as per your requirement and this is code to add on the .htaccess for Apache server, if you are using nginx then you can configure similarly

# Set up 1 week caching on javascript and CSS
<FilesMatch “\.(js|css)$”>
ExpiresDefault A604800
Header append Cache-Control “proxy-revalidate”
SetOutputFilter DEFLATE
</FilesMatch>
# LBROWSERCSTART Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif “access 1 year”
ExpiresByType image/jpg “access 1 year”
ExpiresByType image/jpeg “access 1 year”
ExpiresByType image/png “access 1 year”
ExpiresByType image/x-icon “access 1 year”
ExpiresByType text/css “access 1 month”
ExpiresByType text/javascript “access 1 month”
ExpiresByType text/html “access 1 month”
ExpiresByType application/javascript “access 1 month”
ExpiresByType application/x-javascript “access 1 month”
ExpiresByType application/xhtml-xml “access 1 month”
ExpiresByType application/pdf “access 1 month”
ExpiresByType application/x-shockwave-flash “access 1 month”
ExpiresDefault “access 1 month”
</IfModule>
# END Caching LBROWSERCEND

Compress and minify the output

<file path="system/library/response.php">
        <operation>
            <search position="replace"><![CDATA[
    public function output() {
            ]]></search>
            <add><![CDATA[
    public function output() {
        if ($this->output) {
            $this->output = preg_replace("/(\n)+/", "\n", $this->output);
            $this->output = preg_replace("/\r\n+/", "\n", $this->output);
            $this->output = preg_replace("/\n(\t)+/", "\n", $this->output);
            $this->output = preg_replace("/\n(\ )+/", "\n", $this->output);
            $this->output = preg_replace("/\>(\n)+</", '><', $this->output);
            $this->output = preg_replace("/\>\r\n</", '><', $this->output);
        }
            ]]></add>
        </operation>
    </file>

Minify your HTML, CSS, and JS

<file path="system/library/template.php">
    <operation>
      <search><![CDATA[return $this->adaptor->render($template, $cache);]]></search>
      <add position="replace"><![CDATA[
    if (strpos($template, 'template/') !== false) {
        return $this->minify($this->adaptor->render($template, $cache));
    } else {
        return $this->adaptor->render($template, $cache);
    }
            ]]>      </add>
    </operation>
    <operation>
      <search><![CDATA[private $adaptor;]]></search>
      <add position="after"><![CDATA[
    /**
	 * @param	string	$body
	 * @return	string
 	*/
	public function minify($body) {
        $search = array(
            '/\>[^\S ]+/s',     // strip whitespaces after tags, except space
            '/[^\S ]+\</s',     // strip whitespaces before tags, except space
            '/(\s)+/s',         // shorten multiple whitespace sequences
        );
        $replace = array(
            '>',
            '<',
            '\\1',
            ''
        );
        $body = preg_replace($search, $replace, $body);
        return $body;
    }
            ]]>      </add>
    </operation>
  </file>

Index the database table

First backup your database.
Download the turbo.php, upload it where Opencart is installed, run YOURSITEURL/turbo.php and click the “Add Database Indexes” button, this will index all the database tables as per column name.

https://github.com/lilalaunesau/opencart-turbo/blob/master/turbo.php

Or you can run the following SQL directly in your database:

ALTER TABLE `oc_category` ADD INDEX ( `parent_id` ) ;
ALTER TABLE `oc_category` ADD INDEX ( `top` ) ;
ALTER TABLE `oc_category` ADD INDEX ( `sort_order` ) ;
ALTER TABLE `oc_category` ADD INDEX ( `status` ) ;
ALTER TABLE `oc_category_description` ADD INDEX ( `language_id` );
ALTER TABLE `oc_category_to_store` ADD INDEX ( `store_id` );
ALTER TABLE `oc_category_path` ADD INDEX ( `path_id` );
ALTER TABLE `oc_product` ADD INDEX ( `model` ) ;
ALTER TABLE `oc_product` ADD INDEX ( `sku` ) ;
ALTER TABLE `oc_product` ADD INDEX ( `upc` ) ;
ALTER TABLE `oc_product` ADD INDEX ( `manufacturer_id` ) ;
ALTER TABLE `oc_product` ADD INDEX ( `sort_order` ) ;
ALTER TABLE `oc_product` ADD INDEX ( `status` ) ;
ALTER TABLE `oc_product_option` ADD INDEX ( `option_id` ) ;
ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_option_id` ) ;
ALTER TABLE `oc_product_option_value` ADD INDEX ( `product_id` ) ;
ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_id` ) ;
ALTER TABLE `oc_product_option_value` ADD INDEX ( `option_value_id` ) ;
ALTER TABLE `oc_product_to_category` ADD INDEX ( `category_id` );
ALTER TABLE `oc_product_attribute` ADD INDEX ( `attribute_id` );
ALTER TABLE `oc_product_attribute` ADD INDEX ( `language_id` );
ALTER TABLE `oc_product_description` ADD INDEX ( `language_id` );
ALTER TABLE `oc_product_to_store` ADD INDEX ( `store_id` );
ALTER TABLE `oc_option` ADD INDEX ( `sort_order` ) ;
ALTER TABLE `oc_option_description` ADD INDEX ( `name` ) ;
ALTER TABLE `oc_option_value` ADD INDEX ( `option_id` ) ;
ALTER TABLE `oc_option_value_description` ADD INDEX ( `option_id` ) ;
ALTER TABLE `oc_url_alias` ADD INDEX ( `query` ) ;
ALTER TABLE `oc_url_alias` ADD INDEX ( `keyword` ) ;
ALTER TABLE `oc_url_alias` ADD INDEX ( `url_alias_id` );

Developer or Designer tasks: Ensure text remains visible during Webfont load

Follow the idea provided at https://developers.google.com/web/updates/2016/02/font-display. Just for your information, we tried that and in our case, we used font-display: swap, and only works. Something like below:

@font-face {
font-family: ‘Arvo’;
font-display: swap;
src: local(‘Arvo’), url(https://fonts.gstatic.com/s/arvo/v9/rC7kKhY-eUDY-ucISTIf5PesZW2xOQ-xsNqO47m55DA.woff2) format(‘woff2’);
}

Look for Critical CSS: Defer unused CSS, remove all unused CSS on a page, and try to target CSS for each page.

https://developers.google.com/web/tools/lighthouse/audits/unused-css

In this way, you can perform the Opencart website speed optimization, please let us know if you have any other tips and tricks. You can visit Opencart SEO to read around 25 best practices for Opencart SEO. Let us know if you have questions or concerns so that we can help you out. Till then please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook.

The whole code XML is below:

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>10 ways to speed up the Opencart site</name>
  <code>webocreationpagespeed100</code>
  <version>1.0.0</version>
  <author>Rupak Nepali</author>
  <link>https://webocreation.com</link>
  <file path="catalog/view/theme/*/*/*/*.twig|catalog/view/theme/*/template/*/*/*.twig">
    <operation>
      <search>
        <![CDATA[<img ]]>
      </search>
      <add position="replace">
        <![CDATA[<img loading="lazy"  ]]>
      </add>
    </operation>
  </file>
  <file path="system/library/response.php">
    <operation>
      <search position="replace"><![CDATA[
    public function output() {
            ]]>      </search>
      <add><![CDATA[
    public function output() {
        /*source compressor*/
        if ($this->output) {
            //$this->output = preg_replace('/<!--(.|\n)*?-->/', " ", $this->output);
            $this->output = preg_replace("/(\n)+/", "\n", $this->output);
            $this->output = preg_replace("/\r\n+/", "\n", $this->output);
            $this->output = preg_replace("/\n(\t)+/", "\n", $this->output);
            $this->output = preg_replace("/\n(\ )+/", "\n", $this->output);
            $this->output = preg_replace("/\>(\n)+</", '><', $this->output);
            $this->output = preg_replace("/\>\r\n</", '><', $this->output);
        }
            ]]>      </add>
    </operation>
  </file>
  <file path="catalog/controller/common/header.php">
    <operation>
      <search>
        <![CDATA[
		      $data['links'] = $this->document->getLinks();
        ]]>
      </search>
      <add position="replace">
        <![CDATA[
        $data['links'] ="";
          //$data['links'] = $this->document->getLinks();
        ]]>
      </add>
    </operation>
    <operation>
      <search><![CDATA[
		$data['styles'] = $this->document->getStyles();
]]>      </search>
      <add position="replace"><![CDATA[
      $data['styles'] ="";
  //$data['styles'] = $this->document->getStyles();
]]>      </add>
    </operation>
  </file>
  <file path="catalog/controller/common/footer.php">
    <operation>
      <search><![CDATA[
		$data['scripts'] = $this->document->getScripts('footer');
]]>      </search>
      <add position="after"><![CDATA[
    $data['links'] = $this->document->getLinks();
    $data['styles'] = $this->document->getStyles();
    //$data['scripts'] = $this->document->getScripts();
]]>      </add>
    </operation>
  </file>
  <file path="catalog/view/theme/*/template/common/header.twig">
    <operation>
      <search><![CDATA[
<script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
]]>      </search>
      <add position="replace" offset="6"><![CDATA[
<!--<script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" />
<link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet">-->
]]>      </add>
    </operation>
    <operation>
      <search><![CDATA[
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
]]>      </search>
      <add position="replace" offset="3"><![CDATA[
<!--<script src="catalog/view/javascript/common.js" type="text/javascript"></script>-->
]]>      </add>
    </operation>
  </file>
  <file path="catalog/view/theme/*/template/common/footer.twig">
    <operation>
      <search>
        <![CDATA[{% for script in scripts %}]]>
      </search>
      <add position="before"><![CDATA[
<link href="catalog/view/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
<link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" />
<link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet">
{% for style in styles %} 
<link href="{{ style.href }}" type="text/css" rel="{{ style.rel }}" media="{{ style.media }}" />
{% endfor %}
{% for link in links %}
<link href="{{ link.href }}" rel="{{ link.rel }}" />
{% endfor %}
<script defer="defer" src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="catalog/view/javascript/common.js" type="text/javascript"></script>
]]>      </add>
    </operation>
  </file>
  <file path="system/library/template.php">
    <operation>
      <search><![CDATA[return $this->adaptor->render($template, $cache);]]></search>
      <add position="replace"><![CDATA[
    if (strpos($template, 'template/') !== false) {
        return $this->minify($this->adaptor->render($template, $cache));
    } else {
        return $this->adaptor->render($template, $cache);
    }
            ]]>      </add>
    </operation>
    <operation>
      <search><![CDATA[private $adaptor;]]></search>
      <add position="after"><![CDATA[
    /**
	 * @param	string	$body
	 * @return	string
 	*/
	public function minify($body) {
        $search = array(
            '/\>[^\S ]+/s',     // strip whitespaces after tags, except space
            '/[^\S ]+\</s',     // strip whitespaces before tags, except space
            '/(\s)+/s',         // shorten multiple whitespace sequences
        );
        $replace = array(
            '>',
            '<',
            '\\1',
            ''
        );
        $body = preg_replace($search, $replace, $body);
        return $body;
    }
            ]]>      </add>
    </operation>
  </file>
</modification>

Administrator Theme editor in Opencart 3.0.2.0 default theme

In OpenCart version 3, we can see the theme editor features where the administrator can directly change the code in the template of the default theme from the admin dashboard. While we test on Opencart version 3.0.3.2, we were able to edit only the default template, if we activate another theme, we still keep seeing the default theme’s template files, so it looks like it is working only for the default theme. So, if you guys are using the default theme then you can make the code changes directly from the admin, with no need for FTP or SFTP configuration.

Steps to make the theme editor

Login to the admin and then navigate to Design >> Theme Editor, where you see a dashboard like below image:

Theme Editor Opencart

You can choose the store that you like to make changes to, here we choose the default store. You can see the theme history which lists out all the files changed. In the template section, you can select the folder and it will show the files where you can edit the file. You can get more details about the files and folders in the Opencart video. Let’s click the account, it will show lists of twig template files in that theme folder, once we click on the account we see these twig files list when we click on the account.twig then we see code on the right.

Code changes in Opencart

We like to hide the breadcrumbs so in the code we add style=”display:none;” like above, and see in the front end the breadcrumbs are hidden on the account page. If you see an error then you can click the Reset button which will change to the default code.

Opencart theme editor

In this way, you can make the code change directly from the admin section. If the code changes are not seen don’t forget to clear the theme and SASS cache from the dashboard, likewise go to Extensions >> Modifications and then click the refresh button. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us on our Twitter account @rupaknpl. Subscribe to our YouTube channel for Opencart tutorials, and click to see all Opencart user manuals.

Opencart set up taxes with geocodes US tax for California residents 8.75%

In this Opencart tutorial, we show you how to set up taxes with geocodes in Opencart for each product by giving you an example of US taxes for California residents 8.75%. Setting up taxes in OpenCart is essential to ensure compliance with local regulations and accurate pricing for your customers. With OpenCart’s geo zones feature, you can easily configure tax rates based on the geographic locations of your customers. Here’s a step-by-step guide to setting up taxes in OpenCart using geo zones.

Why Use Geo Zones for Tax Setup?

Geo zones in OpenCart allow you to apply specific tax rates based on customer location, which is especially helpful if you operate across multiple regions or countries with varying tax rules. By customizing tax rates per region, you can:

  1. Ensure Accurate Tax Calculation: Meet tax regulations based on customer locations.
  2. Simplify Tax Management: Easily manage and update tax settings as needed.
  3. Enhance Customer Experience: Provide transparency in pricing with region-specific tax rates.

Step-by-Step Guide to Setting Up Taxes with Geo Zones in OpenCart

Let’s dive into setting up taxes in OpenCart by using geo zones.

Step 1: Define Geo Zones for Target Regions

  1. Go to the OpenCart Admin Dashboard.
  2. Navigate to System > Localization > Geo Zones.
  3. Click Add New to create a geo zone.
  4. Fill in the Geo Zone Name (e.g., “US State Tax” or “EU VAT Zone”) and add a Description.
  5. Under the Geo Zone tab, click Add Geo Zone.
    • Select Country and Region/State to specify the areas this tax rate applies to.
  6. Save the geo zone.

Repeat this step for each location where you need to apply specific tax rates.

Step 2: Create Tax Classes for Different Products

Tax classes help apply tax rates to various product types. To create tax classes:

  1. Go to System > Localization > Tax Classes.
  2. Click Add New to create a tax class.
  3. Enter the Tax Class Title (e.g., “Standard Tax,” “Reduced Tax”).
  4. In the Tax Rate section, specify:
    • Priority: Set a priority level if you have multiple tax rates.
    • Geo Zone: Select the geo zone to apply to this tax rate.
  5. Save the tax class.

Step 3: Define Tax Rates

  1. Go to System > Localization > Tax Rates.
  2. Click Add New to create a new tax rate.
  3. Fill in the following:
    • Tax Name: Give it a descriptive name, like “California Sales Tax.”
    • Rate: Enter the percentage of the tax rate (e.g., “8.5”).
    • Type: Select Percentage for most tax setups.
    • Geo Zone: Choose the geo zone you created earlier.
  4. Save the tax rate.

Repeat for each tax rate that corresponds to your geo zones.

Step 4: Apply Tax Classes to Products

  1. Go to Catalog > Products in the OpenCart Admin Dashboard.
  2. Edit the product to which you want to apply the tax class.
  3. In the Data tab, locate the Tax Class dropdown.
  4. Select the appropriate tax class (e.g., “Standard Tax” or “Reduced Tax”).
  5. Save your changes.

Step 5: Configure Store Tax Settings

For OpenCart to apply the correct tax rates based on geo zones, check your tax settings:

  1. Go to System > Settings > Edit for your store.
  2. In the Options tab, set the following:
    • Display Prices With Tax: Choose Yes if you want product prices to include taxes.
    • Calculate Taxes Based On: Select the Shipping Address or Payment Address depending on your tax regulations.
    • Use Store Tax Address: Choose whether to use the store’s location for tax calculations on non-shipping orders.

Step 6: Test the Tax Setup

Place a test order to confirm that taxes are calculated correctly based on the customer’s address. Ensure that products display tax-inclusive prices (if configured), and verify that different addresses in your geo zones reflect the accurate tax rates.

Need to set up US Taxes for California residents where CA Tax is 8.75%.

  • Login to Admin
  • Go to Left Menu >> System >> Localisation >> Geo Zones >> Click Add button, then fill as in the image below:
Geo zones set up
  • Go to Left Menu >> System >> Localisation >> Taxes >> Tax Rates >> Click Add button, then fill as in the image below:
Tax rates setup in Opencart
  • Go to Left Menu >> System >> Localisation >> Taxes >> Tax Classes >> Click Add button, then fill as in the image below:
Tax classes setup in Opencart
  • Please choose the Payment Address or Shipping Address as per your need.
  • Now go to Catalog >> Products >> Add/Edit your product >> Choose the Tax Class:
Tax class setup for product
  • In the checkout section tax is applied when your payment address’s state is California:
Tax in shopping cart Opencart

Conclusion

Configuring taxes in OpenCart using geo zones allows you to automate tax calculations accurately across various regions. By following this setup, you ensure compliance and transparency with customer pricing, enhancing both store management and customer experience. With OpenCart’s flexibility, you can adapt to regional tax changes easily and continue to scale your business globally. In this way, you can set up taxes with geocodes in Opencart. Let us know if need any support. Hope you liked this post, please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook.

Error: A theme has not been assigned to this store! Opencart

The error “A theme has not been assigned to this store!” in OpenCart usually means that a theme is not set for the current store, often due to configuration issues after a fresh installation or update.

Opencart Theme Error

Here’s how to resolve it

Assign a Theme to the Store:

  • Go to the OpenCart Admin Dashboard.
  • Navigate to System > Settings.
  • Select the store you are configuring (e.g., Default Store).
  • Go to the Theme tab.
  • Ensure that a theme (e.g., Default or your custom theme) is selected in the “Theme Directory” dropdown.
  • Click Save to apply the settings.

    Sometimes you will see the above theme error and when you log in to the admin section you will see an error notice like: “Notice: date_default_timezone_set(): Timezone Id is invalid”. In that case, you can just set the timezone in the local tab of settings.

    Opencart timezone invalid

    Clear the Cache:

    • Go to Dashboard > Extensions > Modifications.
    • Click on the Refresh button to clear and rebuild the modification cache.
    • Next, navigate to Dashboard > Developer Settings.
    • Under Theme and SASS, click Clear Cache.

    Verify the Theme Files:

    • Ensure that the theme files are correctly uploaded to the /catalog/view/theme/ directory.
    • If you’re using a custom theme, verify that its files are correctly installed and compatible with your OpenCart version.

    Database Check (if required):

    1. If the above steps don’t resolve the issue, you may want to check your OpenCart database.
    2. In the oc_setting table (prefix may vary), look for the key config_theme under your store’s settings, and ensure it matches the directory name of your theme in /catalog/view/theme/.

    After these steps, your store should be assigned a theme, and the error should be resolved. Let us know if you encounter any further issues! lease let us know if you have any kind of projects, you can email us at webocreation.com@gmail.com. Please subscribe to our YouTube Channel and get more Opencart free extensions and tutorials. You can also find us on Twitter and Facebook.

    How to add an Analytics extension in Opencart 4? Third-party JS free Opencart extension

    With the launch of Opencart 4 we did not find the Google Analytics Opencart 4 module that we used to have in Opencart 3, so to fulfill that requirement we created a free Opencart extension called Third Party JS extension where you can add the Javascript code provided by third-party like Google Analytics, Facebook pixel, etc and add it on this extension.

    How to install the Opencart 4 module?

    Log in to Admin >> Extensions >> Installer >> Click the Upload button and select the file that ends with .ocmod.zip. In the above download example, it is third_party_js.ocmod.zip. Once it is installed you will see the “Third Party JS” in the installed extensions.

    Once you uploaded the zip file, you click the install green icon to install the extension.

    Installed extensions Opencart 4

    Once you clicked the install button, your extension is installed successfully

    opencart 4 extension installation success

    Once you see the success message. Now you can go to Admin >> Extensions >> Extension. Then, choose the extension type “Analytics”  and click the install green install button.

    Read More: Add HTML, google analytics, tag manager, and third-party JS code in Opencart

    google analytics opencart 4

    Once you click the install button, you can edit the store and you will see a form where you can install the third-party JavaScript like below and enable the status and click the blue save button.

    Google Analytics Opencart 4 extension

    After clicking the save, now the JavaScript code is shown at the head tag.

    code added in the header Opencart 4

    In this way, you can install the Opencart 4 extensions and use our free Opencart 4 analytics extension for your website.  Hope you liked this post, let us know if you have any questions or suggestions, please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook. Enjoy Google Analytics Opencart 4 module!

    How to add reports in the admin dashboard of Opencart 4?

    As we were in the process of upgrading the Opencart from 3 to 4, we complete the upgrade and saw our admin dashboard reports are all gone, and it took us some time to figure out where we can enable the dashboard reports. Here is our finding which was so simple:

    Empty Dashboard:

    Empty dashboard

    Dashboard reports

    Every report is created as the dashboard extension, so to add the reports, go to admin >> Extensions >> Extensions >> Filter out with Dashboard >> Install all the extensions needed >> Edit it >> Give the width >> Enable the status >> Add sort order where you want to show and Save. As we need all of the reports so we enable all of the Dashboard reports.

    Dashboard extensions reports

    Read More: Dashboard extensions details of Opencart 4

    With the above settings, you will be able to see reports like below:

    Reports admin dashboard

    In this way, you can enable or disable the required admin dashboard reports. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl and subscribe to our YouTube channel for opencart tutorials.

    Email is not working in Opencart – ways to solve

    As we see some Opencart users are complaining that their email is not working in Opencart and are not able to see the Contact Us form email, the order email, or other email updates. We have listed some of the ways to fix them.

    Way to fix Email Deliveries that are in Cpanel

    Login to the Cpanel and see the Email section

    Opencart Email Deliverability

    In the Email Deliverability listing you can see if there are issues to fix or if everything is valid

    Email Deliverability issues

    If problems exist (DKIM and SPF) etc, then click the Manage and fix things that are shown in the lists.

    Email delivery DNS fix

    Go to your Domain registrar and enter those values, for example:

    DNS fixes

    Then, check the Email Deliverability again and check everything is valid.

    DNS Email Valid

    With this, the email should start sending.

    Email code in Opencart

    Whenever the Mail class is instantiated like below and called the send method then you can say Opencart is sending an email. Example email code is:

    mail = new Mail($this->config->get('config_mail_engine'));
    $mail->parameter = $this->config->get('config_mail_parameter');
    $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
    $mail->smtp_username = $this->config->get('config_mail_smtp_username');
    $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
    $mail->smtp_port = $this->config->get('config_mail_smtp_port');
    $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
    
    $mail->setTo($customer_info['email']);
    $mail->setFrom($this->config->get('config_email'));
    $mail->setSender($store_name);
    $mail->setSubject($subject);
    $mail->setText($this->load->view('mail/customer_approve', $data));
    $mail->send();

    You can find these codes in admin/controller/mail/forgotten.php, catalog/controller/mail/register.php, catalog/controller/mail/order.php, catalog/controller/mail/affiliate.php, etc.

    Check the email settings again

    Login to admin of Opencart >> System >> Settings >> Edit the store that email is not sending >> Click the Store tab >> Check if the email is set or not.

    Read more About other common issues in Opencart and ways to solve it

    This email is the reply-to email.

    Now, click the Mail tab, here are the settings to enter the email details. 

    Mail Engine: You can choose either Mail or SMTP in the Mail engine. Only choose ‘Mail’ unless your host has disabled the PHP mail function.

    Mail: When you choose the Mail option, enter your email in the Mail Parameters. It is always best to enter the email of your website rather than using Gmail email or other email clients. If you send emails from other emails than your website then receivers can take it as spam. Like in the example: we use info@webocreation.com. If you choose Mail then you don’t need to enter the SMTP details.

    Sometimes, you need to enter the Mail Parameters as -f info@webocreation.com

    SMTP:

    You can use third-party email services which provide SMTP to send an email. All SMTPs provide the following information

    1. SMTP Hostname
    2. SMTP Username
    3. SMTP Password
    4. SMTP Port

    Here is one example, one of the SMTP providers provides the following information:

    Enter the above SMTP settings in the Opencart by choosing the Mail engine as SMTP

    Every SMTP provider gives you the above information. The only thing is it can cost you extra.

    Check Mail Alerts settings

    Go to admin >> System >> Settings >> Edit store >> Mail tab >> Mail Alerts section

    If you did not check the checkboxes for the one that you want to be alerted then these need to be checked.

    Check all Events are set properly for Opencart 3

    From Opencart 3.0+ all mail needs to be set as Events in Opencart. Go to admin >> Extensions >> Events and check if all of the below events are added or not.

    With the above setting, an email should be sent if all servers’ settings are good.

    Read more: Maintenance (Backup/Restore, Uploads, and Error Logs) – Opencart user manual

    Server checking for email issues

    Check for MX records:

    Check if MX records are added for your domain or not. You can look for an online tool that checks for MX records. Here is one example:

    If you did not have the MX records then you need to add them.

    Once your MX records are added, now is time to check for Email Routing

    If cPanel:

    If you are sending email from your server and you have chosen Mail as “Mail Engine” then check for Email Routing in the server and see whether the Email routing is configured to Local Mail Exchanger. But if you are using SMTP then the Email routing needs to be configured to Remote Mail Exchanger.

    Check the email quota of your server

    Most of the email servers have some email quota so if you reach that number they block sending the email, so verifying with the hosting provider is a way to check as well.

    Sometimes you get an email like the one below from your hosting provider.

    This message was created automatically by mail delivery software.
    A message that you sent could not be delivered to one or more of its
    recipients. This is a permanent error. The following address(es) failed:
    Domain ****.com has an outgoing mail suspension.  Message discarded.

    Check if your hosting provider blocked the email services

    Sometimes hosting providers or servers block the email services and even block the third-party services or SMTP, they need to unblock the mail services, so ask them to unblock it.

    See one example they have posted on their website:

    Upon checking the logs, I see that the email services were suspended for sending more than 1000 messages in the past 24h on November 19th, 2020 which was 2 years ago. We do have an email sending limit on our shared/reseller hosting which is 500 emails per hour, and 1000 emails per day for an account in which exceeding the limit causes email services to suspend.

    Check your mail filter settings

    If you don’t receive mail from a particular email you can whitelist it in your mail filter and check the spam folder as well.

    In this Opencart user manual, we went through email not sending issues and ways to solve them. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl, and subscribe to our YouTube channel for an opencart tutorial. Click to see all Opencart user manuals.

    How to create an ebook website to sell PDFs, mp3, digital products in Opencart?

    In Opencart, you can easily set up an eCommerce website to sell ebooks, pdfs, music, video, software application, or other digital products and on successful completion of order, they can download the digital products directly from the download section of Opencart. The files or zip can be uploaded to the server, assigned to the product and registered customers can order them and download the files of the product and get the instant download.

    Following are the steps to create digital products in Opencart, here we take an example of PDFs

    Add/Upload the download file

    1. Go to Admin >> Catalog >> Downloads

      Add Downloadable product
    2. Click the blue plus button, and you will see a form where you can upload your digital assets in our example it is PDF
      Opencart PDF upload
      Enter the “Download Name”. In the Filename, click the upload and upload the PDF file, a successful message is shown and the filename is auto generated. With this auto generated filename and the upload folder is outside of the access folder, it is secured for easy access. You can enter the mask name as per your requirement, better to have the extension, where in our case is “.pdf”. It is recommended that the filename and the mask are different to stop people trying to directly link to your downloads.
    1. Click Save button, with this your download is ready to assign to the product.
      Download Added

    Add product and assign the download

    • Go to admin >> Catalog >> Products >> Click add blue button 
    • Enter the Product details, like Product name, Description, Meta Tag Title etc
      Product add eBook

    • In the Data tab, enter more details of the book like Model, ISBM, Prices, Tax Class, Quantity can be 1, Subtract Stock to No, Requires Shipping to No.

    ** It is better to make the “Requires Shipping” to No so they don’t need to enter the shipping addresses when they order only the digital products.

    Data ISBN PDF

    Likewise, enter other details as required.

    • Now, in the Links tab, select Manufacturer, enter the Categories, Stores and the main thing is you need to add the Downloads. Start typing the downloadable product name and select the right download.
      Links Download select to sell

    You can enter the Related Products, and you can enter other details as required. You can add images etc.

    • Click Save and the Product is live. You can see the product like below:
      Opencart PDF product detail

    How to make instant downloads available for digital products?

    There are two settings you need to set to make the instant downloads available once the order is successful or complete.

    Read more: Order statuses management

    First, go to admin >> System >> Settings >> Edit Store >> then Option tab >> scroll to the Checkout section where you will see the “Complete Order Status” field, and check the “Complete” option.

    Complete Order status instant download

    Second thing, you need to set the complete status of the Payment module to complete.

    Here is an example of Paypal Payments Standard Order status, the Completed Status is selected to Complete.

    Learn more: Create your own Single Instance Opencart module

    Paypal Checkout Order Status

    Likewise, another example is of 2Checkout payment module, you need to select Order Status to Complete for instant download:

    2checkout instant download

    Once, these two are set to complete then when payment is successful then the download is instantly available.

    How will customers order the pdf or digital products?

    Customers visit the product detail page, click “Add to Cart”, checkout, enter the details. As shipping is not required, the checkout steps will not show the shipping address section.

    Checkout steps for PDF purchase

    Once you entered the billing address, select the Payment Method and confirm the order and make the payments then you will see a success message like below:

    order success

    If the store sets the order status the customer’s order must reach before they are allowed to access their downloadable products as complete and the payment successfully will create the order status as complete then the download is available instantly.

    The customer can click the downloads link on the success page, or they can click the download links in the menu or profile dashboard, and get access to their downloads.

    access downloads

    They can click the download and access the PDF instantly after the order is successful.

    Things to consider

    • Guest checkout is not available for download products in Opencart. Allow customers to checkout without creating an account. This will not be available when a downloadable product is in the shopping cart.
    guest checkout download

    In this way, we can set up a digital product store in the Opencart and sell pdfs, mp3, images, zip, etc. Please don’t forget to post your questions or comments so that we can add other topics as you required. You can follow us at our Twitter account @rupaknpl and subscribe to our YouTube channel for opencart tutorials and see lists of posts for the Opencart user manual. Happy learning.

    Currencies management in the Opencart 3 and 4 version with auto-update

    Opencart 3 and 4 support multi-currencies so with Opencart we can sell in any currency, anywhere in the world. Go to admin >> System >> Localization >> Currencies where you will see the currencies available for use in the storefront. In the store by default, there are Euro, Pound, and US dollars but only the US dollar is enabled by default.

    Default currencies in Opencart

    The default currency is set to a value of 1. When you enter the product’s price we need to enter it as per the default currency with value 1. Every value of the currency will be relative to this value as per the above image the value of the US Dollar is 1.0, and the Euro is calculated to be 0.85500002. The frontend price is calculated and converted as per the currency value which is 1. If Auto Update Currency is enabled then the currency is auto-updated.

    Don’t confuse with default currency and value 1 of currency

    Here, you need to enter the price worth with the currency value equal to 1. Don’t enter the default currency value; you need to enter the price of the currency value equal to 1. They are mostly the same, but be sure the currency value is 1 and it is the default currency.

    Product price currency

    How do we add the currency in Opencart 3 & 4?

    To add the currency, go to admin >> System >> Settings >> Localization >> Currencies and click the Add New blue button and you will see the form below:

    Default currency form Opencart

    Currency Title: Enter the name of the currency that you want to show in the front end.
    Code: The ISO currency code, you can get the currency code at https://www.ibm.com/support/knowledgecenter/en/SSZLC2_7.0.0/com.ibm.commerce.payments.developer.doc/refs/rpylerl2mst97.htm
    Symbol Left: You can find the currency symbol at https://www.xe.com/symbols.php and if you want to show the symbol to the left of the price of the product then add it here.
    Symbol Right: You can find the currency symbol at https://www.xe.com/symbols.php and if you want to show the symbol to the right of the price of the product then add it here.
    Decimal Places: The number of decimal places that you want to show in the front end.
    Value: The default currency will be set to a value of 1 and other currency will be converted value.
    Status: You can enable or disable the currency in the front end.

    How do we change the default currency in Opencart 3 & 4?

    To change the default currency in Opencart 3 or 4, go to admin >> System >> Settings >> Edit the store >> then click the local tab and in the currency field change the currency that you want to make the default. Then, set your store to automatically update currencies. After that clear your browser cache to see the change and reset your existing cookies. Now your default currency in the Opencart 3 or 4 is set.

    default currency and auto update currencies of Opencart

    How do auto-update currency exchange rates work in Opencart 4?

    In Opencart 4, by default, there are auto-update currencies as per the currency rate converter engine “European Central Bank Currency Converter”. To enable it, log in to admin >> System >> Settings >> Edit the store >> Local tab and enable Auto Update Currency field and select the Currency Rate Engine and Save. Now, your store is set to automatically update currencies daily.

    Currency rate converter engine

    As we see Opencart is using this URL to get the currencies’ value https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml, as seeing the values it supports only some currencies so auto-update currencies may not be supported for all currencies.

    Currencies auto update

    Fix the cron job so that it gets updated daily

    If you are seeing the auto-update is not working then your corn job is not running, make sure it is running daily. To check the status of the cron jobs, log into admin >> Extensions >> Cron Jobs and see the date modified and you can run the cron jobs from there as well.

    cron jobs opencart

    In this way, you can manage the currencies on the Opencart store. Please don’t forget to post your questions or comments so that we can add extra topics, free modules, or opencart tutorials that we need to develop which helps to develop quality. You can follow us on our Twitter account @rupaknpl and subscribe to the YouTube user opencart tutorial.

    OpenCart vs Shopify: Which E-commerce Platform to Choose?

    Selecting the best eCommerce platform when establishing an online store is essential to the success of your enterprise. With so many possibilities, two prominent solutions that frequently stand out are OpenCart and Shopify. Both systems provide distinctive features catered to various customer groups and particular requirements for eCommerce development. However, the question is; how do you select the one that will be suitable for your business organization? In this post, we will help you understand OpenCart vs. Shopify and indicate the pros and cons of these tools.

    What is OpenCart?

    OpenCart is one of the best features that business people can use to create an online store since it is open source. Because of these attributes, it has a large number of developers and merchants with some level of technical expertise required to develop add-ons for the application.

    Features of OpenCart

    • Open-source platform: OpenCart is an open source that can be downloaded and installed for free meaning that it will not burden any business.
    • Multi-store functionality:  It allows you to work with multiple stores from a single pointing interface
    • Extensions marketplace: You have access to thousands of modules and themes that can help improve your store.
    • Supports multiple languages and currencies:  This makes it a suitable option for businesses that conduct their operations in the global market.
    • Customizable: As a matter of fact, it is an open-source software that fact gives developers complete control of customization as well as design.

    Advantages of Using OpenCart for E-commerce

    • Cost-effective: Being an open-source software, OpenCart is free to download which means you only need to incur expenses on hosting as well as the specific modules that you might consider relevant for your store.
    • Customizable:  It can create a range of applications that are unique and provide opportunities primarily for the developers.
    • Multi-store management: OpenCart provides an option of running several stores through different administering panels.
    • SEO-friendly:  It turns out that with the proper extensions, you may manage SEO for your OpenCart store.

    Limitations of OpenCart

    • Technical expertise required: While installing and configuring OpenCart, some basic knowledge about coding is necessary, which is not suitable for everyone
    • Less support:  While there are many developers in the OpenCart community, OpenCart does not enjoy the sort of support that comes with hosted e-commerce platforms like Shopify
    • Extensions dependency: Most functionalities are only available through third-party extensions that need to be purchased, making expenses grow over time.

    What is Shopify?

    Shopify is an open, independent eCommerce solution that includes all the tools needed to start and run an online business. This website is famous for its simple navigation and rich set of instruments intended to help users facilitate their sales through the Internet.

    Key Features of Shopify

    • Fully hosted platform:  That’s why, when using it, you do not have to worry about website hosting, security, and performance which is managed by Shopify automatically.
    • User-friendly interface: Shopify is easy to use regardless of the user’s level of technical knowledge; anyone can easily open and run a store.
    • App ecosystem: There are thousands of apps available in the Shopify App Store to increase the functionality of your store, including SEO.
    • Secure and reliable: Furthermore, Shopify has pre-integrated SSL certificates and secures the sites around the clock against fraudulent activities.
    • Mobile optimization: The Shopify template is responsive in nature and this helps in enhancing the convenience of the shoppers.

    Advantages of Shopify for E-commerce

    • Ease of use: A very user-friendly interface with a drag-and-drop editor and a selection of ready-to-use themes helps in creating a professional-looking store without having to code.
    • Customer support:  Some added features that came with Shopify are its accessibility for the customer to have customer support that is available 24/7 through the use of a live chat, email, or even phone in case of an emergency, especially for people with little or no technical skills
    • Scalability: Shopify is designed to grow with you, and therefore this platform is suitable for both small businesses and large businesses.
    • SEO and marketing tools: One of the critical benefits of using Shopify is that it is integrated with SEO capabilities and has numerous marketing tools to attract visitors to the store.
    • Fast and secure: Since Shopify is a hosted platform, it deals with many server-related problems and guarantees absolutely fast access and secure payments on the Internet. 

    Limitations of Shopify

    • Monthly fees:  Like any other software, the use of Shopify requires a subscription, making it more costly than platforms such as OpenCart which are open source. 
    • Limited customization: Shopify provides flexibility to a certain extent in terms of customization, which is comparatively lower than that offered by open-source platforms.
    • Transaction fees: Shopify takes transaction fees if not using Shopify Payments, which adds other costs.
    Opencart vs Shopify

    OpenCart vs Shopify Comparison

    Here’s the comparison image for OpenCart vs. Shopify. Now, here’s the table summarizing the key differences:

    CriteriaOpenCartShopify
    CustomizationProvides almost endless variability to accommodate most specific demands, which would require strong internal IT solutions or outsourcing to third-rate developers.It has its own framework which restricts user freedom because of this, it is less flexible compared to OpenCart. 
    Ease of UseIt presupposes the client has more technical skills more so with regard to installation and setup of the product.It presupposes the client has more technical skills more so with regard to the installation and setup of the product.
    PricingCompletely free, but you will have to spend money on hosting, themes, and plug-insShopify is arranged on tiers, and has add-on fees for apps and themes.
    FeaturesMore complex through extensions but very flexible and current, it has some weaker aspects of ‘ready-made’ tools that Shopify offers.Shopify is arranged on tiers and has add-on fees for apps and themes.
    SupportRelies on community support, which may not be as responsive as the 24/7 customer support offered by Shopify.Offers Assistance for customers 24/7 making it convenient for new users especially when they encounter some software problems.
    SEO & MarketingDoes not have built-in features for advanced SEO modules but the site is capable of very good optimization if this option is properly implemented.It includes native SEO capabilities and is compatible with multiple marketing apps, thus allowing companies to handle SEO seamlessly.

    Conclusion: Which Platform is Best for Your Business?

    When it comes to choosing between the two options, that is OpenCart and Shopify, it is more of a case of identifying your business requirements and your IT expertise. If you work with an eCommerce development company to work with, they tell you which platform best suits your needs in the long run and is technologically superior.

    • OpenCart can be recommended for businesses that need to have full control over changes happening in the store’s design and settings, as well as possess the necessary skills in working with open-source platforms. This is an affordable option, particularly for those who will be uncomfortable handling the backend of their store.
    • Shopify, on the other hand, is best for users who want to begin e-commerce without much IT complexity and with good support from the hosting provider. This is especially ideal for companies that require simplicity, flexibility, expandability, and rapid integration over affordability, despite the latter’s increased afterward.

    Countries and Zones States management – Opencart 4 user manual

    In Opencart 4 we can add countries and their zones, zones are states or regions as per country. For adding countries go to admin >> System >> Localization >> Countries and for adding countries’ zones go to admin >> System >> Localization >>Zones. These countries and zones are used in the Shipping Address and payment address, and while registering as the guest checkout to add the shipping address.

    The lists of countries are available at admin >> System >> Localization >> Countries in Opencart 4.

    Countries in Opencart

    To add a new country click the “Add New” blue button and enter the details.

    edit or add countries in Opencart

    Country Name: Enter the country name.

    ISO Code (2): Enter the country code provided at https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

    ISO Code (3): Enter the country code provided at https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

    Address Format: You can format the address according to your needs and the country. For example, we add the following in the address format field for the “Aaland Islands” country:

    First Name = {firstname}
    Last Name = {lastname}
    Company = {company}
    Address 1 = {address_1}
    Address 2 = {address_2}
    City = {city}
    Postcode = {postcode}
    Zone = {zone}
    Zone Code = {zone_code}
    Country = {country}

    Now when we select the shipping or billing address country “Aaland Islands” then it will show like the below:

    First Name = Rupak
    Last Name = Nepali
    Company = Axway
    Address 1 = 6735 East Greenway Pkwy
    Address 2 = Apt 2159
    City = Scottsdale
    Postcode = 85254
    Zone =
    Zone Code =
    Country = Aaland Islands
    Shipping and billing address format in Opencart

    This way, you can format the shipping and billing addresses as per the country.

    Zones or Regions or States management in Opencart

    Once we enter the countries we can enter the zones of those countries. For that go to admin >> System >> Localization >>Zones where you can see the lists of zones regions or states.

    Zones or Region or States in Opencart

    We can add a new zone as well for that click the “Add New” blue button and you will see a form similar to below:

    Edit or Add Zones or Region or States in Opencart

    Zone Name: Enter the zone name

    Zone code: You can find the Zone code at https://www.iso.org/obp/ui/#iso:code:3166:NP, search for the country and it will give lists of zones or regions or states and you can see the Zone code.

    Country: Select the country the zone is related to.

    Status: Enabled it to enable and disabled it to disable.

    You can see the country and state mostly at the billing address and shipping address.

    Billing address in Opencart

    In this way, we can manage the countries, zones states, or regions in Opencart 3. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl, subscribe to our YouTube channel for opencart tutorials, and click to see all Opencart user manuals.

    Opencart 4 Store locations: Show multiple Store Locations on the contact us page

    In Opencart 4 we can show multiple store locations on the contact us page, go to admin >> System >> Localization >> Store location and add the locations there and select the store locations at the System >> Settings >> Store tab and select the location, and it will show in contact us page.

    Here is an example to show how to show multiple store locations on the contact us page:

    Go to admin >> System >> Localization >> Store Location, you will see the listing of store locations below image:

    Store location in Opencart

    On that page, click the “Add new” blue button where you get a form to insert the location of the new store. Enter the details.

    Add store locations

    Once you entered the details, click the Save button. Enter as many stores as you have then go to admin >> System >> Settings >> Edit the store >> go to the store tab >> and at the bottom, there are store locations listed, click the checkbox which you want to show.

    Show location on the contact us page Opencart

    Now go to your contact us page in the storefront and you can see the listing below:

    Store locations on contact us page Opencart

    In this way, you can show multiple Store Locations on the contact us page of Opencart. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl and subscribe to our YouTube channel for opencart tutorials.

    Opencart localisation – Add a new language and set a default language opencart 4

    Opencart supports multi-language. We can add a new language in Opencart 4 and we can configure to set a default language different than English.

    How to upload a new language pack in Opencart 3?

    Find your language pack at Opencart Marketplace, or go to the link below:

    https://www.opencart.com/index.php?route=marketplace/extension&filter_download_id=59&filter_category_id=2

    Then download the language pack, for demo purpose, we are choosing “Spanish” language. Once you clicked the download button if you are not logged then it redirects to log in page else it will show the download section. Download the right version. As we are using Opencart 3 so we download the “3.0.2.0 Spanish Translation“, you will get a zip file like “Opencart Espanol 3.0.ocmod.zip”. Now go to admin >> Extensions >> Installer >> click Upload and select the zip file just downloaded “Opencart Espanol 3.0.ocmod.zip”. After you see the upload success message, go to admin >> Extensions >> Modifications and click the refresh button at the top right corner.

    How to add a new language pack in Opencart 4?

    Go to admin >> System >> Localization >> Languages. The language section is to manage the languages for the store, by default it has the English language. Click the blue “Add New” button then you will see a form like below:

    Add new language in Opencart

    If your language pack is uploaded properly then it will show in the dropdown of the code. For our example it is “es-es”, so we entered the details as in the above image.

    Language Name: We can give any name but better to give a lexical name as this is shown in the frontend of the store. For our example, we gave it “Spanish”.

    Code: The code is auto-select and shown in the dropdown. The ISO language code can be found on https://www.w3schools.com/tags/ref_language_codes.asp

    Locale: Browsers uses Locale to auto-detect the language so we need to enter as per the browsers standard which we can find at https://developer.chrome.com/docs/extensions/reference/api/i18n#locales

    Status: To enable the language at the front select it Enabled.

    Sort Order: This the order to show the languages in front of the dropdown.

    With the above settings, we can see the dropdown of languages like below image:

    Languages in Opencart

    How to change the default language of Opencart?

    To change the default language to another language, go to admin >> System >>Settings >> Edit the store. Click the Local tab and select the Language and Administration Language to the preferred language.

    change default language of Opencart

    In this way, we can upload a new language, install the new language in Opencart 4, show it in front of the store, set the different default languages other than English. If language is not available yet for Opencart then you need to create by yourself, we show in a blog post, How to create a custom language for Opencart 4?. Please don’t forget to post your questions or comments so that we can add extra topics, free module or opencart tutorial that we need to develop which helps to develop quality. You can follow at twitter account @rupaknpl and subscribe to YouTube user opencart tutorial.

    Opencart user, permissions, user group management, and API users

    To manage the Opencart admin section, opencart can have multiple users with different users group and each user group can have different permissions for the management of Opencart stores. The powerful user group is the Administrator by default but you can change it as per your requirement. For users, user groups, and permissions management, go to Admin >> System >> Users where you will see as below in the left menu:

    User menu

    First, go to Admin >> System >> Users >> User Groups, where you can see Administrator and Demonstration, edit Administrator and you will see like below:

    Administrator user

    As the Administrator is a superuser, everything is checked. Be sure to whom you are making the Administrator user.

    There are two permissions: Access Permission and Modify Permission. With Access permission, the user can see the page which is checked. With Modify permission, the user can edit the section which is checked.

    How to identify the page for permission in Opencart?

    In Access Permission and Modify the permission on the right side you see the checkbox which is the parts of the URL and the route of the page. Like:

    https://YOURURL/admin/index.php?route=catalog/category&user_token=***

    In the above URL after the route= you see catalog/category which is the one you will see on the right side of the access and modify permission. So you can now find your URL and decide how to give permissions to the User groups.

    Now let’s take some examples of how we can manage the users and their roles which are user groups and permissions.

    user groups, permission and users opencart

    In the above image example, there are three User groups: Administration, Demonstration, and Product manager. For the Administration, all are checked for both Access permission and modification permission as they are the superuser. For Demonstration, only access permission is checked as they can demonstrate reports and analyze them that is why modifying permission is not given. A product manager, their role is to edit the products and add the products that are why they are permitted some of the Access permission and some of the modify permissions like the catalog/product, catalog/category, etc.

    Once user groups are set up now we can add the user. To manage the user go to Admin >> System >> Users >> Users

    Add users opencart

    From this user listing page, you can add, delete and edit the user. Let’s add a user, for that click the blue button at the top right corner and you will see a form like below:

    User management

    Enter the details like username, select User Group, first name, last name, email, image, password, confirm, and status. Then click Save and the user is added.

    Now, let’s learn about the Opencart API user, go to Admin >> System >> Users >> API and click the blue button to add the API user, you will see the form below:

    Opencart API users management

    Enter the API username, and click the Generate button to generate the API key automatically, and click status to enable. Then click the IP Addresses where you need to enter the IP addresses of your server which will be accessing your API.

    Opencart API IP addresses

    Then you can click the save button. In the Session tab, you can see the token, IP, and date when the API is called or accessed like the below image:

    Opencart API users sessions

    To use the opencart API and manage the API users you can watch this video where we defined the Opencart API:

    For Opencart API detail you can check the following blog posts:

    In this way, we can manage the users, user groups, access permission, modify permission, and API users in the Opencart. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl and subscribe to our YouTube channel for opencart tutorials. Happy learning.

    Settings configuration in Opencart 4 – local, option, image, mail, and server

    This is an Opencart guide where we are showing you the setting configuration in Opencart 4. Go to Admin >> System >> Settings and edit the store, and we will define the fields in general, store, local, option, image, mail, and server. Opencart user manual

    General Tab

    Setting general tab in Opencart

    Store tab

    This setting tab is mostly for the contact us page email and display of information.

    • Store Name: The name of the store. This information is shown on the contact us page.
    • Store Owner: The name is used in the “Form:” section of the email sent from the store.
    • Address: The address of the store. This information is shown on the contact us page
    • Geocode: Go to google map and find your store address, right-click it and click “What’s here?” which gives you a popup with longitude and latitude which will show in the contact us location section.
    • Email: The email field’s email is where the email is sent when the contact us form is filled out.
    • Telephone and Fax: Telephone and Fax are shown in the Contact us location section
    • Image: Icon or logo that you can show in the location section of the contact us page
    • Opening Times: You can list out the opening and closing times of your store which are shown on the contact us page.
    • Comment: You can add some comments that you can show in the location section of the contact us page
    Opencart store setting admin

    When you entered those details then the default contacts us page will look like the below:

    contact us location section in the opencart

    Local tab

    In the local setting tab, we set up localization of the store, we will enter the data of country, region, language, currency, length, and weight at the Localisation setting. Here we select default localization for the store.

    localisation opencart

    Option tab

    The “Option” tab in the Settings has the following setting fields: Products, Reviews, Vouchers, Taxes, Account, Checkout, Stock, Affiliates, Returns, and Captcha.

    Products setting in Opencart

    In Opencart 4, there are only two products settings:

    Products settings of Opencart

    Category Product Count: Show the number of products inside the subcategories in the storefront header category menu. Be warned, this will cause an extreme performance hit for stores with a lot of subcategories! We suggest selecting “No” for the performance.

    Default Items Per Page (Admin): Determines how many admin items are shown per page (orders, customers, etc). After this number, it will show the pagination.

    In previous versions, there used to be product numbers to show in the storefront and limit description and image sizes but it is now moved to the theme settings section at Extensions >> Extensions >> Select theme >> Edit the theme and you will find all those setting there.

    Reviews settings in Opencart

    On the product detail page, there is a review section, these are the settings for that review section.

    Reviews settings in Opencart

    Allow Reviews: Enable/Disable new review entries and display of existing reviews.

    Allow Guest Reviews: Select Yes if you allow guests to post reviews for products.

    Vouchers setting in Opencart

    Store owners can send Gift Vouchers to customers from the admin section or store visitors can also go to store URLs like https://YOURURL/index.php?route=account/voucher and buy the gift vouchers and send them to Recipient’s email and the recipient can get the store credit of the send amount. These are the setting for the Gift Vouchers.

    Voucher setting on the Opencart

    Voucher Min: Minimum amount a customer can purchase a voucher for.

    Voucher Max: Maximum amount a customer can purchase a voucher for.

    Taxes settings in Opencart:

    We can set up taxes for each Geo zones in Opencart, these are the settings for taxes.

    Taxes setting of Opencart

    Display Prices With Tax: If this is selected as “Yes” then the price includes tax, but, if it is selected as “No” then taxes are added to the shopping cart only.

    Use Store Tax Address: Use the store address to calculate taxes if the customer is not logged in. You can choose to use the store address for the customer’s shipping or payment address.

    Use Customer Tax Address: Use the customer’s default address when they log in to calculate taxes. You can choose to use the default address for the customer’s shipping or payment address.

    Account settings in Opencart

    These are the settings for the accounts in Opencart:

    Account settings in Opencart

    Customers Online: If this is selected Yes then you can track customers online via the customer reports section. Go to admin >> Reports >> Who’s Online and you can see the Online Report.

    Customers Activity: If this is selected Yes then you can track customers’ activity via the customer reports section. Go to admin >> Reports >> Choose the report type as “Customer Activity Report” and see the activities of the customer.

    Log Customer Searches: If this is selected Yes then you can track what logged-in customers are searching on the website which may help you to add those products to featured products or make some products show decisions. Go to admin >> Reports >> Choose the report type as “Customer Searches Report”

    Customer Group: Default customer group.

    Customer Groups: Display customer groups that new customers can select to use such as wholesale and business when signing up.

    Login Display Prices: Only show prices when a customer is logged in.

    Max Login Attempts: Maximum login attempts are allowed before the account is locked for 1 hour. Customer and affiliate accounts can be unlocked on the customer or affiliate admin pages.

    Account Terms: Forces people to agree to terms before an account can be created.

    Checkout setting in Opencart:

    These are the setting for checkout in Opencart:

    Checkout settings in Opencart

    Invoice Prefix: Set the invoice prefix (e.g. INV-2011-00). Invoice IDs will start at 1 for each unique prefix.

    Display Weight on Cart Page: Show the cart weight on the cart page.

    Guest Checkout: Allow customers to checkout without creating an account. This will not be available when a downloadable product is in the shopping cart.

    Checkout Terms: Forces people to agree to terms before a customer can checkout.

    Order Status: Set the default order status when an order is processed.

    Processing Order Status: Set the order status the customer’s order must reach before the order starts stock subtraction and coupon, voucher, and rewards redemption.

    Complete Order Status: Set the order status the customer’s order must reach before they are allowed to access their downloadable products and gift vouchers.

    Fraud Order Status: Set the order status when a customer is suspected of trying to alter the order payment details or use a coupon, gift voucher, or reward points that have already been used.

    API User: Default API user the admin should use.

    Stock settings in Opencart:

    Stocks settings in Opencart

    Display Stock: Display stock quantity on the product page.

    Show Out Of Stock Warning: Display Out of stock message on the shopping cart page if a product is out of stock but stock checkout is yes. (Warning always shows if stock checkout is no)

    Stock Checkout: If selected yes it allows customers to still check out if the products they are ordering are not in stock.

    Affiliates settings in Opencart:

    In Opencart 4 the affiliates are combined with customers. Here are details of affiliates in Opencart, these are the store-level setting of Affiliates in Opencart.

    Affiliates settings in Opencart

    Affiliate Group: As customers and affiliates are managed by customers in the admin section, so the main customer groups that affiliate group is assigned if someone registered for the affiliates.

    Affiliate Requires Approval: Automatically approve any new affiliates who sign up.

    Automatic Commission: Automatically add commission when each order reaches the complete status.

    Affiliate Commission (%): The default affiliate commission percentage.

    Affiliate Terms: Forces people to agree to terms before an affiliate account can be created.

    Returns settings in Opencart:

    Customer can return the ordered products by filling the form athttps://YOURURL/index.php?route=account/return/add

    Returns in Opencart

    The returns setting in Opencart are:

    Returns settings in Opencart

    Return Terms: Forces people to agree to terms before a return can be created.

    Return Status: Set the default return status when a return request is submitted.

    Captcha settings in Opencart

    Captcha settings in Opencart

    Go to the post below which will show details of how to set up a captcha in opencart

    In this way, you can set up the Options settings of Opencart, now let’s see the image settings.

    Image setting tab in Opencart:

    The image setting tab includes a store logo and a favicon icon to upload. In the older version, there used to be image sizes for products and categories but it is now moved to the theme settings section at Extensions >> Extensions >> Select theme >> Edit the theme and you will find all those images setting there.

    Image logo and favicon in Opencart

    Store logo: You can upload a store logo here which is shown in the header of the front store.

    Icon: This is a favicon icon, you can upload your store favicon here. Mostly we use size of 32px * 32px.

    FTP tab setting in the Old version

    Go to the following post for the FTP settings where we show you multiple ways to connect FTP but mostly they are left blank.

    Mail tab settings of Opencart:

    In the mail tab settings of Opencart, all email settings are done here, mostly we use the mail engine as Mail and enter the Mail Parameters as our email, and works properly. But if you want to set up SMTP then you need to choose the Mail Engine as SMTP and enter hostname, username, password, port, and timeout settings as per your SMTP provider.

    Email general smtp setting Opencart

    Mail Engine: Only choose ‘Mail’ unless your host has disabled the PHP mail function.

    Mail Parameters: When using ‘Mail’, additional mail parameters can be added here (e.g. -f email@storeaddress.com)

    SMTP Hostname: Enter your SMTP hostname here. Add ‘tls://’ or ‘ssl://’ prefix if security connection is required. (e.g. tls://smtp.gmail.com, ssl://smtp.gmail.com).

    SMTP Username: Enter the SMTP username provided by your email server.

    SMTP Password: Enter the SMTP password provided by your email server. For Gmail, you might need to set up an application-specific password here: https://security.google.com/settings/security/apppasswords.

    SMTP Port: Enter the SMTP port provided by your email server.

    SMTP Timeout: Enter the SMTP timeout here.

    Mail Alerts settings in Opencart:

    You can get an email alert when someone registered an account or apply for affiliates or order some products or someone gives reviews.

    Email Alerts setting in Opencart

    Alert Mail: Select which features you would like to receive an alert email on when a customer uses them.

    Additional Alert Mail: Any additional emails you want to receive the alert email, in addition to the main store email. (comma separated).

    Server settings tab in Opencart:

    Most of the server settings are done here:

    General

    Server general settings Opencart

    Maintenance Mode: Prevents customers from browsing your store. They will instead see a maintenance message. If logged in as admin, you will see the store as normal.

    Use SEO URLs: To use SEO URLs, the apache module mod-rewrite must be installed and you need to rename the htaccess.txt to .htaccess.
    See also to get 25 SEO best practices for Opencart 4 with 3 free SEO Opencart 4 module

    Robots: A list of web crawler user agents that shared sessions will not be used. Use separate lines for each user agent.

    Output Compression Level: GZIP for more efficient transfer to requesting clients. The compression level must be between 0 – 9. Keep on trying between 0-9 until you get the desired output as it differs as per server. For ours, we are using 5.

    Security

    These are settings for the Opencart security section.
    See: How to set up SSL in Opencart?

    Server security settings in Opencart

    Use SSL: To use SSL check with your host if an SSL certificate is installed and add the SSL URL to the catalog and admin config files.

    Allow Forgotten Password: Allow forgotten passwords to be used for the admin. This will be disabled automatically if the system detects a hack attempt.

    Use Shared Sessions: Try to share the session cookie between stores so the cart can be passed between different domains.

    Encryption Key: Please provide a secret key that will be used to encrypt private information when processing orders.

    Uploads

    Upload settings in Opencart

    Max File Size: The maximum image file size you can upload in Image Manager. Enter as a byte.

    Allowed File Extensions: Add which file extensions are allowed to be uploaded. Use a new line for each value.

    Allowed File Mime Types: Add which file mime types are allowed to be uploaded. Use a new line for each value.

    Error Handling

    Error handling Opencart

    Display Errors: We suggest keeping it No for the live environment. For testing and development purposes keep it Yes so that you can see the PHP errors, warnings, and notices shown by the store.

    Log Errors: We suggest keeping it Yes so that you can see if something is not working or producing errors.

    Error Log Filename: This is the file where errors are logged. Better to name it error.log.

    Enter all of the settings and finally click Save.

    We hope this helps someone to go through the settings of Opencart. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our Twitter account @rupaknpl and subscribe to our YouTube channel for opencart video tutorials and go to the Opencart user manual.

    Opencart 4 Server Setup, SSL, FTP, Email, Database connection

    Setting up an Opencart 4 ecommerce store involves several steps, including configuring your server, setting up FTP access, configuring email, and connecting your database. Here’s a detailed guide to help you through each step using cPanel.

    Server Setup

    Choosing a Hosting Provider:

    • Select a hosting provider that offers cPanel, cloud that meets Opencart’s system requirements.
      • Example: Providers like AWS, Google cloud, A2hosting, Bluehost, SiteGround, and InMotion Hosting are popular choices.

    Accessing cPanel:

    • Log in to your hosting account and access cPanel.
      • Example: Navigate to your hosting account’s dashboard and click the cPanel link.

    Configuring PHP Settings:

    • Ensure the server meets Opencart’s PHP requirements. Typically, Opencart requires PHP 7.3 or higher.
      • Example: In cPanel, go to the “Select PHP Version” or “MultiPHP Manager” to set the appropriate PHP version.

    Setting Up FTP Access

    Creating an FTP Account:

    • In cPanel, go to the “FTP Accounts” section to create a new FTP account.
      • Example: Enter the desired username, domain, and password. Specify the directory for FTP access.

    Configuring FTP Client:

    • Use an FTP client like FileZilla to connect to your server.
      • Example: In FileZilla, enter the FTP server address (usually your domain), username, password, and port (typically 21).

    Uploading Opencart Files:

    • Download the latest version of Opencart from the official website and extract the files.
      • Example: Use your FTP client to upload the extracted Opencart files to the public_html directory (or your desired directory).

    Configuring Email

    Creating Email Accounts:

    • In cPanel, go to the “Email Accounts” section to create new email addresses for your domain.
      • Example: Enter the desired email address, password, and mailbox quota.

    Setting Up Email Forwarders:

    • Configure email forwarders to redirect emails to another address if needed.
      • Example: In the “Forwarders” section, set up email forwarding rules.

    Configuring Email Clients:

    • Set up email clients (e.g., Outlook, Gmail) to send and receive emails using your domain’s email addresses.
      • Example: Use the “Email Configuration” settings in cPanel to find the necessary SMTP and IMAP/POP3 settings.

    Database Connection

    Creating a Database:

    • In cPanel, go to the “MySQL Databases” section to create a new database.
      • Example: Enter a name for the database and click “Create Database.”

    Creating a Database User:

    • Create a new database user and assign it to your database.
      • Example: In the “MySQL Users” section, create a user with a secure password. Then, add the user to the database with all privileges.

    Configuring Database Connection in Opencart:

    • During the Opencart installation process, enter the database details.
      • Example: When prompted, enter the database name, username, and password. Set the database host (usually localhost).

    Running the Opencart Installer:

    • Navigate to your domain to start the Opencart installation.
      • Example: Go to http://yourdomain.com and follow the on-screen instructions to complete the installation.

    SSL certificate setup for URL

    Now your server is ready now need to do some setting change in the admin dashboard.

    By following these steps, you can effectively set up a server, configure FTP access, set up email accounts, and establish a database connection for your Opencart 4 store using cPanel. This comprehensive setup ensures that your ecommerce platform runs smoothly and efficiently, providing a robust foundation for your online business. Hope you liked this opencart user manual, please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook.

    Domain Registration for eCommerce website

    Choosing the right domain name and registering it is a crucial step in establishing your ecommerce website. Here’s a comprehensive guide to help you through the process.

    Choosing a Domain Name

    • Relevance: Ensure the domain name reflects your brand and the products or services you offer.
      • Example: If your store sells handmade jewelry, consider a domain name like “HandmadeJewels.com.”
    • Simplicity: The domain name should be easy to spell, pronounce, and remember.
      • Example: Avoid complex words or lengthy phrases. “EasyGifts.com” is preferable to “BestGiftsForEveryOccasion.com.”
    • Keywords: Incorporate relevant keywords if possible, as this can help with search engine optimization (SEO).
      • Example: For an online book store, “BestBooksOnline.com” is a good choice.
    • Uniqueness: Ensure the name is unique and not easily confused with existing brands or websites.
      • Example: “ShopBrite.com” should not be too similar to “ShopBright.com” to avoid confusion.
    • Extensions: Choose an appropriate domain extension. While “.com” is the most popular and widely recognized, other extensions like “.store,” “.shop,” or country-specific extensions (e.g., “.co.uk”) might also be suitable.

    Checking Domain Availability

    • Domain Registrars: Use domain registrars like GoDaddy, Namecheap, or Google Domains to check if your desired domain name is available.
      • Example: Enter your preferred domain name in the search bar of the registrar’s website to see if it’s available.
    • Alternative Options: If your first choice is taken, consider variations or alternative extensions.
      • Example: If “BestBooksOnline.com” is taken, you might try “BestBooksOnline.net” or “BestBooksStore.com.”

    Registering the Domain

    • Choosing a Registrar: Select a reputable domain registrar. Popular options include GoDaddy, Namecheap, Google Domains, and Bluehost.
      • Example: Research user reviews and compare prices and features before making a decision.
    • Registration Period: Decide how long you want to register the domain. Options typically range from one to ten years.
      • Example: Registering for a longer period can often save money and prevent the domain from expiring unexpectedly.
    • Privacy Protection: Consider purchasing domain privacy protection to keep your personal information hidden from the public WHOIS database.
      • Example: This service prevents spammers and potential attackers from accessing your contact details.
    • Completing the Registration: Fill out the required information, including your name, address, and payment details, to complete the registration process.
      • Example: Follow the registrar’s prompts to enter your details and finalize the purchase.

    Managing Your Domain

    • DNS Settings: Configure your DNS settings to point your domain to your web hosting provider.
      • Example: Access the DNS management panel of your registrar and update the nameservers to those provided by your hosting provider.
    • Renewal: Set reminders to renew your domain before it expires. Many registrars offer automatic renewal options.
      • Example: Enable auto-renewal to ensure your domain registration remains active without interruption.
    • Transfers: If needed, you can transfer your domain to another registrar. Ensure you understand the transfer policies and any potential fees.
      • Example: If you find a better deal or need additional services, you might consider transferring your domain to another provider.

    Additional Tips

    • Trademark Considerations: Check for potential trademark issues to avoid legal complications.
      • Example: Ensure your domain name doesn’t infringe on existing trademarks to prevent disputes.
    • Social Media Handles: Secure matching social media handles to maintain consistent branding across all platforms.
      • Example: Check if the corresponding usernames are available on platforms like Twitter, Facebook, and Instagram.
    • SEO Impact: Choose a domain name that is favorable for SEO, keeping it relevant to your niche and including keywords if possible.
      • Example: A domain name that aligns with common search terms can improve your site’s visibility in search engines.

    By carefully selecting and registering your domain, you lay a strong foundation for your ecommerce website’s online presence. Ensure that your domain name aligns with your brand, is easy to remember, and is legally sound. This will help attract customers and establish a reputable online store.

    OpenCart 4: User manual to create full fledge ecommerce store

    Opencart is a powerful, user-friendly open-source e-commerce framework that allows businesses to create and manage their online stores with ease. It provides a comprehensive suite of features designed to streamline the process of selling products and services online. OpenCart’s flexibility, coupled with its robust set of tools, makes it an excellent choice for small and large businesses. OpenCart 4 introduces several enhancements and new features to improve usability, performance, and security. The OpenCart ecosystem includes a vibrant community of developers, designers, and store owners contributing to the platform’s continuous improvement. Additionally, the OpenCart marketplace provides a plethora of themes, extensions, and modules to enhance your online store’s functionality and aesthetics.

    Unlock the Potential of OpenCart 4: Domain registration, installation, servers setup, emails, administration, promotion, tracking, APIs, SEO, security, cloudflare, OCMOD, events, and many more

    Who can use OpenCart?

    OpenCart is suitable for many users, including:

    • Small to Medium-Sized Businesses: Ideal for businesses looking for a cost-effective yet powerful e-commerce solution.
    • Developers and Designers: Offers a flexible platform that can be extensively customized to meet client needs.
    • E-Commerce Entrepreneurs: Perfect for individuals launching a new online store due to its user-friendly setup and management.

    From the user’s perspective

    • Creating eCommerce websites
    • Launch store simply and faster
    • Save investment cost
    • Opencart is lightweight
    • Handle easier: ideal for end-users to control their Opencart stores
    • Catch up with eCommerce trends.
    • Creating Advanced eCommerce websites
    • Easy learning curve, Large Community, and Support
    • Customize the presentation layer or front end
    • Flexibility, Customization, and Extend the functionality
    • Open Source, Cost-Effective, and many more.

    Key Features of OpenCart

    1. Overview
      • Founded in 2008 by Daniel Kerr
      • Written in PHP, uses MySQL for database management
      • Free to download and use under the GNU General Public License
    2. Key Features
      • Multi-Store Capability: Manage multiple stores from a single admin interface.
      • Extensive Extensions Library: Enhance your store’s functionality with thousands of available extensions.
      • SEO-Friendly: Optimize your store for search engines with built-in SEO tools.
      • User Management: Control access to various store parts with user permissions.
      • Customizable Themes: Personalize your store’s appearance with customizable themes.
      • Multi-Language and Multi-Currency Support: Cater to a global audience by offering multiple languages and currencies.
      • Comprehensive Reporting: Gain insights into your store’s performance with detailed reports and analytics.
      • Besides basic features, multi-language, multi-store, multi-layout, fully customizable, and many more with OCMOD or VqMod virtual file modification with XML and also includes an unlimited module instance system and uses popular foundations like bootstrap, font awesome, and flex slider for rapid development.
      • User-friendly admin panel
      • Multi-store functionality
      • Wide range of payment gateways
      • Shipping method integrations
      • Product reviews and ratings
      • SEO-friendly URLs
      • Multi-currency support
      • Multi-language support
      • Customizable themes
      • Extensive reporting tools
    3. Extension Marketplace
      • Thousands of extensions available
      • Both free and paid options
      • Extends functionality for marketing, shipping, payment, reporting, etc.
    4. Themes
      • Customizable responsive themes
      • Both free and premium options available
      • Easy to modify using the built-in theme editor
    5. Security
      • Regular security updates
      • Built-in security features like SSL support
      • Password encryption
    6. Community and Support
      • Active community forum
      • Extensive documentation
      • Professional support options available
    7. Installation and Setup
      • Relatively easy installation process
      • Many web hosts offer one-click OpenCart installation
    8. Scalability
      • Suitable for small to medium-sized businesses
      • Can handle larger catalogs with proper optimization
    9. Performance
      • Generally good performance out of the box
      • Can be further optimized with caching extensions and server tweaks
    10. Customization
      • Highly customizable through extensions and theme modifications
      • Developers can create custom modules and integrations
    11. Pros
      • Free and open-source
      • Easy to use for beginners
      • Extensive features out of the box
      • Large community and marketplace
    12. Cons
      • May require technical knowledge for advanced customizations
      • Some essential features might require paid extensions
      • Performance can degrade with many extensions installed
    13. Comparison to other platforms
      • Generally easier to use than Magento
      • More flexible than hosted solutions like Shopify
      • May require more technical knowledge than WooCommerce

    OpenCart is an excellent choice for small to medium-sized businesses looking for a flexible, feature-rich e-commerce solution. Its open-source nature and extensive marketplace make it a versatile platform capable of handling a wide range of e-commerce needs.

    For the User Manual, we are covering the following topics which are listed below, we will add the links as we completed the documentation of Opencart 4:

    INTRODUCTION

    DOMAIN REGISTRATION

    SERVER SETUP, SSL, FTP, EMAIL, DATABASE CONNECTION

    OPENCART INSTALLATION

    • Preparing Your Server
    • Uploading Opencart Files
    • Creating a Database
    • Configuring File Permissions
    • Running the Opencart Installer
    • Final Steps

    OPENCART ADMIN SYSTEM SETTINGS

    USER MANAGEMENT

    • Users

    OPENCART CATALOG MANAGEMENT

    • Categories management
    • Accessing the Admin Panel
    • Navigating to Categories Management
    • Creating a New Category
    • Editing an Existing Category
    • Deleting a Category
    • Managing Subcategories
    • Bulk Actions
    • SEO and Best Practices
    • Products management
    • Pricing psychological tactic for eCommerce website
    • Master Product and Variant Product in Opencart
    • How to add the product variant in Opencart?
    • How to override the variant product data?
    • Filters management
    • Navigating to Filters Management
    • Creating a New Filter
    • Editing an Existing Filter Group
    • Deleting a Filter Group
    • Assigning Filters to Products
    • Assigning Filters to Categories
    • SEO and User Experience Considerations
    • Attributes management
    • Navigating to Attributes Management
    • Creating a New Attribute
    • Creating and Managing Attribute Groups
    • Editing an Existing Attribute
    • Deleting an Attribute
    • Assigning Attributes to Products
    • Using Attributes for Filters
    • Best Practices for Attributes Management
    • Options management
    • Navigating to Options Management
    • Creating a New Option
    • Editing an Existing Option
    • Deleting an Option
    • Assigning Options to Products
    • Managing Option Types
    • Best Practices for Options Management
    • Manufacturers management
    • Navigating to Manufacturers Management
    • Creating a New Manufacturer
    • Editing an Existing Manufacturer
    • Deleting a Manufacturer
    • Assigning Manufacturers to Products
    • Manufacturer Page and SEO Considerations
    • Customer Navigation and User Experience
    • Reviews management
    • Navigating to Reviews Management
    • Viewing and Moderating Reviews
    • Editing a Review
    • Adding a New Review
    • Deleting a Review
    • Best Practices for Reviews Management
    • SEO and User Experience Considerations
    • Information pages management
    • Navigating to Information Pages Management
    • Creating a New Information Page
    • Editing an Existing Information Page
    • Deleting an Information Page
    • Best Practices for Information Pages

    OPENCART DESIGN

    • Themes
    • Customization Options
    • Layouts and Modules
    • Visual Elements
    • User Experience (UX) Design
    • SEO and Performance
    • Custom Design and Development
    • Layouts management
    • Customize layouts and positions to show different modules in Opencart
    • How to customize the Opencart homepage?
    • Where can you find modules in Opencart 3?
    • Theme Editor
    • Steps to make the theme editor
    • Banners management
    • Navigating to Banner Management
    • Creating a New Banner
    • Editing an Existing Banner
    • Deleting a Banner
    • Assigning Banners to Layouts
    • Best Practices for Banner Management
    • Advanced Banner Features
    • Language Editor
    • Zipping and naming language extension
    • Upload a new language pack in Opencart 4
    • Test Your Custom Language
    • Change the default language of Opencart 4
    • Override the language texts from Admin Interface
    • SEO URLs management
    • Understanding SEO URLs
    • Enabling SEO URLs
    • Creating SEO URLs for Products, Categories, and Other Pages
    • Managing and Editing SEO URLs
    • Best Practices for SEO URLs
    • SEO URL for Multilingual Stores
    • Checking and Testing SEO URLs
    • Advanced SEO URL Features

    SALES MANAGEMENT

    • Orders
    • Order status global setting
    • Order statuses at Payment gateways
    • Customer Order status in Order History
    • How do reward points work in Opencart?
    • Subscriptions
    • Setting Up Subscriptions
    • Creating Subscription Products
    • Managing Recurring Profiles
    • Customer Management
    • Payment and Billing
    • Reporting and Analytics
    • Marketing and Promotions
    • Legal and Compliance Considerations
    • Returns
    • Product Returns settings management:
    • Return Statuses:
    • Return Actions
    • Return Reasons
    • How does a customer submit product returns in Opencart 4?
    • Store administrator management of product returns
    • Gift Vouchers
    • Create or design the voucher themes
    • Purchase a Gift Certificate and send to someone in Opencart
    • How recipients redeem the gift certificate?
    • Management of Gift Vouchers by admin
    • How to set a minimum and maximum amount a customer can purchase a voucher for?

    OPENCART CUSTOMER MANAGEMENT

    • Customer Account Management
    • Customers
    • Customers Groups
    • Understanding Customer Groups
    • Creating Customer Groups
    • Assigning Customers to Groups
    • Utilizing Customer Groups
    • Managing Customer Group Permissions
    • Customer Group Reporting and Analysis
    • Best Practices for Using Customer Groups
    • Customer Approvals
    • Enabling Customer Approval
    • Managing Pending Customer Approvals
    • Customization of Approval Process
    • Managing Approved Customers
    • Best Practices for Customer Approvals
    • Advantages of Customer Approvals
    • GDPR
    • Key GDPR Requirements
    • GDPR Features in Opencart 4
    • GDPR Compliance Extensions
    • Best Practices for GDPR Compliance
    • Custom Fields
    • Example of the custom field in the registration form
    • How do you add the custom fields in Opencart?

    OPENCART MARKETING MANAGEMENT

    • Affiliate
    • How does the affiliate is registered in Opencart 3?
    • How do you activate the affiliate for the already registered customers?
    • How does the affiliate use the URL on their websites blogs or forums?
    • How the commission is added to the affiliate?
    • Marketing
    • Key Features for Marketing Tracking in Opencart 4
    • Best Practices for Marketing Tracking
    • Coupons
    • Key Features of Coupons in Opencart 4
    • Mail
    • Key Features of Mail Marketing in Opencart 4
    • Best Practices for Mail Marketing in Opencart 4
    • Automatically post new Opencart products on social media like Facebook for free
    • Some other Automation Tools
    • Benefits of Auto-Publishing via RSS
    • Add an Analytics extension in Opencart 4? Third-party JS free Opencart extension
    • Install the Opencart 4 Analytics extension

    OPENCART REPORTS MANAGEMENT

    • Popular Reports lists
    • Reports
    • Customer Transaction Report
    • Customer Activity Report
    • Customer Orders Report
    • Customer Reward Points Report
    • Customer Searches Report
    • Tax Report
    • Shipping Report
    • Returns Report
    • Sales Report
    • Coupon Report
    • Products Viewed Report
    • Products Purchased Report
    • Who’s Online
    • Statistics
    • How to add reports in the admin dashboard of Opencart 4?

    OPENCART 4 EXTENSION MANAGEMENT

    • Marketplace
    • Benefits of Using the OpenCart Marketplace
    • Installer
    • Accessing the Installer
    • Using the Installer
    • Extensions
    • Uploading an extension in OpenCart
    • FTP needs to be enabled in the settings:
    • Invalid file type!
    • Could not connect as yoursitename.com:21
    • The modification requires a unique ID code!
    • Installing a module
    • Uninstalling a module
    • Remove a module
    • Types of Opencart Extensions
    • Order total modules
    • Captchas
    • Module
    • Theme
    • Analytics:
    • Difference between Single Instance module and Multi-instance module
    • Startup
    • Events
    • Cron Jobs

    OPENCART 4 THEME

    • Install the Opencart 4 theme
    • Activate Opencart 4 theme
    • Uninstall the Opencart 4 theme
    • Files and folders structure of the Opencart 4 theme

    OPENCART 4 LANGUAGE MANAGEMENT

    • File and folder structure of custom language for Opencart 4
    • Prepare the Language Pack
    • Upload a new language pack in Opencart 4
    • Test Your Custom Language
    • Change the default language of Opencart 4
    • Override the language texts from Admin Interface

    OPENCART 4 EVENT SYSTEM

    • Event Types
    • Using Opencart Events
    • Registering Events
    • Using Events for Customization
    • List of Events
    • Language events
    • Activity events
    • Statistics events
    • Theme event
    • Admin Currency Events
    • Admin Statistics Events
    • Translation Event
    • Admin Language Events
    • Testing Opencart Events
    • Challenges
    • Best Practices while using Opencart Events

    OPENCART 4 OCMOD

    • Files and folder structure OCMOD extension
    • The Flow of OCMOD
    • Upload of extension with OCMOD
    • Installation of OCMOD extension
    • OCMOD developer tips
    • Example OCMOD code
    • Admin Module menu addition with OCMOD extension
    • Folder creation of OCMOD extension
    • Code of install.json file
    • Code of webocreation_admin_menu.ocmod.xml
    • OCMOD error log
    • Read more about OCMOD

    OPENCART API DOCUMENTATION

    • Create API username and key
    • Opencart user, permissions, user group management, and API users
    • Authentication and Request Format of Opencart API:
    • Request
    • Request Parameters
    • CURL login example:
    • Opencart 4 API Endpoints
    • Postman testing of Opencart 4 endpoints
    • Create custom API endpoints in Opencart 4
    • The responding server
    • Error Handling

    OPENCART MULTI WEBSITES OR STORE SETUP

    • Benefits of a Multisite Setup
    • Prerequisites
    • Example stores
    • Step-by-Step Guide to Setting Up Multisite in OpenCart 4
    • Step 1: Configure Your Domain/Subdomain
    • Step 2: Add New Stores in OpenCart Admin
    • Step 3: Configure Store Settings
    • Step 4: Customize Your Store
    • Step 5: Assign Products and Categories
    • Step 6: Test Your Store

    OPENCART SEO BEST PRACTICES

    • Admin Setting section changes for the SEO
    • SEO-Friendly URLs
    • Optimize Product and Category Pages
    • Image Optimization
    • Internal Linking
    • Mobile Optimization
    • Enable the sitemap extension
    • Add robots.txt
    • Canonical URL
    • Social proof
    • Schema Markup
    • Site Speed and Performance
    • GZIP Compression
    • Webfont loading
    • Fix broken links
    • Add your Business to Google
    • 301 Redirects
    • SSL certificates
    • Mobile-first approach
    • Regular Monitoring and Analysis

    OPENCART SPEED OPTIMIZATION

    • Choose a better hosting provider and better cache module
    • Use the image sizes properly
    • Use the proper extension for the image:
    • Optimize the image properly
    • GZIP compression level
    • Speed up the repeat visit by serving static assets with an efficient cache policy
    • Index the database table
    • OPENCART SECURITY MEASURES
    • Use good and secure hosting
    • Check if the install/ folder is still there
    • Proper Security settings in the admin
    • Use HTTPS/SSL Certificate
    • Use the latest PHP version
    • Use Anti-fraud extension
    • Error handling setting
    • Monitor your admin error logs
    • Block bad bots
    • Allowed File extensions and allowed file mime type permissions
    • Review All Users, User Groups, and Grant the Minimum Permissions Necessary
    • Use a strong username and password
    • API security in Opencart
    • Always use the latest Opencart version, theme, modules, and extensions
    • Remove unused modules or extensions
    • Monitor your server logs
    • Use HTTP security headers
    • Cross-Site Scripting (XSS)
    • Database Security and SQL Injections
    • Denial of Service
    • Backup
    • Use Google Captcha or Basic Captcha

    OPENCART CDN CLOUDFLARE SETUP

    • Create a Cloudflare account
    • Solve the SSL issue of Cloudflare
    • Cloudflare FTP issues fix

    PRO TIPS AND TRICKS

    • How to install the Opencart 4 extension?
    • Files and folder structure of the Opencart 4 extension
    • Naming tips for custom Opencart 4 extensions
    • Add conversion code on the success page of Opencart
    • How to customize the Opencart homepage?
    • What is the Order total in Opencart 4? How to apply and create them?
    • How to set free shipping, flat rate shipping, shipping as per item, or pick from a store in Opencart?
    • How to set up free shipping in the Opencart store?
    • How to set up a flat shipping rate in the Opencart store?
    • How to set up free shipping for over $100 and for below it will be $5 flat-rate shipping?
    • How to set the shipping rate per item?
    • How do you can set up pick up from the store shipping in the Opencart store?
    • How to set up a weight-based shipping rate?
    • What is ‘Zone Shipping’ and how do we set it up?

    COMMON ERRORS AND THEIR SOLUTIONS

    • Blank white pages or 500 internal server error
    • Headers already sent
    • Allowed Memory Size Exhausted
    • OpenCart Site Launch Checklist
    • What to look for OpenCart Developer for your customization and how to validate the works?

    Please bear with us, we try to publish one post a day that are related to above listed topics and improved as per Opencart 4. Please let us know if you have any questions or suggestions, have a look at Opencart tutorials for developers as well. You can also find us on Twitter and Facebook.

    Why Real Estate Businesses in UAE Need AR VR Solutions in 2025

    Entrepreneurship is like getting surprises throughout the journey—each delivery is unpredictable. You never know which ball is heading your way, and it can be proven to be a challenge, a game-changer, or a curveball. However, all these secrets lie in adapting your stance and hitting it out of the park.

    As AR/VR technologies emerge, things are taking shape drastically. Following a similar tech-oriented pathway, Real Estate App Development Company in UAE are taking a further leap in making themselves reliable AR/VR solutions.

    Imagine exploring a property site without stepping out of your home! Intriguing, isn’t it? The possibilities are even more exciting, as this would pave the way for greater technological integration across various businesses.

    In this blog, we will explore why the rental business in UAE needs AR/VR solutions.

    An Overview of the AR/VR Market in 2025

    Augmented and virtual reality have gained market traction, fuelling tech-first approaches. According to Statista, revenue in the real estate sector is expected to demonstrate an annual growth rate (CAGR 2024-2029) of 9.67%, culminating in a projected market volume of US$204.2M by 2029.

    In the AR & VR market, the number of users in the United Arab Emirates is expected to reach 6,914.0k by 2029.

    Considering these numeric data, we will determine where the new tech AR/VR is taking the market and what innovative services it provides. Businessmen are incorporating these services to the effect.

    Real Estate App Development Service in the UAE are performing phenomenally in the market. As everything is going to be digitalized, AR/VR is leaving an impactful impression at a global level.

    Below are the points mentioned why real-estate businesses in UAE need AR/VR solutions:

    Enhanced Property Visualization

    Virtual reality emphasizes property visualization without stepping out of the home. Sounds interested? Yes, this technology offers virtual tours, providing a library for the buyers to explore property remotely.

    These immersive experiences help to visualize 3D virtual life, effortlessly showcasing off-page projects.

    Improved Customer Engagement

    Enabling AR technology in mobile applications has the potential to grab customer attention. These AR-infused apps are the best for interactive property features, keeping consumers engaged throughout the procedure.

    For example, AR-location-based services can help consumers navigate all the property information simultaneously. They can also inform consumers about locations and provide a 360-degree view. This excites customers and keeps them engaged with the application and finding their best solutions.

    Cost-Effective Marketing

    Incorporating AR/VR into the process improves things at many levels. These technologies reduce physical staging and site visits without wasting money on fares. Just put the headsets on, and the game starts from there.


    These high-quality 3D visualizations help to attract global buyers without geographical constraints, making things reliable and comfortable for property owners and users.

    Faster Decision Making

    Virtual tours save buyers time by letting them explore multiple properties conveniently. They also allow real-time customization, such as changing interior layouts or finishing, to help buyers make quick decisions.

    This helps make quick decisions, and with a minimum of time, many users can visit the property to sell it instantly. These are useful tips that property managers are adopting to sell the property at a market rate.

    Streamlined Designs and Development Processes

    Once VR has aided the business, developers, and architects can visualize the property design before starting construction. These practices increase accuracy and reduce errors. 

    AR can provide overlays and real-time insights at construction sites, improving efficiency. Thus, AR and VR are the best solutions for streamlining designs and development processes.

    Competitive Edge in a Tech-Driven Market

    The businessmen in UAE continue to position themselves as the global leader in AR/VR solutions. They are meeting the growing expectations of tech-savvy buyers, especially Gen Z, offering futuristic experiences that set real estate businesses apart.

    Staying in touch with the AR VR solution provider helps to increase the business’s competitiveness, provide the versatility to upsell the products, and create hype among users.

    Support for Sustainable Practices

    These services leverage to protect the environment efficiently, as they decrease the travel requirements that ultimately lower the carbon footprints. 

    The virtual model adjustment effectively reduces material waste during the construction, making this procedure sustainable and affordable.

    Enhanced Collaborations

    To work efficiently, developers, agents, and buyers collaborate using VR tools that provide real-time property walkthroughs and updates. This eliminates communication gaps and fosters better decision-making.

    Broder Market Reach

    These AR/VR solutions are gathering popularity globally, enabling international clients to navigate through properties across borders. These approaches are majorly useful for showcasing luxury properties to a global audience and sharing a site view for the factories to establish a business unit there.

    Future-Ready Adaptation

    The smart city in UAE is focused on digital transformation, and incorporating AR/VR into real estate aligns with these goals and ensures that businesses stay ahead of the curve in 2025, appealing to local and global markets.

    With Whom can we collaborate to Get Robust AR/VR Development Services?

    Enabling these technologies can bring numerous benefits to businesses. Therefore, it has become necessary to collaborate with an AR VR app development company that can develop out-of-the-box solutions.

    Before proceeding with software companies, checking their work portfolios matters greatly, as your project is not a peace of experience. It requires fine finishing and robust backend support to proceed with many requirements.

    Next would be the expertise that speaks loud, so check the team size, count experiences, and expertise in AR/VR services that will give you the relaxing feel to give your close-to-heart project to such reliable companies and possess enough expertise to turn your dreams into reality. 


    Check their project delivery rate and satisfied clients. This may sound weird initially, but picking on these helps in the long run. Suppose you went ahead with such a company that possesses the expertise but lacks proper coordination and project delivery. This makes the development procedure rubbish and irritating.

    These delays can also lead to an increase in the development price that you will ultimately have to bear, so if you select the company, choose wisely to make impactful decisions that can speak loudly about your business and grab the user’s attention toward your creative, engaging application.

    Conclusion

    In a nutshell, it becomes wiser to look for the integration of AR/VR technologies in 2025 to be ahead of the competitive edges. These technologies help make your real estate business famous, easy to access, well-renowned, and an umbrella for users to come onto the platform to select reliable properties.

    As a property manager, you can easily navigate through consumer data and real-time property visits, which gives a window for customized designs and architecture, maintaining the sustainability of your work.