Extension:DynamicPageList (Wikimedia)

From MediaWiki.org
Jump to: navigation, search
MediaWiki extensions manual
Crystal Clear action run.png
DynamicPageList

Release status: stable

Implementation Tag, Parser function
Description Outputs a bulleted list of most recent items residing in a category, or an intersection of several categories.
Author(s) n:en:User:IlyaHaykinson and n:en:User:Amgine
Latest version 1.7.0 (2014-03-28)
PHP 5.3+
Database changes No
License GPL
Download
Example http://en.wikinews.org
Tags
<DynamicPageList>
Hooks used
ParserFirstCallInit

Translate the DynamicPageList (Wikimedia) extension if it is available at translatewiki.net

Check usage and version matrix; code metrics
Bugs: list open list all report
This extension is used by Wikimedia, not to be confused with the DynamicPageList (third-party) extension.

DynamicPageList is a MediaWiki extension which allows wiki users to create a list of pages that are listed in a set of categories. See m:Help:DPL for general information.

Origin[edit | edit source]

It was originally developed for Wikinews. It is currently installed on all language Wikinews projects (see n:Wikinews:DynamicPageList), Meta, Wikibooks, and Wikiversity and can be installed on any small to medium sized Wikis (It is known to have scalability issues with very large wikis).

This extension was previously known as DynamicPageList/old and later Intersection. You may also be interested in the third-party DynamicPageList, which has more features.

Installation[edit | edit source]

DynamicPageList generally works with older (MediaWiki 1.5 and greater) versions if you select the version for 1.13.x from Special:ExtensionDistributor/intersection.

Download[edit | edit source]

You can download the extension directly from the MediaWiki source code repository (browse code). You can get:

One of the extensions tags

Not all extensions have tags. Some extensions have tags for each release, in which case those tags have the same stability as the release. To download a tag

  • Go to the tags list
  • Click the name of the tag you want to download
  • Click "snapshot"
The latest version of one of the extensions branches

Each extension has a master branch containing the latest code (might be unstable). Extensions can have further branches as well.

  • Go to the branches list
  • Click the branch name
  • Click "snapshot"
A snapshot made during the release of a MediaWiki version.

This might be unstable and is not guaranteed to work with the associated MediaWiki version.

After you've got the code, save it into the extensions/intersection directory of your wiki.

If you are familiar with git and have shell access to your server, you can obtain the extension, with all its tags and branches, as follows:

cd extensions
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/intersection.git intersection

Setup[edit | edit source]

Then add to the bottom of your LocalSettings.php file.

#Dynamic Page List
require_once("$IP/extensions/intersection/DynamicPageList.php");

The extension also supports a couple of configuration variables. Normally you wouldn't want to change the default, but if you do you can add them to your LocalSettings.php after the require_once line. Here is the supported configuration variables along with their default values:

# Configuration variables. Warning: These use DLP instead of DPL
# for historical reasons (pretend Dynamic list of pages)
$wgDLPmaxCategories = 6;                // Maximum number of categories to look for
$wgDLPMaxResultCount = 200;             // Maximum number of results to allow
$wgDLPAllowUnlimitedResults = false;    // Allow unlimited results
$wgDLPAllowUnlimitedCategories = false; // Allow unlimited categories
// How long to cache pages using DPL's in seconds. Default to 1 day. Set to
// false to use the normal amount of page caching (most efficient), Set to 0 to disable
// cache altogether (inefficient, but results will never be outdated)
$wgDLPMaxCacheTime = 60*60*24;          // How long to cache pages in seconds

Use[edit | edit source]

DynamicPageList can be used with XML-like syntax in the wiki edit view. The parameters control the pages to list, order, and display mode. See the following sections for information on each parameter. For example, the following are the oldest five pages on this wiki that were recently moved to MediaWiki.org.

<DynamicPageList>
category             = Pages recently transferred from Meta
count                = 5
order                = ascending
addfirstcategorydate = true
</DynamicPageList>

An example of a really complex DynamicPageList:

<DynamicPageList>
category=foo
count=20
namespace=file
addfirstcategorydate=ymd
imagewidth=70
galleryshowfilesize=yes
galleryshowfilename=yes
imagesperrow=7
gallerycaption=Galleries!
ordermethod=sortkey
order=ascending
mode=gallery
offset=12
</DynamicPageList>

