Home Blog Page 5

Unlock Global Opportunities with Google Market Finder

Expanding your business internationally can seem daunting, but what if there was a tool to make it simple, insightful, and actionable? Enter Google Market Finder – a free and intuitive resource designed to help businesses identify untapped markets, gather crucial operational insights, and reach new customers worldwide. Whether you’re a seasoned global seller or just starting your export journey, this tool can be a game-changer. Webocreation just started at Glendale Arizona, so we were checking to expand to California, New York and other states.

Let’s dive into what makes Google Market Finder so powerful and how it can help your business thrive globally.

What is Google Market Finder?

Google Market Finder is a comprehensive tool that provides data-driven insights to help businesses discover new internal and international markets and develop strategies to enter them effectively. By analyzing your website and product offerings, it highlights potential growth opportunities and offers actionable recommendations tailored to your needs.

With features like operational guides, marketing resources, and analytics dashboards, Google Market Finder goes beyond just identifying markets—it equips you with the knowledge to succeed.

Why Use Google Market Finder?

  1. Identify High-Potential Markets: Google Market Finder uses search trends and data to recommend markets that show demand for your products or services. For example, if you’re selling eco-friendly home goods, it will pinpoint countries where interest in sustainability is rising.
  2. Operational Guidance: The tool provides step-by-step guidance on logistics, regulations, taxes, and payment methods in your target markets. This reduces guesswork and streamlines your international expansion.
  3. Customized Marketing Insights: Learn how to tailor your marketing efforts for each market. With localized advertising tips, consumer behavior insights, and industry trends, you can create campaigns that resonate with local audiences.
  4. Data-Driven Decisions: The multiple charts and visualizations offered by Google Market Finder are incredibly helpful for spotting opportunities you might have missed. These visuals make complex data easier to understand and act upon.
  5. Free Access: As a free tool, it offers immense value without the need for hefty investments, making it accessible to businesses of all sizes.

Host Opencart in AWS Lightsail

How Does It Work?

  1. Enter Your Website or Industry: Start by inputting your website URL and selecting your industry categories from the dropdown menu. For webocreation, we selected E-Commerce & Retail Software and Software.

    Market Insights categories
  2. Potential Markets, Review Market Suggestions: The tool analyzes global data to provide you with a ranked list of potential markets based on demand and competition. Select Potential Markets, for us we selected California, Pennsylvania and New York.
    Potential Markets suggestion

  3. Explore Insights: Click on each suggested market to explore consumer behavior, purchasing habits, and logistical considerations.

    Market Insights Reports
    Read more: eCommerce business reports
  4. Operational Areas: In the Operational Areas, you can access guides on how to navigate legal, tax, and shipping requirements for your chosen markets.
  5. Market your Busineass: Use the provided marketing and advertising tips to reach your new audience effectively.

Key Features of Google Market Finder

1. Market Insights:

Discover where your products are in demand by leveraging Google’s massive data pool. Market Finder highlights search volume, average income, and market competitiveness for each potential market.

2. Operational Guidance:

Operational success is crucial when entering a new market. Market Finder provides localized insights into:

  • Shipping logistics
  • Payment methods
  • Legal and tax considerations
  • Customer support best practices

3. Marketing Tools:

From understanding cultural nuances to crafting ads in the local language, Market Finder provides detailed advice on how to market your product effectively in each country.

4. Interactive Charts and Visuals:

The tool’s intuitive interface presents data through interactive charts, making it easy to understand market trends, compare opportunities, and strategize accordingly.

Why We Love It

We used it to explore opportunities for our own business and were impressed by its user-friendly interface and depth of insights. The charts and data visualizations were particularly helpful in highlighting areas we hadn’t considered. For instance, we discovered a growing demand for our products in Southeast Asia, a region we hadn’t previously prioritized. With actionable insights on logistics and consumer preferences, we developed a targeted strategy to enter this market.

Who Should Use Google Market Finder?

it is ideal for:

  • Small to Medium-Sized Businesses (SMBs): Looking to explore export opportunities with minimal resources.
  • eCommerce Brands: Aiming to identify international markets for their products.
  • Service Providers: Wanting to expand their client base globally.
  • Marketers: Seeking data-driven insights to refine their global strategies.

Get Started with Google Market Finder Today

Expanding into global markets has never been easier, thanks to tools like Google Market Finder. With its data-driven insights, operational guides, and marketing recommendations, you can confidently identify and enter new markets without the typical hurdles of international expansion.

Ready to unlock your business’s global potential? Try Google Market Finder for free today and discover the opportunities waiting for you around the world.

Your business’s next big success could be just a market away!

How to customize the Opencart homepage? version 4

In this Opencart guide, we are showing how to customize the Opencart 3 homepage and make changes to layouts, and modules, edit homepage content in Opencart 3.

As the homepage of Opencart is made of modules, to change home page layout in opencart for demo data here are the steps:

Go to admin >> Design >> Layouts >> Edit the Home Layouts >> you will see similar like below:

Opencart homepage layout

You can see which modules are active on the homepage, in the demo data of Opencart 3 there are three modules which are active only in the Content Top layout. These three modules in Opencart are Slideshow module, Featured products module, and Carousel module. You can add and remove the modules as per your requirement in the layouts.

Where can you find modules in Opencart 3?

Go to Admin >> Extensions >> Extensions >> Choose the Extension type “Modules”, you will see all the modules here. Now see for the Slideshow module and edit it. You will find the settings for the Slideshow like in the image below:

Slideshow settings of Opencart

You can select the banner, give width and height and change the status. Likewise, you can make changes in the Featured products module and Carousel module. Similarly, you can activate the modules that you want to show on the home page, enable it. Then, add in the layouts. You can see the following video to install the module, configure it, uninstall it and remove it:

If you want to understand more about the layouts and positions then here are opencart layouts explained video:

Once you see the videos above then you understand how you can install, configure, uninstall and remove the module and understand how layout and position work in Opencart 3 by which you can make changes to any Opencart page and customize as per your need.

Please let us know if you have any questions or concerns. 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 4 Events by Examples – Opencart Tutorial

In this Opencart tutorial, we go through OpenCart Events. Opencart events are hooks that developers can attach custom code to, allowing them to execute specific actions at different points in the application’s lifecycle. Events can be triggered by various actions within the OpenCart system, such as user authentication, order creation, product editing, email sending, and more.

Event Types

Pre-Events:

Triggered before a specific action occurs. For example, a pre-event can be triggered before an order is saved, allowing developers to perform custom actions like validating order data.

Post-Events:

Triggered after a specific action occurs. For example, a post-event can be triggered after a product is edited, allowing developers to perform custom actions like updating related data. 

Using OpenCart Events:

To use OpenCart events, developers need to create an event listener, which is a function or method that responds to a specific event. An event completes the tasks that a controller, a model, a theme override, a language, and a config need to be achieved in the back-end of the store. Upon startup, the Engine automatically registers triggers, actions, and sorts orders in both the admin/controller/startup/event.php and catalog/controller/startup/event.php files.

Event listeners are registered using the addEvent method from the Event class. The method takes three parameters: the event name, the class/method to be executed, and the priority of the listener.

Example Code:

// In your custom extension, add this code to the controller
$this->event->addEvent('catalog/controller/product/product/after', 'extension/event/custom_event/afterProductView');

// Define the event listener in your custom event class
class ControllerExtensionEventCustomEvent extends Controller {
    public function afterProductView(&$route, &$data, &$output) {
        // Custom code to execute after a product view
        // Example: modify the product data before it's rendered
        $data['custom_text'] = 'This is a custom message after product view.';
    }
}

Registering Events:

Events can be registered in an extension’s install method or directly in the controller if needed.

It’s important to unregister events in the extension’s uninstall method to avoid any unwanted behavior after removing the extension.

Using Events for Customization:

Developers can use OpenCart events to customize and extend the platform in various ways, such as:

Adding custom logic to product pages, checkout processes, or other areas of the platform.

Modifying data before it’s displayed to the user.

Integrating with third-party services or APIs.

For developers, add event code, description, trigger, and action in the database. The action is the method that does what you want. The trigger is the path that you want for the existing Opencart controller and methods.

You can see all the events at >> Admin >> Extensions >> Events

Opencart events list

List of Events

Catalog and administer events. Here are the lists of Catalog events for different functionalities.

Language events

OpenCart’s language events system is an important part of managing and customizing language-related aspects of the platform. Language events allow developers to add, modify, or manipulate language files and translations within the OpenCart application. This is crucial for providing multilingual support and customizing the text displayed to users.

view/*/beforeDump all the language vars into the template.
controller/*/beforeBefore the controller loads stores all current loaded language data
controller/*/afterAfter the controller loads and stores all current loaded language data

Activity events

OpenCart’s activity events system allows developers to monitor and respond to user activities and other important events within the platform. These events are useful for tracking user actions, generating logs, and performing custom operations based on specific activities. This system enhances the ability to understand user behavior, provides better support, and maintains the platform effectively.

Here’s an overview of OpenCart activity events and how you can use them:

Understanding Activity Events:

Activity events in OpenCart track significant actions performed by users, such as login, logout, product views, purchases, and more.

These events enable developers to create custom responses and logs based on specific user activities.

Common Activity Events:

customer_login: Triggered when a customer logs in. This event is useful for monitoring login activity or taking specific actions upon login.

customer_logout: Triggered when a customer logs out. You can use this event to perform cleanup operations or logging.

product_viewed: Triggered when a product is viewed. Useful for tracking product popularity or taking custom actions based on product views.

order_added: Triggered when a new order is added. This event can be used to log order information or trigger post-order processes.

customer_register: Triggered when a customer registers a new account. Useful for sending welcome emails or performing other onboarding activities.

Creating Activity Event Listeners:

To use activity events, create event listeners that respond to specific events of interest.

Register event listeners in your extension’s controller using the addEvent method from the Event class.

// Registering an activity event listener in your controller
$this->event->addEvent('customer_login', 'extension/event/activity/onCustomerLogin');

// Define the event listener method in your custom event class
class ControllerExtensionEventActivity extends Controller {
    public function onCustomerLogin(&$route, &$args, &$output) {
        // Custom code to execute when a customer logs in
        // For example, log the customer login event
        $this->log->write('Customer logged in: ' . $args['customer_id']);
    }
}

Default Opencart Activity Event list:

catalog/model/account/customer/addCustomer/after
catalog/model/account/customer/editCustomer/after
catalog/model/account/customer/editPassword/after
catalog/model/account/customer/deleteLoginAttempts/after
catalog/model/account/customer/editCode/after
catalog/model/account/customer/addTransaction/after
catalog/model/account/affiliate/addAffiliate/after
catalog/model/account/affiliate/editAffiliate/after
catalog/model/account/address/addAddress/after
catalog/model/account/address/editAddress/after
catalog/model/account/address/deleteAddress/after
catalog/model/account/returns/addReturn/after
catalog/model/checkout/order/addHistory/before

Statistics events

catalog/model/catalog/review/addReview/after
catalog/model/account/returns/addReturn/after
catalog/model/checkout/order/addHistory/before

Theme event

OpenCart’s theme events system allows developers to customize and extend the behavior of themes within the platform. By using Theme events, you can modify how themes render content, alter page elements, and integrate custom logic to achieve a unique look and feel for your store.

Here’s an overview of OpenCart theme events and how you can utilize them:

Understanding Theme Events:

Theme Events are hooks that allow you to customize the rendering of pages and elements in your OpenCart theme.

These events are triggered during different stages of the rendering process and provide opportunities to manipulate the data or layout before it’s displayed to users.

Common Theme Events:

view/*/before: Triggered before rendering a view file in a specific directory, such as catalog/view/theme/[theme_name].

