Lua templating/Getting started

This page covers some of the absolute basics for developing a simple lua template.

Basics
Before starting with lua templates, it is important to read up and get to know how to use regular wikitext templates, and preferably read/learn about lua in sites such as Wikibooks as well as reviewing Lua Reference manual.

Workspace
Lua templates are always stored in the Module namespace, and all work must always be saved there. For example, a module named helloworld would be stored in Module:Helloworld.

Creating a module
A module must always contain a table and a line containing a "return " for that table.

For a module to be invoked (or used in a page), it needs to have a function. However, this function must be part of the main table (e.g. invocable):

Using input (parameters)
Input can be provided to a module during the invoke:

#invoke:modulename|functioname|input1|input2|input3|...}}

Once the above code is executed a table (called frame) is created containing all those inputs, and it is passed to a function, and stored in a subtable called args (e.g. frame.args). For example, using will call the module below: Output : Live long and prosper john

Accessing template input
However, the invoke above cannot be used through a template because the values from a page, and a sub-page are kept separate. Those arguments can be accessed from a template by first retrieving the parent frame or table containing the arguments (i.e. frame.getParent), and then using the sub-table (frame:getParent.args): Output:Live long and prosper Jack
 * Template:greet

Debug console
See Debug console.