Help:Multiple-instance templates
Multiple-instance templates refer to the use of a series of instances of the same (wiki) template on a single wiki page, usually with unique data assigned to each instance. For instance, instances of a template may be used to list the contacts of a company, the ingredients of a recipe, the stories in a book, etc. In this way, you can present items of the same type in a uniform manner and streamline structured data so that they can be stored in the database.
The term is typically used in the context of managing such a list of template instances by way of a form (see the form extensions below) as well as itemising data to be stored in the database (see the data storage extensions below).
Structurally, multiple-instance templates can be either top-level templates or children of a parent template. A child template is an instance of a template assigned to a parameter of the parent template. A top-level template is not nested in this way and may or may not behave as a parent template for one or multiple child templates. Deeper levels of nesting templates are not impossible, but lack support in form extensions.
Example
[edit ]The ingredients of some recipe for salad :
{{Recipe
|Title=My favourite salad
|Ingredients={{Ingredient
|Item=Romaine lettuce
|Quantity=Four leaves.
|Preparation=Torn.
}}{{Ingredient
|Item=Radish
|Quantity=Six radishes.
|Preparation=Chopped.
}}{{Ingredient
|Item=Tomato
|Quantity=2 tomatoes.
|Preparation=Chopped.
}}{{Ingredient
|Item=Licame
|Quantity=A small one.
|Preparation=Peeled and julienned.
}}
}}
(etc.)
Form extensions
[edit ]A number of extensions are available that let you use a form to manage template instances more easily.
- Extension:Page Forms: see especially this help page. The term 'multiple-instance templates' was likely coined for this extension.
- Extension:FlexForm: offers similar support. See especially this help page.
Data storage extensions
[edit ]Template instances can be used as containers for structured data. The following extensions offer parser functions that can be used in a template to store data:
- Extension:Semantic MediaWiki (SMW) - offers the
#subobjectparser function for self-contained units of property-value pairs as well as a data type called Record. - Extension:Cargo - offers
#cargo_declareand#cargo_store, which can be used in a way similar to SMW's subobjects.