From Qi-Hardware
Jump to: navigation, search

Template:H:h A category is a software feature of MediaWiki. Categories provide automatic indexes that are useful as tables of contents. Together with links and templates they structure a project.


[edit] Summary

Each of the pages in the Category namespace represents a so-called category, a kind of grouping of related pages. For example, this page belongs to "Category:Editor handbook". When a page belongs to one or more categories, this information appears at the bottom of the page (or in the upper-right corner, depending on the skin being used).

The category page itself contains text that can be edited, like any other page, but when displaying the page, the last part of what is displayed is an automatically generated, alphabetical list of all pages in that category, in the form of links (in fact ASCII order, see Help:Special page). "Existence" of a category has two independent aspects: the category can obtain one or more pages and/or the category page can exist as an editable page. New categories can be created in the last sense, and edited, in the same way as any other regular page. For a list of categories in this sense, see Special:Allpages/Category: (note the colon at the end). For a list of categories in the first sense, see Special:Categories.

You can assign a category to a page simply by adding "[[Category:Category name]]" to the page's wikitext source. In order to reference a category within a page as a normal wiki link (without adding the page to the category) prefix the link name with a colon. For example: [[:Category:Not in this category]]

For a complete list of categories, see Special:Categories. Individual wikis may have their own top-level categories, such as w:Category:Contents in Wikipedia. For categories in Meta-Wiki, see m:Meta:Categories.

[edit] Putting an item in a category

A page in any namespace can be put in a category by adding a category tag to the page (by convention, at the end of the page), e.g.:

[[Category:Category name]]

You must substitute the actual name of your desired category in place of Category name. For example, to add an article called "Albert Einstein" to the category "People", you would edit the Albert Einstein article and add "[[Category:People]]" (no quotes) into its page source somewhere.

This will cause the article to be automatically listed on the associated category page, and it will also create a link in the article to the category page. Category pages are always in the namespace "Category". Pages can be included in more than one category by adding multiple category tags. These links do not appear at the location where you inserted the tag, but at the page margin in a fixed place, depending on the skin (the bottom for MonoBook, the upper right corner for Standard).

Category tags may be placed anywhere in the article, although they are typically added to the end of the article to avoid undesirable text display side effects. Wikipedia policy specified that category tags should be put after the article text, but before any interlanguage links.

Category links are displayed in the order they occur in the article, unlike the automatic ordering of lists in the category pages themselves (see below).

[edit] Hidden categories

When __HIDDENCAT__ is put on a category page, that category is not listed on pages thus categorised. See category:hidden category demo and hidden category demo for an example. However, hidden categories can be made visible by ticking the item Show hidden categories (described by Template:Msg) in the "Misc" section in the user's preference ; either way they can be made visible or invisible through CSS(details needed).

The hidden categories that a page belongs to are listed using the label supplied by the Template:Msg when editing the page.

Hidden categories are automatically added to the category specified by the Template:Msg. In this wiki it is Category:Hidden categories. Within the Category namespace, the hidden categories a category page belongs to are listed separately from the standard (non-hidden) categories it also belongs to, using the label specified by the Template:Msg. [See category:hidden category demo 1.]

For example, suppose a page is categorised under MyHiddenCategory. The page itself does not mention this categorisation unless tog-showhiddencats is true, in which case the listing hiddencategories appears below the standard Categories listing (the specific positioning depends on the skin, obviously). Within the Category namespace, MyHiddenCat is listed under the hidden-category-category global category. If MyHiddenCat has sub-categories, these will each list MyHiddenCat under the hidden-categories listing, appearing below the standard category listing. If MyHiddenCat is itself categorised under some higher category, the latter lists it without making any particular distinction (that is to say, hidden sub-categories are listed just as if they were standard sub-categories).

[edit] Category page

