# Module File Structure
Before starting the development of a module you must know the file structure of the module. Many files and folders are used in the modules for different purposes. Below are the files and folders of which a module can consists of:
.
├── modulename
│ ├── config.xml
│ ├── classes
│ ├── controllers
│ │ ├── admin
│ │ └── front
│ ├── logo.png
│ ├── logo.gif
│ ├── modulename.php
│ ├── override
│ ├── themes
│ │ └── theme_name
│ │ └── modules
│ ├── translations
│ ├── upgrade
│ ├── views
│ │ ├── css
│ │ ├── img
│ │ ├── js
│ │ └── templates
│ │ ├── admin
│ │ ├── front
│ │ └── hook
# Reference
# modulename.php
Module's main file. This file must have the same name as the module's root folder's name, modulename
, here.
# config.xml
Configuration file for the cache. This file does not exist in the module's folder. It is generated while module installation automatically.
# logo.gif and logo.png
Image files to represent the module in the back office. Your module should have both the icon files
# /classes
This folder contains class which manage object models and utility functions
# /controllers
This folder contains the Controller files. You can use the same sub-folder paths as for the View files.
controllers/admin
: Subfolder for back office controller.controllers/front
: Subfolder for front office controller.
# /override
All files for overriding QloApps core files. If you want to change QloApps core files then you must not change the files and use overriding for this purpose. For instance, /modules/modulename/override/classes/Cart.php
extends the default CartCore class.
For a basic module, the first three are necessary:
- Main file
- The cache configuration file (autogenerated by QloApps during module installation)
- The icon file.
# /translations
This folder contains module translation files used to display module content in multiple languages. For example fr.php, en.php, es.php etc.
# /upgrade
Subfolder for upgrade files. When a module has a new version to release the older version may need an upgrade of its data or files. It can be done using this folder.
# /views
This folder contains the view files. This directory contains template files (.tpl
), JavaScript/jQuery files (.js
), CSS files (.css
) and images files that are used in the module.
views/templates
: Template files of the modules resides in the folder.views/templates/admin
: Subfolder for back office controller's template files.views/templates/front
: Subfolder for front controller's template files.views/templates/hook
: Subfolder for module's hooks template files
views/css
: Subfolder for all the CSS files used in the module.views/js
: Subfolder all the JS files used in the module.views/img
: Subfolder for all the images, icon files used in the module.
The module can work with the above three files. All the other files and folders can be used if necessary.
In case any library is to be used in the modules it can be put in a separate folder i.e. 'lib', 'libs', 'libraries', 'sdk', 'vendor', 'vendors'. You should select the name which is most appropriate for the folder.