view/*/after: Triggered after rendering a view file in a specific directory.

template/*/before: Triggered before rendering a template file in a specific directory, such as catalog/view/theme/[theme_name]/template.

template/*/after: Triggered after rendering a template file in a specific directory.

Creating Theme Event Listeners:

To use the theme events, you need to create event listeners that respond to the specific events you want to customize.

Register event listeners in your extension’s controller using the addEvent method from the Event class.

// Registering a theme event listener in your controller
$this->event->addEvent('view/common/header/before', 'extension/event/theme/customizeHeader');

// Define the event listener method in your custom event class
class ControllerExtensionEventThemeCustomizeHeader extends Controller {
    public function customizeHeader(&$route, &$data, &$output) {
        // Custom code to modify the header before rendering
        $data['custom_message'] = 'Welcome to our store!';
    }
}

Here are lists of Opencart theme events:

view/*/before
view/*/after
template/*/before
template/*/after

Here is the main code for the catalog that controls the theme events: upload/catalog/controller/event/theme.php

class Theme extends \Opencart\System\Engine\Controller {
	/**
	 * Index
	 *
	 * @param string            $route
	 * @param array<int, mixed> $args
	 * @param string            $code
	 *
	 * @return void
	 */
	public function index(string &$route, array &$args, string &$code): void {
		// If there is a theme override we should get it
		$this->load->model('design/theme');

		$theme_info = $this->model_design_theme->getTheme($route, $this->config->get('config_theme'));

		if ($theme_info) {
			$code = html_entity_decode($theme_info['code'], ENT_QUOTES, 'UTF-8');
		}
	}
}

Admin Currency Events

model/setting/setting/editSetting
model/localisation/currency/addCurrency
model/localisation/currency/editCurrency

Admin Statistics Events

admin/model/catalog/review/addReview/after
admin/model/catalog/review/deleteReview/after
admin/model/sale/returns/addReturn/after
admin/model/sale/returns/deleteReturn/after

Translation Event

OpenCart’s translation events system allows developers to customize and extend the language and translation aspects of the platform. By using translation events, you can modify or extend the existing translations, add new language strings, and customize language files to achieve a more personalized or localized experience for your store. Here is the main code that you can find at upload/catalog/controller/event/translation.php and upload/admin/controller/design/translation.php

class Translation extends \Opencart\System\Engine\Controller {
	/**
	 * Index
	 *
	 * @param string $route
	 * @param string $prefix
	 *
	 * @return void
	 */
	public function index(string &$route, string &$prefix): void {
		$this->load->model('design/translation');

		$results = $this->model_design_translation->getTranslations($route);

		foreach ($results as $result) {
			if (!$prefix) {
				$this->language->set($result['key'], html_entity_decode($result['value'], ENT_QUOTES, 'UTF-8'));
			} else {
				$this->language->set($prefix . '_' . $result['key'], html_entity_decode($result['value'], ENT_QUOTES, 'UTF-8'));
			}
		}
	}
}

Admin Language Events

view/*/before
controller/*/before
controller/*/after

Testing Output with Opencart Events

By default, in the system/config/catalog.php file, the debug key and value are commented out at the bottom of the file because they should only be active for debugging purposes. Remove the comment from the code like below:

// Action Events
$_['action_event']      = [
	'controller/*/before' => [
		0 => 'event/modification.controller',
		1 => 'event/language.before',
		2 => 'event/debug.before'
	],
	'controller/*/after' => [
		0 => 'event/language.after',
		2 => 'event/debug.after'
	],
	'view/*/before' => [
		0   => 'event/modification.view',
		500 => 'event/theme',
		998 => 'event/language'
	],
	'language/*/before' => [
		0 => 'event/modification.language'
	],
	'language/*/after' => [
		0 => 'startup/language.after',
		1 => 'event/translation'
	]
];

After enabling debugging, you can test the code within the catalog/controller/event/debug.php file. You see the after and before methods. Here is an example of an after-method test to find all the routes used on the page.

Opencart events debugging

It is essential to undo the changes of the debugging by commenting out the debug line in the system/config/catalog.php file after testing.

Challenges

  • Performance Impact: Every event adds a layer of processing, which can slightly impact page load times, especially with numerous event handlers. Monitor performance and prioritize essential events to avoid noticeable slowdowns.
  • Debugging Complexity: Debugging problems within event handlers can be more challenging than traditional code because they may be triggered from different locations. Employ proper logging and testing practices to identify and resolve issues effectively.
  • Security Risks: Improper event handler implementation might introduce security vulnerabilities. Always validate and sanitize user input within event handlers to prevent potential security risks.
  • Maintenance burden: As your store and codebase grow, managing numerous event handlers can become complex. Organize your events and handlers logically, document their purpose, and update them regularly to maintain code clarity and avoid conflicts.
  • Version compatibility: While events strive for backward compatibility, updates to core files or other extensions might break event handlers. Thoroughly test your events after updates to ensure continued functionality.

Best Practices while using Opencart Events:

  • Use events judiciously: Don’t overuse events for simple tasks that can be handled efficiently within core files. Reserve events for extending functionality beyond core capabilities.
  • Write clean and efficient code: Optimize your event handlers for performance and avoid unnecessary processing.
  • Test thoroughly: Test your event handlers under various scenarios, including edge cases and potential conflicts with other extensions.
  • Document your work: Document the purpose and logic of your event handlers to facilitate future maintenance and collaboration.
  • Stay updated: Monitor changes in OpenCart and event-related functionality to adapt your code when necessary.

Please let us know if you have any questions or suggestions. Please subscribe to our YouTube Channel for Opencart video tutorials, and you can see more in the Opencart tutorial category. You can also find us on Twitter and Facebook. Enjoy!

Order Statuses management in Opencart 4 – Opencart User manual

In Opencart 3 we can manage the order statuses. For that go to admin >> System >> Localization >> Order Statuses then click “Add New” and you can enter the Order Status Name. In this section, you can create order statuses that you can use on Payment gateways and manage sales orders. The image below shows default order statuses provided in the Opencart 3:

Order statuses

By default, Opencart provided all the possible order statuses but if you want to add a new order status for your requirement. Then click then click “Add New” blue button in the top right and you will get the form like below:

Order status name opencart

Enter the order status name and click save and your order status is saved so that you can see it in multiple places like Sales orders, payment gateway settings and many more.

Order status global setting

There are some order status settings at admin >> System >> Settings >> edit the store >> click Options tab and go to the checkout section where you can find following order status settings:

Order status setting Opencart

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.

Order statuses at Payment gateways

With the above default settings for order statuses, each payment gateway has its own order statuses settings. Like for example, the PayPal payments standard module supports all the order status like in the below example. If an order is canceled then the logged order status will be Canceled as per the setting below. So don’t forget to set up the order status for the payment gateway that you are using. For that go to admin >> Extensions >> Extensions >> Choose the payments as the extension type, which will list out all the payment gateways that are available and edit the one you are using and check the order status.

Paypal order status Opencart

For Cash on Delivery, the order status is only pending as per the setting below as it does not have all other settings support like for the PayPal. So when someone ordered with Cash on Delivery then all order goes to pending then you can change it on Order History.

cash on delivery order status opencart

Customer Order status in Order History

In the image below the order status is shown in the Order history section. To see it go to admin >> Sales >> Orders >> View one of the order. Then in the Order History section, you can see the drop-down of Oder status which you can notify the customer if needed with the order status. If you don’t notify then it will not show in the order history of the customer at the frontend section. Like this the order status is used, so you can add new order status as per your need.

Add history order status Opencart

You can see the order statuses mostly in payment gateways, sales orders, and Customer Orders Report. You can get reports as per the filtering of the order status.

Latest order with order status

Customers can see the order status when they check their Order history and view their order. Their order statuses are shown in the Order history section:

Customer order status

In this way, you can manage the Order statuses in 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, subscribe to our YouTube channel for opencart tutorials, and click to see all Opencart user manual.

Stock Statuses management and product availability in Opencart 4

In Opencart 3 we can manage the stock statuses. For that go to admin >> System >> Localization >> Stock Statuses then you can enter the Stock Status Name. In this section, you can create Out of Stock statuses to be displayed on the product page when a product is out of stock. The image below shows default stock statuses:

Stock statuses Opencart

Opencart has multiple stock settings at admin >> System >> Settings >> Edit the store >> and go to Option tab >> Stock section, you will see multiple settings for Stock.

settings for out of stock 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.

If you select the Display Stock to Yes then you can select which Stock Status name to show on the product page. Go to admin >> Catalog >> Products >> Edit/Add the product >> go to the Data tab, then go to the Out Of Stock Status field then you can choose which Stock status name to show in the frontend on the product page.

Product stock statuses Opencart

As in the below image, it will show the Out of Stock Status in the frontend.

Stock statuses frontend Opencart

In this way, you can manage the Stock statuses in 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, subscribe to our YouTube channel for Opencart tutorials, and click to see all Opencart user manual.

How to install extensions in OpenCart 4

We can install Opencart extensions, module in two ways, directly from admin section Marketplace and another is using FTP or SFTP.

Directly from admin section Marketplace:

We set it up but not able to find the required modules although we searched for the same name of the modules which is frustrating with this setup because all modules developer may not have *.ocmod.zip file.

Another issue can be server issue if your file_get_contents are not active then it will install the module:

Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0
Failed to open stream no suitable wrapper could be found

Uploading files and folders from FTP

  • Upload files from FTP and you are set

Uploading Ocmod file directly from the admin section:

  • Download the *.ocmod.zip file for the modules and then upload from admin>>extensions>>Installer

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!

Master Product and Variant Product in Opencart