A category page consists of:

  • editable text
  • list of subcategories; how many there are is also displayed; if there are no subcategories the header and count are not shown. With the Category Tree extension, installed on Wikimedia, one can click "+" to see the subcategories of a selected subcategory.
  • list of pages in the category, excluding subcategories and images; the number of items in this list is called the number of articles; if there are none the header is shown anyway, and "There are 0 articles in this category."
  • list of image and other media files with thumbnails; the number of files is given and the first 20 characters of the file name are shown, with an ellipsis if that is not the full name; also the file size is shown. As opposed to the second and third section, this section does not have sub-headers per letter.

The items in the lists all link to the pages concerned; in the case of the images this applies both to the image itself and to the text below it (the name of the image).

The first and second list each have a header for each first character, dispensed with if there are no entries for a header. If no headers are desired, use sort keys all starting with a blank space (see also below).

The number of items in each list is shown at the top of each.

On Meta and Wikipedia a redirect to a category shows the editable text only. To get the full page after being redirected, use the link "Image", or "Category", respectively.

On Commons a redirect to a category gives the full page, but not the subcategories and pages in the redirect page (if that is also a category).

[edit] Creating a category page

To create a category page, one can e.g:

  • follow an automatically created link to the category page. Putting this code on any page creates the link.
[[Category:Category name]]


  • add a colon in front of the Category tag when you set up the page-creation link, to prevent the software from thinking you merely want to add the page you are working on to the category:
[[:Category:Category name]]

Placing the above text on working page will create the link you can use to edit your category page, and will display the link text as a normal wiki link without adding the page to the category.

[edit] Subcategories

Creating subcategories takes only a few additional steps. Adding a category tag to a category page makes the edited category a subcategory of the category specified in the tag.

First create a new category page for the subcategory the same way you would make a regular category. For example, create [[Category:England]]

Then go to the newly created category page and edit it. Add the category tag for the parent category (e.g. [[Category:Country]]) to the page.

Then create a new page with a category link to England. In this example, the England category would then be a subcategory of the Country category.

e.g. adding link to the new page like this...


Now to create a subcategory to subcategory England you need to create a new page with a category link to England wikipage and edit it (the category).

e.g. adding link to the page like this...


For a live example see Category:Demo_1 which is a subcategory of Category:Demo.

[edit] Sort order

The system uses alphabetical order, or more precisely Unicode order, for pages in categories. The range 32–127 corresponds to ASCII, for more see a table of Unicode characters:


Note in particular that "Z" comes before "a", and "z" before accented / umlauted characters.

Although in Special:Allpages and Special:Prefixindex a blank space within a page name is treated as an underscore, and therefore comes after the capitals, and before the lower case letters, this does not apply in category pages: there a space counts as space. Compare the order of Help:Demo1 and Help:Demo a (both without a specified sort key) on Category:Demo and [1].

See also special characters, Pages starting with a special character, collating.

[edit] Sort key

Each of the three lists is in the order explained above. If you want an item in a list to be positioned in that order, based on an alternative name (sort key) for that item, then this can be specified in the category tag that places the item in the list:


For example to add an article called Albert Einstein to the category "people" and have the article sorted by "Einstein, Albert", you would type "[[Category:People|Einstein, Albert]]".

Although this is like the syntax for a piped link (and in an edit summary it is interpreted like one), there is a clear difference: the second term in the piped link is an alternative term for the first one, while the sort key is an alternative name for the page in which the tag occurs. Also, a piped link influences the rendering of the page itself, while a sort key affects the rendering of another page.

The displayed name is not changed, and, unfortunately, only visible on the edit pages of the members of the category. An explanation of the sort key system used can be useful on the editable part of a category page.

The sort key system should be obvious, otherwise the order seems random and items are hard to find. The system should either be consistently applied to all members of a category, or be such that the listings of members on which it is applied fit in well within the list of members for which no sort key is used. The latter is advisable for large, growing categories with many contributors. See also below.

