The DynamicPageList (third-party) extension is a reporting tool for MediaWiki, listing category members and intersections with various formats and details. For full documentation, see the manual (German Manual Hilfe:DynamicPageList).

In its most basic form, DPL displays a list of pages in one or more categories. Selections may also be based on factors such as author, namespace, date, name pattern, usage of templates or references to other articles. Output takes a variety of forms, some of which incorporate elements of selected articles.

This extension is invoked with the parser function {{#dpl: .... }} or parser tag <DPL>. A Wikimedia-compatible implementation of certain features can be invoked with <DynamicPageList>.

DPL can result in computationally-expensive database queries. For best performance, use the optional parameters allowcachedresults and/or dplcache where possible.

To be initialized at first use of DPL, array of all namespaces except Media and Special, because we cannot use the DB for these to generate dynamic page lists. Cannot be customized. Use ExtDynamicPageList::$options['namespace'] or ExtDynamicPageList::$options['notnamespace'] for customization.

ExtDynamicPageList::$allowUnlimitedCategories

true

Allow unlimited categories in the Query

ExtDynamicPageList::$allowUnlimitedResults

false

Allow unlimited results to be shown

ExtDynamicPageList::$behavingLikeIntersection

false

Changes certain default values to comply with Extension:Intersection

ExtDynamicPageList::$categoryStyleListCutoff

6

Max length to format a list of articles chunked by letter as bullet list, if list bigger, columnar format user (same as cutoff arg for CategoryPage::formatList())

ExtDynamicPageList::$fixedCategories

empty array

categories has been used

ExtDynamicPageList::$functionalRichness

0

The amount of functionality of DPL that is accesible for the user; to be set by DynamicPageList.php and DynamicPageListMigration.php see the fixcategory command

ExtDynamicPageList::$maxCategoryCount

4

Maximum number of categories allowed in the Query

ExtDynamicPageList::$maxResultCount

500

Maximum number of results to allow

ExtDynamicPageList::$minCategoryCount

0

Minimum number of categories needed in the Query

ExtDynamicPageList::$options

no options

If you add a line like the following to your LocalSettings.php, DPL will only run from protected pages: ExtDynamicPageList::$options['RunFromProtectedPagesOnly'] = "Extension DPL (warning): current configuration allows execution from protected pages only."; There is a whole bunch of other options too; see DPLSetup.php.

ExtDynamicPageList::$respectParserCache

false for <dpl> but true for <DynamicPageList>.

If set to 'true' DPL will no longer behave dynamically because its output is taken from the ParserCache. In other words, false = make page dynamic ; true = execute only when parser cache is refreshed

These are all public static variables.

The global variable $wgNonincludableNamespaces is also respected by DPL. It will prevent the contents of the listed namespaces from appearing in DPL's output.

Note: $maxResultCount is a LIMIT on the SQL query itself. Some DPL query parameters like includematch are applied after the SQL query, however, so results here may easily be misleading.

Let us assume that there is an article on Islam. You want to give some information about the spreading of this religion over various countries. But you do not want to create redundancy by repeating information that was already given in the articles on the countries.

In our scenario the natural approach with DPL would be to generate a list of 'countries' (=category) where Islam plays a role (i.e. restrict your selection to articles of category 'Country' which contain a link to 'Islam'). Typically you would want to include part of the text chapter on 'Religion' from each of the relevant countries. You might also want to give the number of inhabitants for each country. The output should be shown as an alphabetically ordered table. It would be nice if the user could easily sort the table by inhabitants or some other criteria.

Apart from producing a list of pages which match certain criteria, DPL can also create a list of categories a selected set of pages belongs to. This can be useful to get an idea of the semantic scope of a group of pages (which can be defined by some arbitrary criteria). One of the more useful applications would be question like: "To which categories do the pages belong which contain a reference to the current page?"

Sometimes you want to perform a similar editing task on many articles (like adding a template at the beginning of the text). DPL has a feature which allows you to update other articles based on regular expressions. This feature is experimental and can be disabled in the DPL config file.

With DPL you can generate output which is then fed into other MediaWiki extensions. An especially useful application of this kind is graph generation. DPL can analyze your wiki and prepare output which is then used by Extension:Wgraph to visualize it.

There is a special mechanism which allows you to call your own extension inside the result loop of a DPL query. This opens doors for assembling new 'applications' without having to program on php level. For example you can create menu trees for Extension:Treeview, you can create dependency graphs or timebars with Extension:Wgraph, you can generate nice bar graphs or pie charts using DPL together with Ploticus, you can call 'gallery' or whatever you want...

With a few lines of DPL code it is possible to create huge output and CPU load (think of a DPL query which tries to include the contents of all articles in your mediawiki ;-)). Normally this is not a problem because users who write DPL queries have some level of expertise. If you are afraid, however, you can restrict the execution of DPL queries to protected articles.

Apart from that the general performance of DPL on medium-size wikis is quite acceptable (see the performance tests on the dpldemo website). Use of allowcachedresults and/or dplcache where possible can improve performance.

The website where DPL is offered for download also contains the Call extension which allows to call an arbitrary MediaWiki article from the command line or from a wiki link and pass parameters to that article at the same time.