Difference between revisions of "Template:List/doc"
(List template documentation, first attempt at) |
(Some more detail) |
||
Line 12: | Line 12: | ||
<div style='border: 1px solid #aaa; margin: 1em 0; padding: 1em'> | <div style='border: 1px solid #aaa; margin: 1em 0; padding: 1em'> | ||
− | {{List|Fabric Textile|limit=2|sort=Market Value Base,Work To Make Factor|order=desc,asc}} | + | {{List|Fabric Textile|limit=2|sort=Market Value Base,Work To Make Factor|order=desc,asc|item=Ask/Item Light}} |
</div> | </div> | ||
Line 58: | Line 58: | ||
The first line tells SMW to look for all pages in the [[:Category: Fabric Textile]] category. The new five lines start with ? and tell it which data to select from those pages (more about that below). The "?# = Name" means "take the page title and refer to it as ?Name". After that, the template tells SMW to called the [[Template:Ask/Item]] template for every result (format = template and template = Ask/Item), to pass along the data as named arguments, and to use only page names instead of links (e.g. "Devilstrand" instead of "<nowiki>[[Devilstrand]]</nowiki>"). | The first line tells SMW to look for all pages in the [[:Category: Fabric Textile]] category. The new five lines start with ? and tell it which data to select from those pages (more about that below). The "?# = Name" means "take the page title and refer to it as ?Name". After that, the template tells SMW to called the [[Template:Ask/Item]] template for every result (format = template and template = Ask/Item), to pass along the data as named arguments, and to use only page names instead of links (e.g. "Devilstrand" instead of "<nowiki>[[Devilstrand]]</nowiki>"). | ||
+ | |||
+ | Thus, the above template call becomes: | ||
+ | |||
+ | <nowiki>{{Ask/Item|?Name=Hyperweave|?Image=File:Hyperweave.png|?Description=High-tech nano-fibers...|?Note=Top-of-the-shelf, incredibly tough...|?Tags=Template:Textile/Tags}}</nowiki> | ||
+ | <nowiki>{{Ask/Item|?Name=Devilstrand|?Image=File:Devilstrand.png|?Description=Fabric spun...|?Note=Devilstrand is obtained...|?Tags=Template:Textile/Tags}}</nowiki> | ||
+ | |||
+ | These are then substituted normally again. | ||
+ | |||
+ | (NB: Template:Textile/Tags does not exist yet, so the ?Tags parameter above is empty at the moment. This will change soon.) | ||
== Where does the data come from? == | == Where does the data come from? == |
Revision as of 11:49, 8 March 2015
This template lists the contents of the category given as its first argument, e.g. to list all pages in the category Category: Fabric Textile, use:
{{List|Fabric Textile}}
Result Order and Number
Optionally, you can limit the number of pages listed, sort the list and order it. For example, to list the two most expensive fabrics, breaking ties by ease to work with them, you could use (NB: Whitespace and captitalization matter):
{{List|Fabric Textile|limit=2|sort=Market Value Base,Work To Make Factor|order=desc,asc}}
This gives:
Customizing Result Appearance
The list template calls the template Template:Ask/Item for every page. You can override this with its item parameter. It passes the following parameters to the item template:
Parameter | Description |
---|---|
{{{?Name}}} | Name of the page |
{{{?Image}}} | Name of the icon for the page |
{{{?Description}}} | Description of the page (from XML) |
{{{?Note}}} | Description of the page (user-set, usually the first paragraph of the page content) |
{{{?Tags}}} | Name of the template that can produce the tags for the page |
How does the template work?
The template uses the Semantic MediaWiki (SMW) extension to get its data. In particular, it uses the {{#ask: ... }} parser function. You can get the full details about how it works in its official documentation, but here are the basics:
Let's return to above example:
{{List|Fabric Textile|limit=2|sort=Market Value Base,Work To Make Factor|order=desc,asc}}
When MediaWiki expands that template, it becomes:
{{#ask: [[Category: Fabric Textile]] | ?# = Name | ?Image | ?Description | ?Note | ?Tags | format = template | named args = yes | link = none | template = Ask/Item | limit = 2 | sort = Market Value Base,Work To Make Factor | order = desc,asc }}
The first line tells SMW to look for all pages in the Category: Fabric Textile category. The new five lines start with ? and tell it which data to select from those pages (more about that below). The "?# = Name" means "take the page title and refer to it as ?Name". After that, the template tells SMW to called the Template:Ask/Item template for every result (format = template and template = Ask/Item), to pass along the data as named arguments, and to use only page names instead of links (e.g. "Devilstrand" instead of "[[Devilstrand]]").
Thus, the above template call becomes:
{{Ask/Item|?Name=Hyperweave|?Image=File:Hyperweave.png|?Description=High-tech nano-fibers...|?Note=Top-of-the-shelf, incredibly tough...|?Tags=Template:Textile/Tags}} {{Ask/Item|?Name=Devilstrand|?Image=File:Devilstrand.png|?Description=Fabric spun...|?Note=Devilstrand is obtained...|?Tags=Template:Textile/Tags}}
These are then substituted normally again.
(NB: Template:Textile/Tags does not exist yet, so the ?Tags parameter above is empty at the moment. This will change soon.)
Where does the data come from?
SMW know about, say, the description of Devilstrand, because on the Devilstrand page there is a Template:Define template, which executes the following:
{{#set: Description = {{{description|}}} }}
The {{#set: ... }} parser function is the opposite of {{#ask: ... }}, it tells SMW that the page in question has one or more properties or relations. For the full description, see again the official documentation.