A common system is starting with the last name, then a comma and a space, and then the first name; note that any additions such as "Jr." should come at the end, otherwise the entry would come before the same without the addition, because a space comes before a comma.

In e.g. w:Category:Denmark, the sort key of a page consists of the keywords, without "Danish" or "of Denmark", "in Denmark", etc.

For the gallery of images in a category the prefix "Image:" is part of the default sort key. E.g. for Image:AlbertEinstein.jpg we can code

[[Category:People|Image:Einstein, Albert]]

to sort the image between Image:D.. and Image:F.. without explicit sort key. If we code

[[Category:People|Einstein, Albert]]

it comes before all images without explicit sort key.

The sort key is case sensitive, so a page with the tag [[Category:Foo|Zealand]] is sorted before one with the tag [[Category:Foo|amsterdam]]. This can be inconvenient, requiring a sort key in projects with case-sensitivity of the first character if one wants the A and the a together, but it may also be used to one's advantage: e.g., it allows sorting of the pages into two groups, one put in the range A-Z and one in a-z, using sort keys; see e.g. Category:Demo, where the help pages are put separately by using sort keys with lower-case "h".

To get the order right, be consistent in punctuation and spacing. For example, "A Z" with two blank spaces comes before "A A" with one.

An underscore in a sort key is distinct from a blank space.

As seen from the ASCII sequence above, forcing items to the beginning or end can be done with a sort key starting with a space or ~, respectively. Another common sort key for the beginning of the list is the asterisk (*).

To avoid case sensitive sorting results, with Aa coming after AZ, a sort key can be used which is not sensitive to the case of the page. For example, if the bulk of pages use default sorting, a sort key which is all lower case except the first character can be used (for AZ sort key Az), which can be produced automatically with {{ucfirst:{{lc:{{PAGENAME}}}}}}.

[edit] Non-main namespaces

For some non-main namespaces, the namespace prefix may be included in the sort key the system uses if the category tag does not contain one. In this case, every page in those namespaces will appear under the same header, unless sort keys were given. For example, all pages in the Help namespace will be listed under H. To avoid this one can specify a sort key without the namespace prefix in the category tag. In some namespaces such as the Category namespace and Image namespace the sort key is without prefix, if not specified otherwise, to avoid listing all subcategories by default under the C or all files under F. In these namespaces this can be a reason to write explicit sort keys also without prefix.

[edit] Default sort key

[MW1.10+] It is possible to set a default sort key which is different from {{PAGENAME}} by using the magic word {{DEFAULTSORT}} thus:

{{DEFAULTSORT:new key}}

In the case of multiple default sort key tags, the last one on a page applies for all categories, regardless of the position of the category tags. This also means that a DEFAULTSORT tag in a template, intended for category tags in that template, for categorization of pages calling the template, is not effective if another DEFAULTSORT tag occurs later on these pages, even if it is also "hidden", in another template.

[edit] Grouping of pages by using sort keys

If e.g. in a list of people sort keys like "scientist Einstein, Albert" are used then all scientists are listed together under the "s". Unfortunately no separate heading "scientist(s)" is possible, and salesmen would be under the same heading. Alternatively "scientist" can have e.g. code K (to be explained in the editable part of the category page) and the sort key "K Einstein, Albert" is used.

[edit] Labels in the list of images

As mentioned above, the first 20 characters of the image name are shown, with dots if that is not the full name. This can be inconvenient, e.g. in commons:Category:William-Adolphe Bouguereau most images have a name starting with "William-Adolphe Bouguereau (1825-1905) -", which are therefore all labeled "William-Adolphe Boug..." (see the last section of the category page).

The full names are only shown in the hover box and the status bar, depending on the browser; in the latter possibly with codes such as "%28" for "(".

Thus, looking up a name in the alphabetic list is cumbersome. It might have been better to start the names with the shorter "Bouguereau, " and then the title of the painting (unless the software will be improved later).

[edit] Categories and templates