In Opencart we can create a variant product based on the master product. A product variant is a pre-defined option product. For example, let’s say we add a product with red and blue options (product id 50), now we can create a variant based on this product and select the option red only to make the red variant product (product id 51 with master id 50).

How to add the product variant in Opencart?

Go to products listing or Catalog>>Products and click the dropdown near the edit button in the Action column and you will see the “Add Variant”, click it and you are ready to add the variant.

Add Variant Opencart

Once you clicked the “Add Variant”, all the data of the master product is copied and a new product is created where you can override the data as per your need. Please note that when you override the variant product data, the field data which is changed will not get replaced with the master product data when the master product data is changed and saved. If the field data is not overridden then when master product data is changed the changes will be seen on the variant product as well.

How to override the variant product data?

In the Variant product, you will see a toggle icon for every field where you can click On it and change the field data as per your need.

Opencart Product Variant

Let’s say you change the product name but did not change the product description of the product variant, then when you changed the product name and description of the master product then the changes will be seen only on the product description but not on the product name. Variants products are pre-selected options so you cannot change the options on the variant product.

Note: if you save the product variant after the master product’s data is changed then the variant product overridden data is replaced by the master product’s data, so be careful.

Select the Option:

Option selection for product variant

Change the SEO URL:

Product Variant SEO URL

Now click save and you have added the product variant.

Opencart product variant

As the product variants are also added like new standalone products so you can view them on the category page as well.

Improvements needed:

  • When we select the option in the master product and have the product variants, then it would be better to show the product variant page.
  • When the option price is added, it is better to show the added price on the product variant page, right now it is showing as the product price instead of the Option price.
  • SEO improvements for the product variants.

Conclusion:

In this way, you can easily create product variants from master products and customize your own data except for options and making it easy to create product variants. Please let us know if you have any kind of projects, you can email us at webocreation.com@gmail.com. Hope you liked this tutorial, please subscribe to our YouTube Channel and get more Opencart free extensions. You can also find us on Twitter and Facebook.

Filters in Opencart 4: Overview, Setup, and Use Cases

In Opencart 4, filters allow customers to quickly narrow down product searches based on specific attributes like size, color, price range, rating, or brand. Filters enhance the shopping experience by allowing customers to easily find products that match their needs, leading to higher conversion rates and a more user-friendly interface.

This guide will cover how filters work in Opencart 4, including filter groups, assigning filters to products, and how to use them in categories.


1. Understanding Filters and Filter Groups

Filters in Opencart are used to categorize and display product attributes. These attributes can be anything that is relevant to your product line, such as size, color, brand, material, and more.

Filter Groups are categories of filters that organize related attributes together. For instance, a Color filter group may contain individual color filters like Red, Blue, Green, and so on. Similarly, a Size filter group might include filters for Small, Medium, Large, etc.

Key Terminology:

  • Filter Group: A collection of filters (e.g., Color, Size, Brand).
  • Filter: An individual attribute within a filter group (e.g., Red, Blue, Green for the Color group).

2. Setting Up Filters and Filter Groups

To set up filters and filter groups in Opencart 4:

Creating Filter Groups and Filters:

  1. Access the Filters Section:
    • Navigate to the admin panel: Catalog > Filters.
    • Here, you can add or manage filter groups and individual filters.
  2. Add a Filter Group:
    • Click on Add Filter Group to create a new group (e.g., “Color”, “Size”, “Brand”).
    • Enter the name of the group (e.g., Color, Size, Material).
    • Save the filter group.
  3. Add Filters to the Group:
    • Once a filter group is created, you can add filters (e.g., Red, Black, White, Silver) to the group.
    • Click on Add Filter and enter the filter details. Assign filters to the relevant group (e.g., Red, Black etc under the Color filter group).
    • Save the filters.
Filters group and filters in the Opencart

Assigning Filters to Categories:

  1. Go to Categories:
    • Navigate to Catalog > Categories and select the category where you want to enable filters.
  2. Enable Filters for Category:
    • In the category edit page, under the Filter tab, choose which filters are applicable for that category.
    • Enable and save the selected filters for the category.
Assign filter to category in Opencart

Assigning Filters to Products:

  1. Navigate to Products:
    • Go to Catalog > Products and select the product you want to assign filters to.
  2. Assign Filters:
    • On the product edit page, find the Filters tab.
    • Select the relevant filters from the available filter groups (e.g., size, color, brand) and assign them to the product.
    • Save the changes.
Assign filter to product in opencart

3. Using Filters in the Frontend (Store)

Once filters and filter groups are created and assigned to products and categories, customers can use the filters on the front end to narrow down their product search.

  • Filters will appear on the category pages in the store, usually in the sidebar or as a dropdown. To show the filter first you need to enable the Filter module.
    • Go to Admin >> Extensions >> Extensions >> Filter out with modules >> Install the Filter module >> Edit it and Enable the filter module
      Opencart filter module
  • Once enabled, add the Filter module to the category layout. For that, go to admin >> Design >> Layout >> Edit the Category and add the Filter module, which we added in the left column >> Save the layout.
    opencart filter layout
  • Now, customers can select filters on the category page (e.g., Color: Red, Black, etc.) to refine the product listings based on their preferences.
Filter or refine search in Opencart
  • Now customers or visitors can use the Refine search to filter out the products.
Filtered our products in Opencart

Opencart 4 allows for various filter display options, including checkboxes, dropdown lists, and multi-select options, which provide flexibility for the store design.


4. Examples of Filters and Filter Groups

Here are some common examples of filters and filter groups for different product categories:

Example 1: Clothing Store

  • Filter Group: Color
    • Filters: Red, Blue, Green, Black, White, etc.
  • Filter Group: Size
    • Filters: Small, Medium, Large, X-Large, etc.
  • Filter Group: Material
    • Filters: Cotton, Polyester, Leather, Silk, etc.

Example 2: Electronics Store

  • Filter Group: Brand
    • Filters: Samsung, Apple, Sony, LG, etc.
  • Filter Group: Price
    • Filters: $0 – $50, $51 – $100, $101 – $500, $500+.
  • Filter Group: Features
    • Filters: 4K, Touchscreen, Wi-Fi, Bluetooth, etc.

Example 3: Furniture Store

  • Filter Group: Material
    • Filters: Wood, Metal, Plastic, Fabric, Leather.
  • Filter Group: Style
    • Filters: Modern, Vintage, Classic, Industrial, etc.
  • Filter Group: Size
    • Filters: Small, Medium, Large, Custom.

5. Use Cases of Filters in Opencart 4

Filters are essential for providing a better customer experience in your store. Below are some use cases and scenarios where filters can significantly improve product discovery:

Use Case 1: Narrowing Product Choices

  • Scenario: A customer is shopping for a T-shirt in your online clothing store. They want a Red T-shirt in Medium size. Instead of browsing through all products, they can use filters for Color and Size to quickly find the products they’re looking for.
  • Outcome: The customer saves time and finds the right product more easily, improving their shopping experience.

Use Case 2: Price Range Selection

  • Scenario: A customer is looking for a new smartphone, but their budget is limited to $300. They can filter products by Price to only show phones in that price range.
  • Outcome: The customer finds relevant products within their budget, leading to a higher likelihood of conversion.

Use Case 3: Sorting Products by Features

  • Scenario: A customer browsing laptops in your electronics store may want one with Bluetooth or Wi-Fi. They can filter by product Features such as Wi-Fi or Bluetooth to refine their search.
  • Outcome: The customer finds exactly what they need and is more likely to make a purchase.

Use Case 4: Finding Specific Categories of Products

  • Scenario: In a furniture store, a customer is searching for a Wooden Coffee Table. By applying the Material filter for Wood, the customer can narrow down their choices without needing to scroll through unrelated furniture.
  • Outcome: The customer is able to focus on the specific product category they are interested in, improving their shopping efficiency.

Use Case 5: Product Comparison

  • Scenario: A customer wants to compare different brands of Smartwatches. By using the Brand filter and selecting multiple brands, the customer can compare products side by side based on specifications, prices, and features.
  • Outcome: The customer gains clarity on their options, making it easier to choose the best smartwatch for their needs.

Conclusion

Filters in Opencart 4 are a crucial tool for improving product discovery and the overall shopping experience. By setting up Filter Groups and Filters, assigning them to products and categories, and presenting them in an intuitive way on the front end, you can enable customers to find the exact products they are looking for more easily. Whether you sell clothing, electronics, or furniture, using filters can streamline the browsing process, increase customer satisfaction, and ultimately boost sales. We hope you liked this article, please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Webocreation Twitter and Webocreation Facebook. Please let us know if you have any questions or concerns.

How to set free shipping, flat rate shipping, shipping as per item, or pick from a store in Opencart?

In this Opencart tips and tricks, we are showing you to set different shipping methods like free shipping on Opencart, similarly flat rate shipping, shipping rate as per item, free shipping after some amount is reached on total orders, pick from store setup, flat rate up to 100 and then free shipping and so on. We are using Opencart 4.0.1.1 version for demo purposes but it is similar to other Opencart versions. Let’s start with a free shipping setup.

How to set up free shipping in the Opencart store?

To set up the free shipping, log into the admin section >> Extensions >> Extensions >> select Shipping, where you will see lists of available shipping extensions, install the “Free Shipping” extension if it is not installed, after that click the edit and you will see a form like below where you can enter total as 0, select the geo zone as “All Zones”, toggle to enable the status and sort order to 0 and click the blue button to save the setting. With this your free shipping extension is active.

free shipping opencart

Now, when someone checkout, they will see the free checkout option on the Shipping methods.

Free shipping method Opencart

Read more: Set up taxes with geocodes US tax for California residents 8.75%

How to set up a flat shipping rate in the Opencart store?

You can set the flat shipping rate similar to the free shipping, log into admin >> Extensions >> Extensions >> select Shipping >> install “Flat rate” extension and edit it. You will see a form like below, where you enter the amount in the Cost field for flat shipping.

Flat shipping rate Opencart

Now, let’s set up a combination of free shipping and flat-rate shipping.

Read more: Show multiple flat rates shipping as per total

How to set up free shipping for over $100 and for below it will be $5 flat-rate shipping?

First, we need to install both free shipping and flat rate extensions, which you can do like above. Once extensions are installed, then edit the free shipping extension and enter the setting in the form as shown below, the only change is the Total field is set to 100. That 100 is the sub-total amount needed before the free shipping module becomes active.

free shipping after 100

You can set the flat rate cost of 5 and you are good to go. Now free shipping is shown only when the sub-total reached 100.

How to set the shipping rate per item?

in some cases, you need to set the shipping rate per item, in that case, also Opencart provides default extensions, log into admin >> Extensions >> Extensions >> select Shipping >> install “Per Item” extension and enter the cost for each item.

Per item shipping Opencart