Lists the 12th to the 34th pages in the file namespace that are also in category foo, formatting them into an image gallery, with the date they were added to category foo in the caption in year month day format, and having the images have a width of 70px

Page selection[edit | edit source]

category[edit | edit source]

category lists categories to intersect. DynamicPageList will list pages that are found in every category listed. A minimum and maximum number of entries to list is set in the extension's source code. You may use magic words like {{CURRENTMONTHNAME}} in the category name.

The syntax is category = category name

<DynamicPageList>
category = Demo
category = Demo 1
</DynamicPageList>

notcategory[edit | edit source]

notcategory restricts the list of pages to those not in a particular category. You can use magic words like {{CURRENTMONTHNAME}} in the category name.

<DynamicPageList>
category    = Demo
notcategory = Demo 1
</DynamicPageList>

namespace[edit | edit source]

namespace restricts the list of pages specified above to those in a particular namespace, specified by name or number (see the List of default namespaces). Any invalid name is equivalent to the main article namespace.

<DynamicPageList>
category  = Demo
namespace = Help
</DynamicPageList>

redirects[edit | edit source]

redirects determines whether or not to include redirect pages. The value can be exclude (default, don't list redirects), include (list redirects), or only (don't list pages that aren't redirects).

<DynamicPageList>
category  = Demo
redirects = only
</DynamicPageList>

stablepages[edit | edit source]

stablepages determines whether or not to include stable (flagged) pages when using Extension:FlaggedRevisions. The value can be exclude (don't list), include (list stable and non-stable. default), or only (only list stable pages). Requires FlaggedRevs to be installed to work.

qualitypages[edit | edit source]

qualitypages determines whether or not to include quality (flagged at the 'pristine' level) pages when using Extension:FlaggedRevisions. The value can be exclude (don't list), include (list both quality and non-quality), or only (only list quality pages).

Note: the behaviour of qualitypages changed from older versions. In older versions qualitypages=exclude automatically made stablepages=only be set. This is no longer the case.

count[edit | edit source]

count restricts the number of results that are shown. By default, the pages added to the category most recently are shown (see order). Note that the extension will not list more results than the maximum defined in the extension source code.

<DynamicPageList>
category = Demo
count    = 2
</DynamicPageList>

offset[edit | edit source]

offset starts the list from somewhere other than the first page on the list. For example, this can be used with count to make multi-column layouts.

<DynamicPageList>
category = Demo
offset    = 2
</DynamicPageList>

Column demo

<table>
<tr><th colspan="3"> recent articles in [[:category:Demo]]</th></tr>
<tr><td>

<DynamicPageList>
category = Demo
count=5
</DynamicPageList>
</td>
<td>
<DynamicPageList>
category = Demo
offset    = 5
count= 5
</DynamicPageList>
</td>
<td>

<DynamicPageList>
category = Demo
offset    = 10
count=5
</DynamicPageList>
</td></tr></table>

Details displayed[edit | edit source]

shownamespace[edit | edit source]

shownamespace displays the namespace in the page names. The value can be true (default, display in name: Help:Contents) or false (don't display in name: Contents).

<DynamicPageList>
category      = Demo
shownamespace = false
</DynamicPageList>

addfirstcategorydate[edit | edit source]

addfirstcategorydate shows the date each article was added to category. The value can be true (display date), false (default, don't display date), or a date specifier (ymd, md, dm, dmy, mdy, and ISO 8601). If many categories are specified, it uses the first category. The linked page names are prepended with the date formatted according to your local MediaWiki date display preferences.

<DynamicPageList>
category             = Demo
addfirstcategorydate = true
</DynamicPageList>

mode[edit | edit source]

mode determines the format of the list. The value can be unordered (bulleted list), ordered (numbered list), none (plain links with line breaks), gallery (image gallery, like <gallery>), inline (comma separated list)

unordered:
<DynamicPageList>
category = Demo
mode     = unordered
</DynamicPageList>

ordered:
<DynamicPageList>
category = Demo
mode     = ordered
</DynamicPageList>

plain text:
<DynamicPageList>
category = Demo
mode     = none
</DynamicPageList>

inline:
<DynamicPageList>
category = Demo
mode     = inline
</DynamicPageList>
mode=gallery[edit | edit source]

Gallery is a special mode where the output is an image gallery. When using this mode, you would usually want to restrict the namespace to file.

<DynamicPageList>
category = Demo
mode     = gallery
namespace= file
</DynamicPageList>

Gallery mode also supports the options imagewidth (how wide the images should be in gallery, you may need to also set imageheight if using this), imageheight (how high the image should be) galleryshowfilesize (show the image size, like on category pages), galleryshowfilename (show filename like on category pages), imagesperrow (number of images per row in gallery), gallerycaption (caption for gallery).

If addfirstcategorydate is in use, the date is appended to the caption of the image.

Note, gallerycaption at the moment cannot accept links. (but it can accept things like {{CURRENTMONTHNAME}})

A complex gallery example might be:

<DynamicPageList>
count=20
namespace=file
addfirstcategorydate=ymd
imagewidth=70
galleryshowfilesize=yes
galleryshowfilename=yes
imagesperrow=7
gallerycaption=Look at my pretty gallery.
mode=gallery
</DynamicPageList>

suppresserrors[edit | edit source]

suppresserrors hides errors. The value can be true (hide errors) or false (default, show errors).

true:
<DynamicPageList>
category       = Dem
suppresserrors = true
</DynamicPageList>

false:
<DynamicPageList>
category       = Dem
suppresserrors = false
</DynamicPageList>

nofollow[edit | edit source]

nofollow sets rel="nofollow" on the links. This prevents spiders from getting to the page through the link from the DynamicPageList. In general this is useless, as spiders will either be able to index the page from other links, or not at all due to robots.txt/$wgDefaultRobotPolicy. In general you should not use this option unless you know what you are doing, and have a good reason. The primary usecase is that on the English Wikinews, Google News considers anything linked from the main page to be an article.


<DynamicPageList>
category       = Demo
nofollow       = true
</DynamicPageList>

googlehack[edit | edit source]

This is a hack for wikinews. Google News only considers articles with numbers in them to be news articles [1], so this appends ?dpl_id=<id of article> to the end of the urls on the list. You shouldn't use this option unless you have a good reason to (however it won't hurt anything). This replaces the showcurid option that is no longer supported.


<DynamicPageList>
category       = Demo
googlehack       = true
</DynamicPageList>

Order[edit | edit source]

ordermethod[edit | edit source]

ordermethod determines the order and date to display. The value can be categoryadd (default, sort by date pages were categorised for first category) or lastedit (sort by date pages were last edit), length (article length), created (article creation date), categorysortkey (essentially alphabetical. order by the sort key of the first category. sortkey is an alias), popularity (by number of hits).

It should be noted, that lastedit really sorts by the last time the page was touched. In some cases this is not equivalent to the last edit (for example, this includes permission changes, creation or deletion of linked pages, and alteration of contained templates). popularity is only enabled on wikis that have $wgDisableCounters set to false. As such it will not work on Wikimedia wikis. If you do not specify a category, some of these order methods will not work—specifically, categoryadd and categorysortkey fallback to created if there is no category clause.

<DynamicPageList>
category             = Demo
addfirstcategorydate = true
ordermethod          = lastedit
</DynamicPageList>

alphabetical example:

<DynamicPageList>
category             = Demo
ordermethod          = sortkey
</DynamicPageList>

order[edit | edit source]

order decides the sort direction. The value can be descending (default, most recent to oldest) or ascending (oldest to most recent).

<DynamicPageList>
category  = Demo
order     = ascending
</DynamicPageList>

Templates[edit | edit source]

To use inside a template and pass parameters, use parser functions etc., use the {{#tag: function:

{{#tag:DynamicPageList|
category = {{{1}}}
count    = {{#if: {{{2|}}} | 10 | 20 }}
ordermethod = sortkey
order = ascending
}}

The template page itself will display an error message because the category value is empty on the template page unless you put the template inside <includeonly> tags. Example:

Error: You need to include at least one category, or specify a namespace!

Derived extensions[edit | edit source]

Derived extensions: DPLforum outputs in forum style. Extension:GoogleNewsSitemap is like this but outputs an RSS feed. Extension:DynamicPageList (third-party) is a modified version with more features, but also more resource-expensive. Neither of the latter is used on Wikimedia's sites.
Version 1.8.4 of DynamicPageList (third-party) is fully downward compatible with the extension described here. So the way is open for a re-unification of the different development paths. This is not true any more for the current versions since version 2.01 of DynamicPageList (third-party) does not support ordermethod=sortkey.
Extension:DynamicPageListEngine makes dynamic page lists available to Scribunto modules.



Script error

Language: English  • Deutsch • 日本語 • português do Brasil