Templates can make using and maintaining category pages much simpler.

[edit] Adding a category by using a template

A template can be used to add a page to a category, usually by placing the category link inside <includeonly></includeonly> tags on the template (e.g. <includeonly>[[Category:category name]]</includeonly>). When the template is transcluded into the page, the category link becomes active, and the page is added to the category page. This is useful for categories that have high turnover or many pages included, like cleanup categories, because:

  • it helps keep category lists up-to-date
  • it provides a consistent format so that pages end up on the correct category page without error
  • it is, frankly, easier

Changes to the template, however, may not be reflected immediately on the category page. When you edit an article to add a category tag directly, the list of category members is updated immediately when the page is saved. When a category link is contained in a template, however, this does not happen immediately: instead, whenever a template is edited, all the pages that transclude it are put into the job queue to be recached during periods of low server load (but see The Mediawiki Manual, which appears to contradict this, emptying the queue only at periods of high server load). This means that, in busy periods, it may take hours or even days before individual pages are recached and they start to appear in the category list. Performing a null edit to a page will allow it to 'jump the queue' and be immediately recached.

If it is necessary to add the template itself to the category page as well, the 'includeonly' tags can be omitted, but this is generally not desired.

[edit] Sort keys in templates

A sort key can be passed as parameters to templates and applied to the the category link as shown above. Sort keys can also depend on variables (notably PAGENAME) or calls to other templates.

[edit] Categorizing templates

Templates themselves can be categorized - without affecting the pages that call them - by putting the category link inside <noinclude></noinclude> tags (e.g. <noinclude>[[Category:category name]]</noinclude>). The 'noinclude' tags specify that the link applies only to the template, and is not included during transclusion. If the page uses the standard {{documentation}} template, these template-only category links are often placed in the documentation, where indicated.