With this now if you order two items then shipping will be 20. Here is one example, we order 2 Macbooks and the shipping is 20.

Shipping rate calculation per item

How do you can set up pick up from the store shipping in the Opencart store?

Similar to other extensions, you can install the “Pickup From Store” extension and edit it, enable the status and you will see the Pick up from store option in shipping methods.

Pick from store Opencart setting

How to set up a weight-based shipping rate?

First, you need to set up weight classes and then add the weight for each product. Once the weight is added for products you can use the weight-based shipping rate. You can install the “Weight Based Shipping” extension, edit it and you will set up the general options like below:

weight based shipping

Learn about: What is ‘Zone Shipping’ and how do we set it up?

You will see a general tab and other Zone shipping tabs. In the general tab, select the tax class, enable the status and enter the sort order as you like to show in the Shipping methods. In the Zone shipping let’s select the UK shipping tab, you can enter the rates in the format of weight:cost comma weight:cost and enable the status. Here is an example:

weight based shipping rate

Let’s say your weight setting is Kilogram at Settings >> Local tab >> Weight class. Then, with that rate setting, it means that 5 kilograms of product cost 10 and 10 kilograms, and more costs 15. So you can set those options as many as you want.

In this way, you can set shipping methods in Opencart. Please let us know if you have any 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 Google reCAPTCHA, how to show in the contact us page?

With advancement of versions OpenCart is using best opensource like bootstrap, flex slider, Magnific Popup: Responsive jQuery Lightbox Plugin, OWL Carousel, font awesome and for captcha now it is using Google reCAPTCHA, in this blog post we will show you how to set it up in contact us page so captcha is easy for human and tough for the bots and in part 2 I will show how to make it work in registration page.

Go to the link below to see how to set up in OpenCart version 2.3.0.1
https://webocreation.com/set-google-recaptcha-basic-captcha-opencart-2-3-0-1

What do you mean by Google reCAPTCHA?
reCAPTCHA is a free service to protect your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease. Get more details from https://www.google.com/recaptcha/intro/index.html

How does it work?
It is demonstrated by the following videos.

Now let’s move with OpenCart.

How to set it up in OpenCart?

  1. Go to https://www.google.com/recaptcha/admin (login with Gmail account if not) and enter your Label(Any name) and domain name(website URL).
     
google recaptcha for opencart
Google Recaptcha for opencart

When you click the Register button, you will get the site key and secret key.

OpenCart site key and secret key of google reCaptcha
OpenCart site key and secret key of google reCaptcha

Now go to the admin section of OpenCart site and go to System >> Setting and edit your store and go to Google tab.

opencart google recaptcha

Go to contact us page and you will see that Google ReCaptcha is activated.

Activate google reCaptcha at OpenCart Contact us page
Activate google reCaptcha at OpenCart Contact us page

Now in Part 2, we will discuss how to show google reCAPTCHA at other pages like at registration page.
Part II: OpenCart is using Google reCAPTCHA, let set it up in registration page Part 2

Manage Admin dashboard in Opencart 4, add and remove widgets

In this Opencart user manual, we are showing about the dashboard in the administration area of Opencart, right now there are 8 default widgets provided by Opencart: Recent Activity, Sales Analytics, Total Customers, World Map, People Online, Total Orders, Latest Orders, and Total Sales.

When you login in the admin section then you can see the dashboard with some widgets like below:

Dashboard widgets on Opencart admin

How to enable and disable Dashboard widgets in the Opencart admin section?

You can enable and disable those widgets as per your needs. Please go to admin >> Extensions >> Extensions >> Choose the extension type >> Dashboard.

Dashboard widgets Opencart

When you edit the widgets then you can see the settings like the image below:

Dashboard widget settings Opencart

The width is the size of the widget, the total width is 12 and we can resize the width of widgets as per our need. Here you can select the status to enable and disable the widget. Also, we can sort order the widgets as well.

There are 8 widgets to show in Opencart Dashboard:

Recent Activity

You can activate the reporting of recent activity from the admin >> System >> Settings >> edit the store >> then in the Options tab >> find the Customers Activity and select Yes. Once you activate then you start seeing customer recent activities. You can see details of reporting in Opencart here.
https://webocreation.com/reports-whos-online-and-statistics-reports-in-opencart-3/

Sales Analytics

Sales analytics shows the sales chart for orders and customers.

Total Customers

Total customers show the total number of customer

World Map

The World map shows the numbers of orders and sales total on the map of the country.

People Online

People online shows the number of people is that are online now if yours just always says zero well it may be true there may only be zero people online at the time or your settings is not logging the people online, you can see admin >> System >> Settings >> Option tab >> Account section and select Yes for customers online. Most importantly it is better to off or disable it because it will insert data in the database for each visitor so if visitors are a lot then it is not a good idea.

Total Orders

The total orders widget shows the total number of orders placed.

Latest Orders

The latest orders widget shows the latest 10 orders placed.

Total Sales

The total sales widget shows the total sales amount.

In this way, you can add custom fields in Opencart 4 for customers, addresses, and affiliates. 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 manual.

What is ‘Zone Shipping’ and how do we set it up?

Zone Shipping is simply shipping that is based on the different destinations, or geo zones, based on the weight of the total order. For example, if your shipping from California USA. You can set a rate to other customers in other states, or other countries by setting up a zone for each destination and then setting the shipping price for each weight range from you to other places.

Setup:

  1. Set up a new zone in Admin->Configuration->Localisation->Geo Zones
  2. Click on the “Insert” icon to add a new ‘Geo Zone’
  3. Call it “USA Shipping Zone” and click Save. You should now have a USA Shipping Zone in the list.
  4. Click on the yellow folder icon to the left of the title
  5. Click on the “Insert” icon to add a new ‘Zone to Geo Zone’
  6. From the ‘Country’ dropdown, choose ‘United States’
  7. From the ‘Region / State’ dropdown, choose an individual state, or choose ‘All Zones’ for the same rate to all 50 states & provinces
  8. Click ‘Save’.
  9. Repeat this process for UK, Australia, China, Japan, etc. anywhere you want to exclusively allow this type of shipping to.
  10. Go to Extensions->Shipping, find ‘Zone’ and click the “wrench/spanner” icon to configure it
  11. You should see textboxes for all your new zones. Enter the cost per weight range in each of the cost fields, based on the rates you want to use. The format is:
  12. Weight: Cost with multiple values separated by a comma: 5:2.00, 10:4.00

Using the above example (with lbs and $ for the example) would mean that
– Orders from 0-5.0lbs, the shipping cost is: $2.00
– Orders from 5.1-10.0lbs, the shipping cost is: $4.00
– Orders from 10.1lbs+ would not be eligible for zone shipping

Set Shipping to Selected Countries Only in OpenCart

By default, OpenCart has every country enabled in your Localisation settings. What if your online store only caters to a few countries. Disabling them all in the admin panel one by one would be a pain. You would have to:

  1. Open System > Localisation > Countries menu in admin panel.
  2. Click Edit on the country you want to disable.
  3. Choose Disabled in the Status field.

You would have to iterate this process several times if you are to do this manually.

A solution to this is to disable all of them at once through an SQL statement and enable the countries individually in the admin panel which is about a hundred times easier than the latter. Here’s how:

  1. Open your OpenCart database in phpMyAdmin or any other database management tool you use.
  2. Execute the following SQL: UPDATE country SET status=0. This SQL statement sets the Status of all countries to Disabled.
  3. Go back to your admin panel and enable your selected countries manually.

When a visitor registers as a customer in OpenCart, only the enabled countries will appear.

We hope this helps someone. 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!

Set up Google reCaptcha or Basic Captcha in OpenCart 3.0+ and 2.3.0.1+

Now in OpenCart 3.0 and 2.3.0.1 version, it is very easy to setup google reCaptcha in multiple pages. Forms of Opencart that google reCaptcha supported are  Register, Guest Checkout, Reviews, Returns, and Contact.

Basic Captcha:

  • Go to Extensions >> Extensions >> In Choose the extension type >> Captchas (2)
  • Now click the green button to install the Basic Captcha
  • Click the blue edit button of Basic Captcha
  • Choose Enabled from the status
  • Click save and you are set

Google reCaptcha:

  • Go to Extensions >> Extensions >> In Choose the extension type >> Captchas (2)
  • Now click the green button to install the Google reCaptcha
  • Click the blue edit button of Google reCaptcha
  • How to set it up in Google reCaptcha admin?
    1. Go to https://www.google.com/recaptcha/admin (login with Gmail account if not) and enter your Label(Any name) and domain name(website URL). New style with reCAPTCHA v3:
      google recaptcha for opencart
      After entering the label select the reCAPTCHA type “reCAPTCHA v2” and then select

      Old style:

      google recaptcha for opencart
    2. When you click the register button, you will get the site key and secret key in the Keys tab. New style:
      google recaptcha for opencart
      Old style

       

      OpenCart site key and secret key of google reCaptcha
  • Enter the Site key and Secret key from the google reCaptcha page
    basic-captcha
  • Choose Enabled for the Status
  • Click save and you are set.

Activate in forms:

Go to Admin >> System >> Settings >> Edit the Store >>  Click on Option tab >> Near the bottom you will see the Captcha section :

captcha-in-page

Choose whichever captcha you want to show in the site and then click save.

Now go to contact us page:

presentation-layer-contactus-captcha

If you get an error like:
ERROR for site owner: Invalid key type

error in google recaptcha for opencart

Then please check whether your domain is added correctly or not. Another problem is whether you are using reCAPTCHA v2 or not.

Let us know through comment or email at webocreation.com@gmail.com if you are having any issues.

Show images for the sub-categories in the opencart versions 2.3, 3, and 4

This Opencart tip is to show images for the sub-categories in the Opencart version 2.3, but you can make changes as per the following instructions.

Opencart 2.3

Find the following code at catalog\controller\product\category.php

$data['categories'][] = array(
	'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
	'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
);

Replace the code with the below code:

$data['categories'][] = array(
	'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
	'image' => $this->model_tool_image->resize($result['image'], 100,100),
	'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
);

Changed is ‘image’ => $this->model_tool_image->resize($result[‘image’], 100,100), if you have to increase the size then change 100 to other values.

Find the following code at catalog\view\theme\default\template\product\category.tpl

<?php if ($categories) { ?>
<h3><?php echo $text_refine; ?></h3>
<?php if (count($categories) <= 5) { ?>
<div class="row">
  <div class="col-sm-3">
    <ul>
      <?php foreach ($categories as $category) { ?>
      <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
      <?php } ?>
    </ul>
  </div>
</div>
<?php } else { ?>
<div class="row">
  <?php foreach (array_chunk($categories, ceil(count($categories) / 4)) as $categories) { ?>
  <div class="col-sm-3">
    <ul>
      <?php foreach ($categories as $category) { ?>
      <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
      <?php } ?>
    </ul>
  </div>
  <?php } ?>
</div>
<?php } ?>
<?php } ?>

