Applying a template to all pages of a given category

From FollowTheScore
Revision as of 08:29, 29 August 2008 by Gero (talk | contribs)
Jump to: navigation, search

How can one apply a template to all pages of a certain category?

Sometimes you want to create a list of articles where each entry in the list points to an adress which is constructed from the article´s name. Basically, this means that you want to produce the equivalent of

   {{some template|1st page in category}}
   {{some template|2nd page in category}}
   {{some template|3rd page in category}}
   ...

Answer

The way how to do this depends slightly on the mode you use for your DPL call.

Variant 1: function call with <dpl> tag

To invoke a template called "My special article lister" for all pages which are members of category "Fictitious country" you would have to write the following:

<dpl>
   category=Fictitious country
   format=,{{My special article lister|%PAGE%}}
</dpl>

The result could like this:


Variant 1 (parser function call, all MW versions)

If you want to use parser function syntax there are some differences: If you are using MediaWiki 1.11 or below you cannot use double curly braces or pipe symbols within the dpl call directly. Instead you must use special escape marks for these symbols. Note the broken pipe symbol and the little ² around the single curly braces.

{{#dpl:
  |category=Fictitious country
  |format=,²{My special article lister¦%PAGE%}²
}}

The result looks the same as before:


Variant 2 (parser function call, only MW 1.11 or above)

If you are using MediaWiki 1.11 or above you can use the normal symbols within the DPL text. Because of a parser change MediaWiki does no longer expand those symbols before it invokes DPL. INstead DPL does this for you after it has done its job. %This leads - in principle - to the desired behaviour. But there is still a minor difference: Leading white space will be stripped from the template. The "*" in coulmn one will not be recognized as bulleted list markup. It does not help to add a single empty line at the beginning of the template as this will also be stripped.

As a work around you can

  • insert a mediawiki comment line at the beginning of your template (the newline after that comment will not be stripped) or
  • insert a newline symbol in the dpl call which invokes the template (which is the preferable way).
{{#dpl:
  |category=Fictitious country
  |format=,\n{{My special article lister|%PAGE%}}
}}

The result still looks the same (note that we are using MW 1.13 (or above) in this wiki.