A similar effect can be achieved with ParserFunctions: {{#ifeq:{{FULLPAGENAME}}|Template:Editthispage|[[Category:category name|{{PAGENAME}}]]|}}, but it is a bit more complex.

[edit] Selective category inclusion

Sometimes it is useful to be selective about which pages get added to the category page. For instance, we may want article pages to be added to the category, but not other pages, or we may want the user to select a particular category by passing a parameter. both of these effects (and others) can be achieved.

Passing a category by parameter
If the user provides a parameter 'cat=XXX' the page will be categorized at the page [[Category:XXX]], otherwise it will be categorized at the page [[Category:default]]. Calling the template with "cat=" disables putting the page in any category.
Excluding non-article pages
<includeonly>{{#if:{{NAMESPACE}} | | [[Category:XXX]]}}</includeonly>
the variable NAMESPACE is null for mainspace articles. For any space other than mainspace, this parserfunction will produce an empty string, but for regular articles this will include the article in Category:XXX.

[edit] "See also" for categories

The template {{Cat see also}} can be used to produce a 'see also' list of category pages for inclusion at the top of an article or section. see the template documentation for details. {{Cat see also}} is the English Wikipedia name for this template; other wikis may use different names, or may not have instituted this template yet.

[edit] Categorizing redirect pages

Redirect pages can be categorized. The category tag has to be put in the first paragraph. In the case that the target of the redirect is a section this has to some extent the effect of categorizing the section: through the redirect the category page links to the section; however, unless an explicit link is put, the section does not link to the category.

On the category page redirects are displayed with class redirect-in-category, so they can be shown in e.g. italics; this can be defined in MediaWiki:Common.css. See also Template:Mlww.

[edit] Moving a category page

The only way to move a category page is to manually change all category tags that link to the category, and copy the editable part. There is no automatic way to move a category page in the way one moves an article page.

The editable first part of a category can be moved like any other page, but that won't move the subcategories, articles, and images in the second, third, and fourth part (see above). For categories entirely populated through templates (see above) modifying the templates allows to move all affected articles to a renamed category, but with the refresh problem mentioned.

[edit] List of all categories

Special:Categories provides an alphabetic list of all categories, with the number of members of each; this number does not include the content of the subcategories, but it includes the subcategories themselves, i.e., each counting as one. Comparing with :

  • a category without members is not in the former
  • a category that has not been created as a page is not in the latter (in the former it stands out as red link)

[edit] Visualizing category tree

Special:CategoryTree enables you to visualize the tree structure of categories. The CategoryTree extension installed on MediaWiki allows in-page display of the tree.

<categorytree mode=pages>Africa</categorytree> gives

[×] Africa
no pages or subcategories

<categorytree mode=pages hideroot=on>Africa</categorytree> gives

Dapete's category-visualizer Catgraph will render charts of the tree structure.

[edit] Applying "Related Changes" to a category

For a category the "Related Changes" feature gives the changes in the pages in the category (according to the current category page, so excluding the pages that have potentially been added and including those that have potentially been removed, through addition or deletion of a template to/from the category, as explained above)

  • for subcategories: the changes in their editable parts only
  • for images (image pages): the changes in their editable parts only.

It does not show the changes in pages linked from the editable parts of the category. Possible workarounds:

  • The editable part can be put in a template. The category tags (which have no effect on Related Changes anyway) can better be kept out of the template, because on the pages of these supercategories the template would be listed under the articles in those categories. Whether interwiki links (with or without interlanguage link feature) are in the template or not does not make a difference, provided that the template is not used elsewhere.
  • Related Changes is applied to a page that calls the category as a template: {{:Category:Category name}}; only the editable part is included in the page; the page could be specially created for this purpose and call multiple categories. However, this page will then be listed in the supercategory pages of each category.

As usual (but as opposed to a watchlist) the changes in the corresponding talk pages are not shown.

Applying "Related Changes" to a category, with sufficiently high limits on number and days, is also useful for checking which pages in a category one "watches": they are bolded.

If the category contains pages but does not "exist" as editable page, "Related Changes" can be applied, but no link is supplied, one has to supply the URL oneself. It is more convenient to "create" the page first.

For the "What links here" feature, only the links in the editable part of the page count, not the links to the pages in the category.

[edit] Dynamic page list

The DynamicPageList2 extension provides a list of last edits to the pages in a category, or optionally, just the list of pages; the simpler DynamicPageList is installed on Meta and Wikinews; the version DPLforum is installed on Wikia, see

[edit] Detection of additions to a category

With "Related Changes" one can find pages which are newly in a category due to addition of a category tag or the tag of a template that is in the category. Addition of pages through addition to the category of a template is seen indirectly: one can see the change in the template, and then check which pages call the template. This even shows pages which are only potentially in the category (see above).

Unfortunately there is no similar way to detect a deletion from a category.

[edit] Comparison with "What links here"

Backlinks are often used as a by-product of links and inclusions. However, links and inclusion tags can be put specially for the backlinks, just like category tags are.

Thus one can create a kind of "category abc" showing its content with Special:Whatlinkshere/abc without an entry in the category lists on each page in the category. With inclusion this can be done in two ways:

  • {{#if:|{{:abc}}}} rendering nothing. This works regardless of whether abc exists.
  • {{:abc}}. This requires creating a blank page to render nothing, or a page with some content to provide an in-page category listing.
In the case of links
A redirect corresponds to a supercategory.
Advantages of categories
  • Category listings are alphabetical, for "What links here" this typically applies for the first part only, for the pages already linking to the given page at the time of the last rebuilding of the link tables in the database.
  • Categories have an editable part (however, there is anyway a talk page)
  • A category can have multiple supercategories
Advantage of a pseudo-category system using backlinks
  • Backlinks can show a tree structure: not only pages and subcategories, but also the contents of the subcategories (for each a list of pages and a list of sub-subcategories) and the contents of the sub-subcategories (for each a list of pages and a list of sub-sub-subcategories), but not the contents of the sub-sub-subcategories, up to three levels are shown.
In the case of inclusions
  • also multiple supercategories are possible
  • combined content of subcategories is shown in one list, not grouped by subcategory (the tree structure is not shown, but it can be used by taking the backlinks at a lower node, showing the smaller set)
  • the restriction of three levels (in the case of using redirects) does not apply; for example page Aijkl in the category Aijk in the category Aij in the category Ai in the category A (represented by Aijkl calling template Aijk, etc.) can be shown in the list of pages in category A (the backlinks of template A).

[edit] Category considerations

File:Directed graph with back edge.svg
Where 2 is a subcategory of 1. In general, this kind of categorization is not approved.
Each page is typically in at least one category. It may be in more, but it may be wise not to put a page in a category and also in a more general category.

Each category, except one top-level category, is typically in at least one higher level category.

Multi-hierarchy with a single root category

The category structure is (ideally) a multi-hierarchy with a single root category. All categories (except root category 1) should be contained in at least one other category, and there should be no cycles (i.e. a category should not contain itself, directly or indirectly). The category structure should reflect a hierarchy of concepts, from the most generic one down to the very specific.

[edit] Check the conventions

Check the conventions in a project and make yourself familiar with the categories in use before assigning pages and subcategories to categories and before creating new categories.

It is not obvious whether a page like Amsterdam should be in category City (a description of a member of the category) or Cities (a description of the category as a set of pages). A convention for using one or the other is useful (e.g. on w:en), to avoid ending up with both, with part of the applicable pages in one, and part in the other.

Putting a category tag on a test page, user page, etc. (also if done indirectly by including a template with a category tag) is considered to pollute the category, while regular links from such pages showing up in "what links here" is considered harmless. Therefore:

  • when copying text to such pages, category tags have to be removed; alternatively, convert the category to a link by adding a leading colon after the brackets. For example, "[[:Category:Art]]" is a link to the category, not an assignment to a category.
  • when including a template that is in a category, do not use the template feature, but use "subst" or copy-and-paste, and delete the category tags.

[edit] Alternatives for overviews

In addition to the automatic lists of pages and images, an overview of links to pages or images (by means of thumbnails) can be put in the editable part of a category, just like in any page. This used to be widely used in Wikimedia Commons, but now most of such overviews are moved to article namespaces. See also commons:Commons:Images on normal pages or categories:Vote.

[edit] Extensions

[edit] Category intersection, union, etc.

Various MediaWiki extensions allow intersection of categories, union of categories, display of info about the pages in a category, and more:

  • Semantic MediaWiki
    • Main Page - start page
    • Introduction - allows further intersection with sets of pages defined in terms of relations and attributes
    • Inline queries - provides relation- and attribute-related info about the selected pages and in-page display on any page of categories the same or another page is in
  • DynamicPageList extension can be used to:
    • intersection of categories
    • generate a list of all those articles (or a random sample)
    • show metadata of the articles (popularity, date of last update, ..)
    • show one or more chapters of the articles ('transclude' content)
    • show parameter values which are passed to the common template
    • order articles appropriately
    • present the result in a sortable table (e.g.)
    • use multi column output
  • Forum
    • intersection of categories and complements of categories
    • provides the time of last edit for each page

They all also allow further restriction to a namespace; some allow also restriction to a union of namespaces, or the complement of a union of namespaces. They all allow the info to be displayed in any page, not just a separate category page.

See also w:Wikipedia:Category intersection.

[edit] Category flattening

Category flattening is displaying also the articles in a category's subcategories, sub-subcategories, etc.

See also m:Category flatten, and Wikimedia bug 1497.

[edit] Count

As described at Help:Magic_words#Other_2, {{PAGESINCATEGORY:Example}} or {{PAGESINCAT:Example}} return the number of articles in Category:Example (including articles in subcategories).


Personal tools