Replace with the below code

<?php if ($categories) { ?>
      <h3><?php echo $text_refine; ?></h3>
      <?php if (count($categories) <= 5) { ?>
      <div class="row">
        <div class="col-sm-3">
          <ul>
            <?php foreach ($categories as $category) { ?>
            <li> <a href="<?php echo $category['href']; ?>">
                <?php if($category['image']){ ?>
                <img src="<?php echo $category['image']; ?>" ><br>
                <?php } ?>
                <?php echo $category['name']; ?></a></li>
            <?php } ?>
          </ul>
        </div>
      </div>
      <?php } else { ?>
      <div class="row">
        <?php  foreach (array_chunk($categories, ceil(count($categories) / 4)) as $categories) { ?>
        <div class="col-sm-3">
          <ul>
            <?php  foreach ($categories as $category) { ?>
            <li><a href="<?php echo $category['href']; ?>">
                <?php if($category['image']){ ?>
                <img src="<?php echo $category['image']; ?>" ><br>
                <?php } ?>
                <?php echo $category['name']; ?></a></li>
            <?php } ?>
          </ul>
        </div>
        <?php } ?>
      </div>
      <?php } ?>
<?php } ?>

Extra code added is below and there are two places to add the code:

<?php if($category['image']){ ?>
      <img src="<?php echo $category['image']; ?>" ><br>
<?php } ?>

You are set for the default theme, but if you are using a custom theme then you have to manage as per your theme.

Opencart 3 and Opencart 4

Find the following code at catalog\controller\product\category.php

$data['categories'][] = array(
	'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
	'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
);

Replace the code with the below code:

$data['categories'][] = array(
	'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
	'image' => $this->model_tool_image->resize($result['image'], 100,100),
	'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
);

Changed is ‘image’ => $this->model_tool_image->resize($result[‘image’], 100,100), if you have to increase the size then change 100 to other values.

Find the following code at catalog\view\theme\template\product\category.twig

{% if categories|length <= 5 %}
          <div class="row">
            <div class="col-sm-3">
              <ul>
                {% for category in categories %}
                  <li>
                  <a href="{{ category.href }}">{{ category.name }}</a>
                  </li>
                {% endfor %}
              </ul>
            </div>
          </div>
        {% else %}
          <div class="row row-cols-sm-2 row-cols-lg-4">
            {% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %}
              <div class="col">
                <ul>
                  {% for child in category %}
                    <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                  {% endfor %}
                </ul>
              </div>
            {% endfor %}
          </div>
          <br/>
        {% endif %}

Replace with the following:

{% if categories|length <= 5 %}
          <div class="row">
            <div class="col-sm-3">
              <ul>
                {% for category in categories %}
                  <li>
                  {% if category.image %}
                    <div>
                      <img src="{{ category.image }}" alt="{{ category.name }}" title="{{ category.name }}" class="img-thumbnail"/>
                    </div>
                  {% endif %}
                  <a href="{{ category.href }}">{{ category.name }}</a>
                  
                  </li>
                {% endfor %}
              </ul>
            </div>
          </div>
{% else %}
          <div class="row row-cols-sm-2 row-cols-lg-4">
            {% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %}
              <div class="col">
                <ul>
                  {% for child in category %}
                    <li>
                    {% if child.image %}
                      <div>
                        <img src="{{ child.image }}" alt="{{ child.name }}" title="{{ child.name }}" class="img-thumbnail"/>
                      </div>
                    {% endif %}
                    <a href="{{ child.href }}">{{ child.name }}</a>
                    
                    </li>
                  {% endfor %}
                </ul>
              </div>
            {% endfor %}
          </div>
          <br/>
{% endif %}

The following are codes added in the above

{% if category.image %}
          <div>
                      <img src="{{ category.image }}" alt="{{ category.name }}" title="{{ category.name }}" class="img-thumbnail"/>
          </div>
{% endif %}

And

{% if child.image %}
       <div>
               <img src="{{ child.image }}" alt="{{ child.name }}" title="{{ child.name }}" class="img-thumbnail"/>
        </div>
{% endif %}

With the above changes now you can see images for the sub-categories, for example:

Opencart Category

By changing like above code, you can show images for the sub-categories on the category page of Opencart

Manage menu and change navigation or menu in Opencart

The main menu in Opencart displays categories that are selected to show in the top menu, it only works for the top parent categories. Right now you can manage the top menu to show the categories, we see some hidden codes and modules that Opencart default is trying to come up within the upcoming version but for now, we can change the navigation just by handling the categories. We will show you one easy way to add the item in the top menu with the OCMOD module.

Show top level categories in the main menu

In default Opencart you can see the menu items like the image below:

Main menu in Opencart

To change the categories, please log in to the Opencart admin then go to Catalog >> Categories where you will see lists of categories. You can edit the existing top-level categories or add the new categories. Then in the data tab, you will see a Top checkbox field where you can check to show in the main menu.

Categories data tab main menu Opencart

It works only for top-level categories, do not work for sub-categories. All sub-categories are shown in the dropdown of the top-level category of the menu. Just below the Top field, there is the Columns field which is for the dropdown menu column distribution, the number of columns to use for the bottom 3 categories. For example, you can see the “MP3 Players” category of default demo data of Opencart whose Top field is checked and in Columns field it is added 4 like:

dropdown menu in Opencart

The output menu looks like below in demo data of Opencart.

4 columns top menu Opencart

In this way, you can show the top level categories in the top main menu of Opencart.

Add custom menu item in Opencart main menu

For that, we are showing you by creating OCMOD module. Let’s create install.xml file and then copy the following code and paste in the install.xml

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>Custom Menu</name>
    <version>3.0</version>
    <author>Rupak Nepali</author>
    <link>https://webocreation.com</link>
    <code>webocreation_custom_top_menu</code>
    <description>Custom Menu for Opencart</description>

    <file path="catalog/view/theme/*/template/common/menu.twig">
        <operation>
            <search><![CDATA[{% for category in categories %}]]></search>
            <add position="before"><![CDATA[
                <li><a href="https://YOURURLHERE">TEXTHERE</a></li>
            ]]>            </add>
        </operation>
    </file>
</modification>

In the code above find https://YOURURLHERE and replace with your URL and find TEXTHERE and replace it with your text to show. Once you change them, compress the install.xml and rename the zip file as custom-menu.ocmod.xml. Then, go to admin >> Extensions >> Installer and upload the custom-menu.ocmod.xml. After that go to admin >> Extensions >> Modifications and click the refresh button. Once you did above steps then it will show like in the image below:

Custom menu OCMOD Opencart

In this way, you can add the custom menu item in the Opencart main menu. Please don’t forget to post your questions or comments or errors so that we can help you. You can follow us at our twitter account @rupaknpl. Subscribe to our YouTube channel for Opencart tutorials, and click to see all Opencart tips and tricks.

How do reward points work in Opencart 4?

Today we came across a question, How do reward points work in Opencart 4? How do we set up the reward points in Opencart 4? Here are the process and steps to setup it up:

How to enable and disable the reward points in Opencart?

Go to the admin section of the Opencart
Extensions >> Extensions >> Choose Order Total >> Then Install the Reward Points >> Edit and you can select Enabled or Disabled.

Opencart Reward System

How to set the reward points for each product?

Set reward points for products in Opencart

In the image above, 5000 is the reward points that the customers can buy the product and 200 is the reward points that the customer get on buying the product.

How this 200 reward point is added to the customer as in the example?

Go to the Sales>>Order>>View order that contains the reward gaining product and click “add the reward”

Assign rewards points to buyers

This means we have to process each order. If you don’t see the Add the reward then it means there is a reward point for products in the respective order.

The administrator can directly provide reward points to the customer as well from the customer’s sections. Go to Customers>> Customers >> Edit one >> Click Reward Points tab and Insert the description and the Rewards points that admin wants to assign to the customers.

Add reward points for customer

Customers can see their rewards points by going to the Reward Points and they can view their details at:

Customer reward points

In this way, you can set up the Opencart reward points. 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.

How to upgrade from Opencart 3.0.3.8 to Opencart 4.0.2.2? and minor versions of 4

We started upgrading some of our clients to Opencart 4.0.2.2 from Opencart 3.0.3.8. Here are the steps that we follow and some of the issues that we face and their solution to fix the issue.

Before upgrading:

Undertake a meticulous pre-upgrade assessment to identify and address potential issues

  • Backup Backup Backup – database, files and folders, and images, if you are using downloads, don’t forget to backup both the system and the storage download.
  • Review system requirements – mainly Opencart 4 needs PHP 8.0+, so make sure your hosting or servers can be upgraded to PHP 8.0+
  • Plan and check for extensions and themes – ensure all extensions, modules, and themes are available in Opencart version 4 to fulfill your requirements. Many modules are still not upgraded to the Opencart 4 version.
  • Review the custom modifications that are added to the OpenCart 3 installation, you’ll need to upgrade those changes to OpenCart 4. All OCMOD customization will not work on Opencart 4. Either you have to convert it to an event system or install the VqMod in Opencart 4 and change the OCMOD to VqMod
  • Prepare the staging/testing: Set up a staging environment and test the upgrade process there first. This allows you to identify and resolve any issues before applying the changes to your live store.

Backup of all things before you start and make sure twice everythinG is Backed up

While upgrading:

First, do everything in the development or testing environment and then only do the same thing to live servers. Download the Opencart 4.0.2.2 version, this is the latest while we were upgrading. Then, extract the zip file and upload all of the files inside the Upload folder to your server. In some of the cases we use SFTP, this is a way we do this if we have not set up any CI/CD for clients else we follow Continuous integration and continuous deployment.

File override while Opencart Upgrade

Once you upload all the files and folders, now run YOURWEBSITEURL/install, then you will see like below:

Opencart 4 admin url to upgrade

Patch one and Patch two are easily applied.

Opencart Upgrade process

We started seeing errors in Patch Third. We see errors like the following:
Error one:

SyntaxError: Unexpected token '<', "<b>Excepti"... is not valid JSON
parsererror
<b>Exception</b>: Error: Table storage engine for '#sql-263_175e' doesn't have this option<br/>Error No: 1031<br/>ALTER TABLE `oc_product_discount` ENGINE = `InnoDB` in <b>/home/rupaknpl/merging/system/library/db/mysqli.php</b> on line <b>68</b>
Opencart upgrade steps error

Maybe this issue is only for us in one client, some of their database tables were in InnoDB and some were in MyISAM. So to fix it we ran the following query.

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM'
AND table_schema = 'YOUR_DATABASE_NAME';
MyISAM to INNODB

