Repurposing a Module - xerocrypt/opencart GitHub Wiki
Deals with the modification and installation of a duplicated module. This is the best way to get started with OpenCart module development.
This is specific to version 3.0.2 of OpenCart, and assumes you have access to the server's filesystem (e.g. through cPanel).
What I am going to do here is copy the code for an HTML editor module. Since there is one module installed that enables the insertion of arbitrary HTML, and cannot be repurposed through the dashboard.
Essentially all I'm going to do here is copy all the files for the HTML content module, do some renaming and repackage it as an additional module that can be repurposed in the opencart dashboard.
The original module is simply called 'HTML'. The module duplicate I'll call 'GenericHTML'.
Files needed:
-
/admin/controller/extension/module/[filename].php
-
/admin/language/en-gb/extension/module/[filename].php
-
/admin/view/template/extension/module/[filename].twig
-
/catalog/controller/extension/module/[filename].php
-
/catalog/view/theme/default/template/extension/module/[filename].twig
You want to copy the files into the same file structure within the clone directory.
As this is a separate module, we'll need to add a controller for it. As it doesn't do anything much, beyond display the HTML defined by the user, we only need the generic PHP functions.
It is probably a good idea to explain something about what these files do. As OpenCart is based on the MVC code pattern. A client's browser sends a request to the server, and the request is routed to a controller within /admin/controller or /catalog/controller, depending on whether the application is being accessed through the home page or dashboard.
This controller would look something like:
class ControllerExtensionModuleGenericModule extends Controller
{
public function index($setting)
{
[...]
Code here
[...]
return $this->load->view('extension/module/myview', $data);
}
}
The function executes whatever code, and returns a 'Web page' defined by /extension/module/myview along with whatever content is generated by the controller.
The controller and view in /admin determine what the site admin sees, and the controller-view in /catalog determine what's displayed to others visiting the site.
The important thing to change in /admin/controller/extension/module/[filename].php and /catalog/controller/extension/module/[filename].php are the names for the controller classes,
Building your first OpenCart 3 extension
OpenCart: How to create/duplicate a module?
OpenCart 3 custom module development tutorial - Hello World module