-
Notifications
You must be signed in to change notification settings - Fork 26
/
anatomy.html
121 lines (104 loc) · 4.53 KB
/
anatomy.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
---
layout: default
navPage: docs
heading: Anatomy of a Module
breadcrumbs:
- Module Development,/module_development/
- Form Tools 2,/module_development/index_ft2/
- Anatomy of a Module
prev: Module Development,/module_development/
next: module.php,/module_development/file_module/
categories: module_development
---
{% include open_section.html nav='nav_module_development.html' selected='anatomy' nav_width=4 %}
<p>
All right! Let's dissect a module. Personally I tend to learn better by viewing
an example - so if you're anything like me you might want to take a look at our
<a href="{{site.baseurl}}/module_development/example_modules/">"Hello World!" example modules</a>
as well - that contains three modules you can upload to your Form Tools installation that show off
how it works.
</p>
<p>
All modules are located in the <b>[form tools root]/modules/</b> folder. Each module has a unique folder
name made up of alphanumeric and underscore characters only. For the following page, our module is called
"My Module" and its folder is named "my_module".
</p>
<h3>Required Files & Folders</h3>
<p>
These files are required for every module. All paths are relative to the Form Tools root.
</p>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/module.php</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/file_module" class="btn btn-sm btn-primary pull-right">More Info</a>
This file contains information about your module: the author information, name and
description, and the module navigation menu.
</div>
</div>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/index.php</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/file_index" class="btn btn-sm btn-primary pull-right">More Info</a>
The first page the administrator will be linked to when clicking on the module in
the Modules listing page.
</div>
</div>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/lang/en.php</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/file_lang" class="btn btn-sm btn-primary pull-right">More Info</a>
All modules require a language file in the language of the developer. For US English,
this file would be called en_us.php. This uses the ISO 639-2 standard for the language
file names. This language file contains (at minimum) the module name and module description.
</div>
</div>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/index.tpl</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/file_index_tpl/" class="btn btn-sm btn-primary pull-right">More Info</a>
All HTML in Form Tools is rendered via Smarty templates. This provides enormous power
to the developer, but can be admittedly a little tricky at first. Your module will
need to define at least one Smarty template to render the index.php page. Other than
the required .tpl extension, you can call it what you want (index.tpl isn't required)
and store it wherever you want within your module folder. For simple modules, putting
the .tpl (template) files in the same folder as the PHP isn't much of a sin, but for
larger modules, separating it into a <b>templates/</b> folder may be a good
idea.
</div>
</div>
<h3>Optional Files & Folders</h3>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/library.php</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/file_library/" class="btn btn-sm btn-primary pull-right">More Info</a>
This file is needed if you need to do any of the following: include an installation
function, uninstallation function, use <a href="{{site.baseurl}}/module_development/hooks/">hooks</a> or
need to access your module in the main script.
</div>
</div>
<div class="row">
<div class="col-lg-5">
<strong>/modules/my_module/smarty/</strong>
</div>
<div class="col-lg-7">
<a href="{{site.baseurl}}/module_development/folder_smarty/" class="btn btn-sm btn-primary pull-right">More Info</a>
Any Smarty functions and modifiers should be placed in this subfolder. Depending on
the content and scope of your module, this may not be needed. But if you
<b>do</b> and need to access them in pages in the core script, you will need to
define them here.
</div>
</div>
<p>
The following pages explain each of these files and folders in more depth.
</p>
{% include close_section.html %}