Successful upgrade

After the above fix, we ran YOURWEBSITEURL/install again and it went smoothly. The 3, 4,5,6, and 7 are also quick but 8 takes some time, so just have some patience and wait, 9 was quick overall time taken was around 7 mins. If you guys see any console errors that we did not mention above then please let us know and we can help you to fix them.

Upgrade process completion

Once the upgrade is complete.

Admin login issue

Now we tried to go to the admin section. We were not able to log in with the old username and password, so we had to insert the username and password from SQL. Here is the SQL that we use:

INSERT INTO `oc_user` (`user_group_id`,`username`,`password`,`firstname`,`lastname`,`email`,`image`,`code`,`ip`,`status`,`date_added`) VALUES (1,'admin','$2y$10$3Tofs9U7zGWhbQ67l7uageuxOjo6zU88pRESFZaxY.D3Ms4RSSIAu','John','Doe','youremail@gmail.com','','','::1',1,'2022-06-04 11:39:23');

With the run of the above query, now you can log in with username: admin and password: admin123. After you log in you can remove the /install folder, set the new storage folder, and rename the admin folder to your desired name.

Missing extensions:

In one of our clients, we saw all the installed extensions are missing, install Extensions are empty like below:

Missing extension in Opencart 4

We upload all the files and folders inside the /extension folder of the Opencart 4 zip extract. Then we ran the following queries to add all the opencart extension paths.

INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (1,1,'opencart');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (2,1,'opencart/admin');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (3,1,'opencart/admin/controller');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (4,1,'opencart/admin/controller/analytics');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (5,1,'opencart/admin/controller/analytics/index.html');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (6,1,'opencart/admin/controller/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (7,1,'opencart/admin/controller/captcha/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (8,1,'opencart/admin/controller/currency');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (9,1,'opencart/admin/controller/currency/ecb.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (10,1,'opencart/admin/controller/currency/fixer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (11,1,'opencart/admin/controller/dashboard');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (12,1,'opencart/admin/controller/dashboard/activity.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (13,1,'opencart/admin/controller/dashboard/chart.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (14,1,'opencart/admin/controller/dashboard/customer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (15,1,'opencart/admin/controller/dashboard/map.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (16,1,'opencart/admin/controller/dashboard/online.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (17,1,'opencart/admin/controller/dashboard/order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (18,1,'opencart/admin/controller/dashboard/recent.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (19,1,'opencart/admin/controller/dashboard/sale.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (20,1,'opencart/admin/controller/feed');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (21,1,'opencart/admin/controller/feed/index.html');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (22,1,'opencart/admin/controller/fraud');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (23,1,'opencart/admin/controller/fraud/ip.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (24,1,'opencart/admin/controller/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (25,1,'opencart/admin/controller/module/account.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (26,1,'opencart/admin/controller/module/banner.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (27,1,'opencart/admin/controller/module/bestseller.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (28,1,'opencart/admin/controller/module/category.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (29,1,'opencart/admin/controller/module/featured.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (30,1,'opencart/admin/controller/module/filter.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (31,1,'opencart/admin/controller/module/html.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (32,1,'opencart/admin/controller/module/information.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (33,1,'opencart/admin/controller/module/latest.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (34,1,'opencart/admin/controller/module/special.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (35,1,'opencart/admin/controller/module/store.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (36,1,'opencart/admin/controller/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (37,1,'opencart/admin/controller/payment/bank_transfer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (38,1,'opencart/admin/controller/payment/cheque.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (39,1,'opencart/admin/controller/payment/cod.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (40,1,'opencart/admin/controller/payment/free_checkout.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (41,1,'opencart/admin/controller/report');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (42,1,'opencart/admin/controller/report/customer_activity.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (43,1,'opencart/admin/controller/report/customer_order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (44,1,'opencart/admin/controller/report/customer_reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (45,1,'opencart/admin/controller/report/customer_search.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (46,1,'opencart/admin/controller/report/customer_transaction.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (47,1,'opencart/admin/controller/report/customer_subscription.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (48,1,'opencart/admin/controller/report/marketing.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (49,1,'opencart/admin/controller/report/product_purchased.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (50,1,'opencart/admin/controller/report/product_viewed.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (51,1,'opencart/admin/controller/report/sale_coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (52,1,'opencart/admin/controller/report/sale_order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (53,1,'opencart/admin/controller/report/sale_return.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (54,1,'opencart/admin/controller/report/sale_shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (55,1,'opencart/admin/controller/report/sale_tax.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (56,1,'opencart/admin/controller/shipping');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (57,1,'opencart/admin/controller/shipping/flat.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (58,1,'opencart/admin/controller/shipping/free.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (59,1,'opencart/admin/controller/shipping/item.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (60,1,'opencart/admin/controller/shipping/pickup.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (61,1,'opencart/admin/controller/shipping/weight.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (62,1,'opencart/admin/controller/theme');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (63,1,'opencart/admin/controller/theme/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (64,1,'opencart/admin/controller/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (65,1,'opencart/admin/controller/total/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (66,1,'opencart/admin/controller/total/credit.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (67,1,'opencart/admin/controller/total/handling.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (68,1,'opencart/admin/controller/total/low_order_fee.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (69,1,'opencart/admin/controller/total/reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (70,1,'opencart/admin/controller/total/shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (71,1,'opencart/admin/controller/total/sub_total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (72,1,'opencart/admin/controller/total/tax.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (73,1,'opencart/admin/controller/total/total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (74,1,'opencart/admin/controller/total/voucher.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (75,1,'opencart/admin/language');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (76,1,'opencart/admin/language/en-gb');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (77,1,'opencart/admin/language/en-gb/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (78,1,'opencart/admin/language/en-gb/captcha/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (79,1,'opencart/admin/language/en-gb/currency');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (80,1,'opencart/admin/language/en-gb/currency/ecb.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (81,1,'opencart/admin/language/en-gb/currency/fixer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (82,1,'opencart/admin/language/en-gb/dashboard');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (83,1,'opencart/admin/language/en-gb/dashboard/activity.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (84,1,'opencart/admin/language/en-gb/dashboard/chart.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (85,1,'opencart/admin/language/en-gb/dashboard/customer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (86,1,'opencart/admin/language/en-gb/dashboard/map.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (87,1,'opencart/admin/language/en-gb/dashboard/online.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (88,1,'opencart/admin/language/en-gb/dashboard/order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (89,1,'opencart/admin/language/en-gb/dashboard/recent.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (90,1,'opencart/admin/language/en-gb/dashboard/sale.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (91,1,'opencart/admin/language/en-gb/fraud');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (92,1,'opencart/admin/language/en-gb/fraud/ip.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (93,1,'opencart/admin/language/en-gb/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (94,1,'opencart/admin/language/en-gb/module/account.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (95,1,'opencart/admin/language/en-gb/module/banner.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (96,1,'opencart/admin/language/en-gb/module/bestseller.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (97,1,'opencart/admin/language/en-gb/module/category.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (98,1,'opencart/admin/language/en-gb/module/featured.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (99,1,'opencart/admin/language/en-gb/module/filter.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (100,1,'opencart/admin/language/en-gb/module/html.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (101,1,'opencart/admin/language/en-gb/module/information.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (102,1,'opencart/admin/language/en-gb/module/latest.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (103,1,'opencart/admin/language/en-gb/module/special.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (104,1,'opencart/admin/language/en-gb/module/store.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (105,1,'opencart/admin/language/en-gb/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (106,1,'opencart/admin/language/en-gb/payment/bank_transfer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (107,1,'opencart/admin/language/en-gb/payment/cheque.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (108,1,'opencart/admin/language/en-gb/payment/cod.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (109,1,'opencart/admin/language/en-gb/payment/free_checkout.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (110,1,'opencart/admin/language/en-gb/report');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (111,1,'opencart/admin/language/en-gb/report/customer_activity.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (112,1,'opencart/admin/language/en-gb/report/customer_order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (113,1,'opencart/admin/language/en-gb/report/customer_reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (114,1,'opencart/admin/language/en-gb/report/customer_search.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (115,1,'opencart/admin/language/en-gb/report/customer_transaction.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (116,1,'opencart/admin/language/en-gb/report/customer_subscription.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (117,1,'opencart/admin/language/en-gb/report/marketing.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (118,1,'opencart/admin/language/en-gb/report/product_purchased.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (119,1,'opencart/admin/language/en-gb/report/product_viewed.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (120,1,'opencart/admin/language/en-gb/report/sale_coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (121,1,'opencart/admin/language/en-gb/report/sale_order.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (122,1,'opencart/admin/language/en-gb/report/sale_return.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (123,1,'opencart/admin/language/en-gb/report/sale_shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (124,1,'opencart/admin/language/en-gb/report/sale_tax.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (125,1,'opencart/admin/language/en-gb/shipping');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (126,1,'opencart/admin/language/en-gb/shipping/flat.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (127,1,'opencart/admin/language/en-gb/shipping/free.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (128,1,'opencart/admin/language/en-gb/shipping/item.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (129,1,'opencart/admin/language/en-gb/shipping/pickup.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (130,1,'opencart/admin/language/en-gb/shipping/weight.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (131,1,'opencart/admin/language/en-gb/theme');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (132,1,'opencart/admin/language/en-gb/theme/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (133,1,'opencart/admin/language/en-gb/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (134,1,'opencart/admin/language/en-gb/total/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (135,1,'opencart/admin/language/en-gb/total/credit.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (136,1,'opencart/admin/language/en-gb/total/handling.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (137,1,'opencart/admin/language/en-gb/total/low_order_fee.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (138,1,'opencart/admin/language/en-gb/total/reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (139,1,'opencart/admin/language/en-gb/total/shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (140,1,'opencart/admin/language/en-gb/total/sub_total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (141,1,'opencart/admin/language/en-gb/total/tax.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (142,1,'opencart/admin/language/en-gb/total/total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (143,1,'opencart/admin/language/en-gb/total/voucher.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (144,1,'opencart/admin/model');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (145,1,'opencart/admin/model/dashboard');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (146,1,'opencart/admin/model/dashboard/map.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (147,1,'opencart/admin/model/fraud');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (148,1,'opencart/admin/model/fraud/ip.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (149,1,'opencart/admin/model/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (150,1,'opencart/admin/model/report');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (151,1,'opencart/admin/model/report/activity.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (152,1,'opencart/admin/model/report/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (153,1,'opencart/admin/model/report/customer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (154,1,'opencart/admin/model/report/customer_transaction.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (155,1,'opencart/admin/model/report/marketing.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (156,1,'opencart/admin/model/report/product.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (157,1,'opencart/admin/model/report/returns.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (158,1,'opencart/admin/model/report/sale.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (159,1,'opencart/admin/view');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (160,1,'opencart/admin/view/template');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (161,1,'opencart/admin/view/template/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (162,1,'opencart/admin/view/template/captcha/basic.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (163,1,'opencart/admin/view/template/currency');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (164,1,'opencart/admin/view/template/currency/ecb.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (165,1,'opencart/admin/view/template/currency/fixer.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (166,1,'opencart/admin/view/template/dashboard');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (167,1,'opencart/admin/view/template/dashboard/activity_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (168,1,'opencart/admin/view/template/dashboard/activity_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (169,1,'opencart/admin/view/template/dashboard/chart_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (170,1,'opencart/admin/view/template/dashboard/chart_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (171,1,'opencart/admin/view/template/dashboard/customer_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (172,1,'opencart/admin/view/template/dashboard/customer_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (173,1,'opencart/admin/view/template/dashboard/map_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (174,1,'opencart/admin/view/template/dashboard/map_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (175,1,'opencart/admin/view/template/dashboard/online_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (176,1,'opencart/admin/view/template/dashboard/online_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (177,1,'opencart/admin/view/template/dashboard/order_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (178,1,'opencart/admin/view/template/dashboard/order_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (179,1,'opencart/admin/view/template/dashboard/recent_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (180,1,'opencart/admin/view/template/dashboard/recent_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (181,1,'opencart/admin/view/template/dashboard/sale_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (182,1,'opencart/admin/view/template/dashboard/sale_info.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (183,1,'opencart/admin/view/template/fraud');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (184,1,'opencart/admin/view/template/fraud/ip.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (185,1,'opencart/admin/view/template/fraud/ip_ip.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (186,1,'opencart/admin/view/template/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (187,1,'opencart/admin/view/template/module/account.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (188,1,'opencart/admin/view/template/module/banner.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (189,1,'opencart/admin/view/template/module/bestseller.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (190,1,'opencart/admin/view/template/module/category.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (191,1,'opencart/admin/view/template/module/featured.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (192,1,'opencart/admin/view/template/module/filter.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (193,1,'opencart/admin/view/template/module/html.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (194,1,'opencart/admin/view/template/module/information.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (195,1,'opencart/admin/view/template/module/latest.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (196,1,'opencart/admin/view/template/module/special.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (197,1,'opencart/admin/view/template/module/store.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (198,1,'opencart/admin/view/template/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (199,1,'opencart/admin/view/template/payment/bank_transfer.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (200,1,'opencart/admin/view/template/payment/cheque.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (201,1,'opencart/admin/view/template/payment/cod.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (202,1,'opencart/admin/view/template/payment/free_checkout.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (203,1,'opencart/admin/view/template/report');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (204,1,'opencart/admin/view/template/report/customer_activity.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (205,1,'opencart/admin/view/template/report/customer_activity_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (206,1,'opencart/admin/view/template/report/customer_order.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (207,1,'opencart/admin/view/template/report/customer_order_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (208,1,'opencart/admin/view/template/report/customer_reward.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (209,1,'opencart/admin/view/template/report/customer_reward_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (210,1,'opencart/admin/view/template/report/customer_search.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (211,1,'opencart/admin/view/template/report/customer_search_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (212,1,'opencart/admin/view/template/report/customer_transaction.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (213,1,'opencart/admin/view/template/report/customer_transaction_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (214,1,'opencart/admin/view/template/report/customer_subscription.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (215,1,'opencart/admin/view/template/report/customer_subscription_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (216,1,'opencart/admin/view/template/report/marketing.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (217,1,'opencart/admin/view/template/report/marketing_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (218,1,'opencart/admin/view/template/report/product_purchased.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (219,1,'opencart/admin/view/template/report/product_purchased_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (220,1,'opencart/admin/view/template/report/product_viewed.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (221,1,'opencart/admin/view/template/report/product_viewed_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (222,1,'opencart/admin/view/template/report/sale_coupon.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (223,1,'opencart/admin/view/template/report/sale_coupon_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (224,1,'opencart/admin/view/template/report/sale_order.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (225,1,'opencart/admin/view/template/report/sale_order_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (226,1,'opencart/admin/view/template/report/sale_return.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (227,1,'opencart/admin/view/template/report/sale_return_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (228,1,'opencart/admin/view/template/report/sale_shipping.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (229,1,'opencart/admin/view/template/report/sale_shipping_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (230,1,'opencart/admin/view/template/report/sale_tax.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (231,1,'opencart/admin/view/template/report/sale_tax_form.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (232,1,'opencart/admin/view/template/shipping');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (233,1,'opencart/admin/view/template/shipping/flat.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (234,1,'opencart/admin/view/template/shipping/free.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (235,1,'opencart/admin/view/template/shipping/item.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (236,1,'opencart/admin/view/template/shipping/pickup.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (237,1,'opencart/admin/view/template/shipping/weight.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (238,1,'opencart/admin/view/template/theme');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (239,1,'opencart/admin/view/template/theme/basic.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (240,1,'opencart/admin/view/template/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (241,1,'opencart/admin/view/template/total/coupon.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (242,1,'opencart/admin/view/template/total/credit.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (243,1,'opencart/admin/view/template/total/handling.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (244,1,'opencart/admin/view/template/total/low_order_fee.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (245,1,'opencart/admin/view/template/total/reward.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (246,1,'opencart/admin/view/template/total/shipping.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (247,1,'opencart/admin/view/template/total/sub_total.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (248,1,'opencart/admin/view/template/total/tax.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (249,1,'opencart/admin/view/template/total/total.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (250,1,'opencart/admin/view/template/total/voucher.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (251,1,'opencart/catalog');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (252,1,'opencart/catalog/controller');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (253,1,'opencart/catalog/controller/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (254,1,'opencart/catalog/controller/captcha/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (255,1,'opencart/catalog/controller/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (256,1,'opencart/catalog/controller/module/account.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (257,1,'opencart/catalog/controller/module/banner.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (258,1,'opencart/catalog/controller/module/bestseller.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (259,1,'opencart/catalog/controller/module/category.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (260,1,'opencart/catalog/controller/module/featured.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (261,1,'opencart/catalog/controller/module/filter.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (262,1,'opencart/catalog/controller/module/html.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (263,1,'opencart/catalog/controller/module/information.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (264,1,'opencart/catalog/controller/module/latest.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (265,1,'opencart/catalog/controller/module/special.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (266,1,'opencart/catalog/controller/module/store.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (267,1,'opencart/catalog/controller/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (268,1,'opencart/catalog/controller/payment/bank_transfer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (269,1,'opencart/catalog/controller/payment/cheque.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (270,1,'opencart/catalog/controller/payment/cod.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (271,1,'opencart/catalog/controller/payment/free_checkout.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (272,1,'opencart/catalog/controller/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (273,1,'opencart/catalog/controller/total/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (274,1,'opencart/catalog/controller/total/reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (275,1,'opencart/catalog/controller/total/shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (276,1,'opencart/catalog/controller/total/voucher.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (277,1,'opencart/catalog/language');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (278,1,'opencart/catalog/language/en-gb');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (279,1,'opencart/catalog/language/en-gb/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (280,1,'opencart/catalog/language/en-gb/captcha/basic.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (281,1,'opencart/catalog/language/en-gb/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (282,1,'opencart/catalog/language/en-gb/module/account.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (283,1,'opencart/catalog/language/en-gb/module/bestseller.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (284,1,'opencart/catalog/language/en-gb/module/category.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (285,1,'opencart/catalog/language/en-gb/module/featured.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (286,1,'opencart/catalog/language/en-gb/module/filter.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (287,1,'opencart/catalog/language/en-gb/module/information.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (288,1,'opencart/catalog/language/en-gb/module/latest.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (289,1,'opencart/catalog/language/en-gb/module/special.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (290,1,'opencart/catalog/language/en-gb/module/store.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (291,1,'opencart/catalog/language/en-gb/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (292,1,'opencart/catalog/language/en-gb/payment/bank_transfer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (293,1,'opencart/catalog/language/en-gb/payment/cheque.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (294,1,'opencart/catalog/language/en-gb/payment/cod.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (295,1,'opencart/catalog/language/en-gb/payment/free_checkout.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (296,1,'opencart/catalog/language/en-gb/shipping');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (297,1,'opencart/catalog/language/en-gb/shipping/flat.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (298,1,'opencart/catalog/language/en-gb/shipping/free.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (299,1,'opencart/catalog/language/en-gb/shipping/item.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (300,1,'opencart/catalog/language/en-gb/shipping/pickup.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (301,1,'opencart/catalog/language/en-gb/shipping/weight.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (302,1,'opencart/catalog/language/en-gb/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (303,1,'opencart/catalog/language/en-gb/total/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (304,1,'opencart/catalog/language/en-gb/total/credit.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (305,1,'opencart/catalog/language/en-gb/total/handling.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (306,1,'opencart/catalog/language/en-gb/total/low_order_fee.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (307,1,'opencart/catalog/language/en-gb/total/reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (308,1,'opencart/catalog/language/en-gb/total/shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (309,1,'opencart/catalog/language/en-gb/total/sub_total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (310,1,'opencart/catalog/language/en-gb/total/total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (311,1,'opencart/catalog/language/en-gb/total/voucher.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (312,1,'opencart/catalog/model');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (313,1,'opencart/catalog/model/fraud');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (314,1,'opencart/catalog/model/fraud/ip.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (315,1,'opencart/catalog/model/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (316,1,'opencart/catalog/model/payment/bank_transfer.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (317,1,'opencart/catalog/model/payment/cheque.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (318,1,'opencart/catalog/model/payment/cod.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (319,1,'opencart/catalog/model/payment/free_checkout.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (320,1,'opencart/catalog/model/shipping');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (321,1,'opencart/catalog/model/shipping/flat.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (322,1,'opencart/catalog/model/shipping/free.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (323,1,'opencart/catalog/model/shipping/item.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (324,1,'opencart/catalog/model/shipping/pickup.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (325,1,'opencart/catalog/model/shipping/weight.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (326,1,'opencart/catalog/model/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (327,1,'opencart/catalog/model/total/coupon.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (328,1,'opencart/catalog/model/total/credit.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (329,1,'opencart/catalog/model/total/handling.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (330,1,'opencart/catalog/model/total/low_order_fee.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (331,1,'opencart/catalog/model/total/reward.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (332,1,'opencart/catalog/model/total/shipping.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (333,1,'opencart/catalog/model/total/sub_total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (334,1,'opencart/catalog/model/total/tax.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (335,1,'opencart/catalog/model/total/total.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (336,1,'opencart/catalog/model/total/voucher.php');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (337,1,'opencart/catalog/view');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (338,1,'opencart/catalog/view/template');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (339,1,'opencart/catalog/view/template/captcha');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (340,1,'opencart/catalog/view/template/captcha/basic.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (341,1,'opencart/catalog/view/template/module');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (342,1,'opencart/catalog/view/template/module/account.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (343,1,'opencart/catalog/view/template/module/banner.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (344,1,'opencart/catalog/view/template/module/bestseller.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (345,1,'opencart/catalog/view/template/module/category.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (346,1,'opencart/catalog/view/template/module/featured.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (347,1,'opencart/catalog/view/template/module/filter.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (348,1,'opencart/catalog/view/template/module/html.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (349,1,'opencart/catalog/view/template/module/information.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (350,1,'opencart/catalog/view/template/module/latest.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (351,1,'opencart/catalog/view/template/module/special.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (352,1,'opencart/catalog/view/template/module/store.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (353,1,'opencart/catalog/view/template/payment');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (354,1,'opencart/catalog/view/template/payment/bank_transfer.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (355,1,'opencart/catalog/view/template/payment/cheque.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (356,1,'opencart/catalog/view/template/payment/cod.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (357,1,'opencart/catalog/view/template/payment/free_checkout.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (358,1,'opencart/catalog/view/template/total');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (359,1,'opencart/catalog/view/template/total/coupon.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (360,1,'opencart/catalog/view/template/total/reward.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (361,1,'opencart/catalog/view/template/total/shipping.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (362,1,'opencart/catalog/view/template/total/voucher.twig');
INSERT INTO `oc_extension_path` (`extension_path_id`,`extension_install_id`,`path`) VALUES (363,1,'opencart/install.json');

Likewise, to fix the above issue we ran another query to insert the extension install.

INSERT INTO `oc_extension_install` (`extension_install_id`,`extension_id`,`extension_download_id`,`name`,`code`,`version`,`author`,`link`,`status`,`date_added`) VALUES (1,0,0,'OpenCart Default Extensions','opencart','1.0','OpenCart Ltd','http://www.opencart.com',1,'2020-08-29 15:35:39');

With those above three steps, we were able to see all the extensions again.

Admin Dashboard is empty

All of the admin dashboard reports were missing.

Empty dashboard

To add reports in the admin dashboard of Opencart 4, we follow the instructions on this blog:

SEO URL changes in Opencart 4

Database SEO table oc_seo_url was not updated or transferred fully as the Opencart version 4 change added a new table structure. The oc_seo_url table is fixed by running the following queries:

UPDATE `oc_seo_url` SET `key` = SUBSTRING_INDEX(query, '=', 1), `value` = SUBSTRING_INDEX(query, '=', -1)
SEO table changes

Install Extensions

After upgrading, make sure you install all the extensions again so that you don’t conflict with any other things.

After upgrade

Functionality Testing: Thoroughly test all website functionalities, check for add to cart, all pages like home, product, category, cart, checkout, etc, sign up, log in, forget the password, etc.

Extensions Testing: Check all extensions are installed, and make sure you check the Order Totals, payments, shipping, modules, etc.

Checkout Page: Opencart 4 has a one-page checkout by default so check if it is showing the right shipping address, payment address, shipping methods, and payment methods and see if the totals are correct.

Coupon Functionalities: Check for coupon functionalities.

SEO Review: Verify that SEO elements such as meta titles, meta descriptions, header tags, and URLs are showing correctly on the page. See the top 25 opencart SEO best practices.

Security Audit: Conduct a security audit to identify and address potential vulnerabilities.

Mail Function: Don’t forget to check the email functionalities.

Product Feeds: Enabled your feed and sitemap. And don’t forget to submit your sitemap to Google Webmaster.

Test Thoroughly: After upgrading, test your store to ensure that all functionalities, extensions, and themes are working correctly. Check for any broken links (we mostly check with https://www.brokenlinkcheck.com), missing images, or other issues.

Monitor Performance: After the upgrade, keep an eye on your store’s performance, and address any performance issues.

Analytics and Tracking: Check your analytics and tracking codes.

Please take a look at the OpenCart Site Launch Checklist, we have listed most of the functionality to test before launch.

Conclusion

In this way, you can upgrade Opencart from version 3 to 4, it is a complex process, and it’s common for some issues to surface post-upgrade. Being proactive in testing, monitoring, and addressing issues will help ensure that your website remains functional and user-friendly after the upgrade.  Upgrade your OpenCart e-commerce platform effortlessly with our professional services. Enjoy enhanced features, improved security, and a smoother user experience. Contact us for a seamless upgrade process. Please let us know if you faced any problems while upgrading Opencart and have questions or concerns so that we can help you out, similarly, let us know if there are other best solutions. Till then please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook.

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

In this Opencart user manual, we are giving you details of the Maintenance links: Backup/Restore, Uploads, and Error logs. For Backup/Restore we can backup the data in a dot SQL file and we can import the dot SQL file which is similar in structure to the exported dot SQL file. At Uploads, you can see the files uploaded by the customers while making the order if you have provided the file upload button on the product detail page as Options. In Error logs, you can see the error logs, fatal errors, or warnings or notices errors.

Maintenance Mode in Opencart

If you are looking to keep the site in Maintenance Mode then you need to go to admin >> System >> Settings. Then edit the store that you want to keep the site in maintenance. After that go to the Server tab where you can see the maintenance mode. You can choose Yes if you want to keep the site in maintenance mode.

Maintenance Mode in Opencart

Backup/Restore in Opencart

You can export the database data easily in Opencart by going to admin >> System >> Maintenance >> Backup/Restore and in the Backup tab you can see all the database tables, for a full backup of data, select all and click the Export button. You can select some tables and export them as well.

Backup and export in Opencart

The exported file will be like databasename_today_date_and_time_backup.sql which has SQL statements like the below (we just take some part of API tables to show you):

TRUNCATE TABLE `oc_api`;
INSERT INTO `oc_api` (`api_id`, `username`, `key`, `status`, `date_added`, `date_modified`) VALUES ('1', 'Default', 'kqtDbGPOkLqokpSl80w57nfPqxJzkOwgmBC2uqeZvjCyUll3Flw7QiEwdHbTxoyNme1ixsYjglCmbik84hlCTpGrGSDiMvwZUtAPLT3XIyp7ANo4UxuQmZLHeaG9tb2ukh2138YsbH12Mippb03GTNXUZmRiF8RlofU1c37Gsk0orJWwa7KN14sU3FumadWaC2WvhHG6TLKnw7m4ir3E8OHVMWMinmNUrRJc3QzlDgn16HhkFNrn5iGQ8junqyrp', '1', '2019-04-22 18:32:08', '2019-04-22 18:32:08');
TRUNCATE TABLE `oc_api_ip`;
INSERT INTO `oc_api_ip` (`api_ip_id`, `api_id`, `ip`) VALUES ('1', '1', '127.0.0.1');

To Restore the data we can import the downloaded dot SQL file. For that go to admin >> System >> Maintenance >> Backup/Restore. Then in the Restore tab click the Import button and choose the downloaded dot SQL file. As you see in the above SQL queries first it truncates or removes all data and then inserts the data. Be careful before doing it.

Import or restore in Opencart

In this way, you can backup and restore the data in Opencart.

Uploads in Opencart maintenance section

Go to admin >> System >> Maintenance >> Uploads. You will see the lists of files uploaded by the customers while ordering the products.

List of uploads in Opencart

Don’t get confused with downloads and uploads. Uploads are files uploaded from the front end by the customers if there is a file upload button in the product options section. For example, in the default installation, the product named ‘Apple Cinema 30″‘ has the option to upload a file:

File upload in product options Opencart

When you upload the file in that option field then it will be shown in the Sales >> Orders:

File upload shown in Order opencart

When customers upload the files, then the file name is changed to a different name by adding a token to the file name. It is to hide the uploaded file name so people can not link to it directly. Those are the files that you will see in the admin >> System >> Maintenance >> Uploads. You can delete those files if needed. In this way, uploads are managed in the Opencart.

Error Logs in Opencart

You can see the errors: Fatal, Notice, and Warning at admin >> System >> Maintenance >> Error Logs. You can see what is wrong in your store and solve it.

Error logs in Opencart

We have listed some errors and its solution of Opencart at:

Let us know if you find any errors in Opencart then we can help you solve them. In this way, we can see the error logs in Opencart.

In this Opencart user manual, we went through Maintenance links like the Backup/Restore, Uploads, and Error logs. 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. Click to see all Opencart user manuals.

Auto upgrade Opencart 4 versions by clicking in admin section

Auto-upgrading Opencart versions involves a process where the platform updates itself to the latest version without manual code. Opencart 4 does natively support a fully automated update mechanism like some other CMS platforms (e.g., WordPress). Here’s a detailed explanation of how you can set up and manage auto-updates for Opencart versions:

1. Preparation and Backup

Before any auto-upgrades, it’s crucial to ensure that your site can recover from any potential issues that might arise during the upgrade process.

  • Regular Backups: Schedule regular backups of your entire Opencart store, including the database and all files.
  • Staging Environment: Set up a staging environment to test updates before applying them to the live site.

Read more: Upgrade Opencart 3 to Opencart 4 version

2. Monitoring for New Releases

To automate updates, you need a way to monitor for new Opencart releases.

  • RSS Feeds: Subscribe to Opencart’s release announcements via RSS feeds or email notifications.
  • GitHub Repository: Monitor the official Opencart GitHub repository for new releases.

4. Automated Upgrade

Go to admin >> System >> Maintenance >> Upgrade and click Upgrade button and you are done.

Auto upgrade Opencart version

6. Handling Customizations and Extensions

  • Custom Themes and Extensions: Ensure your script preserves custom themes and extensions. You may need to modify the script to exclude these files from being overwritten.
  • Compatibility Checks: Before updating, check that your themes and extensions are compatible with the new version. This can be automated by maintaining a compatibility matrix or using version constraints.
  • Clear Modification Cache: Don’t forget to clear cache

7. Testing Updates

  • Automated Testing: Implement automated testing to verify that the update was successful and that critical functionalities are working correctly.
  • Manual Testing: Periodically perform manual tests to ensure the update process works as expected.

8. Rollback Mechanism

  • Automated Rollback: Implement a rollback mechanism in case the update fails. This can involve restoring files and databases from the backups created before the update.

9. Monitoring and Alerts

  • Monitoring: Set up monitoring to check the health of your Opencart store after the update.
  • Alerts: Configure alerts to notify you of any issues during or after the update process.

Conclusion

Opencart 4 support native auto-upgrades, you can achieve automated updates through a combination of scripts, monitoring tools, and best practices. Regular backups, thorough testing, and a robust rollback strategy are essential to minimize downtime and ensure a smooth upgrade process.