Extension:DynamicPageList (第三方)
A request to archive this extension has been made on Phabricator. See 工單T353927 for the archival request and the rationale for the request, and to leave comments about the request. |
此扩展与MediaWiki 1.35或更高的版本不兼容! 建议您不要在正常运行的网站上使用此扩展。 我们邀请志愿开发者将 {{Incompatible }} 模板替换为{{Incompatible |version=1.35|pledge=~~~~}} 來承諾更新此扩展使其与MediaWiki 1.41兼容。请参见以下替代扩展,这可能是您希望安装的扩展: |
此扩展目前不再活跃维护! 尽管它可能仍然工作,但任何错误报告或功能请求将很可能被忽略。 如果您对承担开发与维护该扩展的任务工作感兴趣,您可以请求自己的存储库。 As a courtesy, you may want to contact the author. 或者您应移除该模板,并在页面的{{Extension/zh }}信息框中将您自己列为扩展的维护人员。 |
DynamicPageList (third party) 发行状态: 不再維護 |
|
---|---|
实现 | 标签 , 解析器函数 |
描述 | 可以创建其他條目的列表,根据其「类别、命名空间、标题、引用」、或「模板使用」和包含内容或这些文章的模板调用的参数。 |
作者 | |
最新版本 | Continuous updates |
MediaWiki | 1.32.x - 1.34.x only |
数据库更改 | 否 |
许可协议 | GNU通用公眾授權條款2.0或更新版本 |
下載 | |
示例 | various sample reports |
参见描述 |
|
前往translatewiki.net翻譯DynamicPageList (third-party)扩展 | |
問題 | 开启的任务 · 报告错误 |
DynamicPageList (third-party) 扩展是一個MediaWiki的回报工具,以各种格式和细节列出类别成员和intersections。 有关完整文档,请参阅 完整原始手册 或 手册 (德语手册Hilfe:DynamicPageList)。
DPL 的最基本形式是按照一个或多个类别显示页面列表。 也可根据作者、命名空间、日期、名称模式、模板使用、或其他文章的引用等因素进行选择。 产出的形式多种多样,其中一些包含了所选文章的内容。
该扩展被解析器函数{{#dpl: .... }}
或解析器标记<DPL>
调用。
维基媒体兼容特定功能的实现可以被<DynamicPageList>
调用。
DPL 可能会导致计算密集型的数据库查询。 为获得最佳性能,请尽可能使用可选参数allowcachedresults和/或dplcache。
安裝
- 下载文件,并将其放置在您
extensions/
文件夹中的DynamicPageList
目录内。
开发者和代码贡献人员应从Git安装扩展,输入:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/DynamicPageList - 将下列代码放置在您的LocalSettings.php 的底部:
require_once "$IP/extensions/DynamicPageList/DynamicPageList.php";
- 如果有必要的話請根据需要配置。
- 完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。
配置
來自手册的DPL 配置设置及其默认值:
设置 | 默认 | 描述 |
---|---|---|
ExtDynamicPageList::$allowedNamespaces |
null
|
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.
$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.Functional richness
DynamicPageList has many features; some are expensive, or dangerous in the wrong hands. It is important to choose an appropriate level of functionality for your wiki.
ExtDynamicPageList::setFunctionalRichness(0)
- equivalent to Wikimedia's DPLExtDynamicPageList::setFunctionalRichness(1)
- adds additional formatting parametersExtDynamicPageList::setFunctionalRichness(2)
- adds performance equivalent features for templates and pagelinksExtDynamicPageList::setFunctionalRichness(3)
- allows more-expensive page inclusion features and regular expression queries; expect to use the dplcache parameterExtDynamicPageList::setFunctionalRichness(4)
- permits exotic and potentially dangerous batch update and delete operations; not recommended for public websites
Usage
Extended DPL functionality
DPL is invoked by using the parser function {{#dpl: .... }}
, or the parser extension tag <DPL>...</DPL>
.
Backwards-compatible functionality
Functionality compatible with Wikimedia's DPL extension can be invoked with <DynamicPageList> .... </DynamicPageList>
.
Overview
Assume you have written some articles about countries. Typically these articles will have three things in common:
- They will belong to a common category
- They will have a similar chapter structure, i.e. they will contain paragraphs named 'Religion' or 'History'
- They will use a template which is used to present highly structured short data items ('Capital', 'Inhabitants', ..) in a nice way (e.g. as a wikitable)
DPL generates reports on articles
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.
With DPL you can ..
- 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
Which steps are necessary?
Find the articles you want to list:
- select by a logical combination (AND,OR,NOT) of categories
- specify a range for the number of categories the article must be assigned to
- select by a logical combination (AND,OR,NOT) of namespaces
- define a pattern which must match the article's name
- name a page to which the article must or must not link
- name a template which the article must or must not use
- name a text pattern which must occur within external links from a page
- exclude or include redirections
- restrict your search to stable pages or quality pages ("flagged revisions")
- use other criteria for selection like author, date of last change etc.
- define regular expressions to match the contents of pages you want to include
Order the result list of articles according to
- name
- date of last change
- popularity
- user who changed them last
- size
- restrict the output to the first n articles or to a random sample
- use descending or ascending sequence
Define attributes you want to see
- article name
- article namespace
- article size
- date of last change
- date of last access
- user who changed them last
Define contents you want to show
- whole article
- contents of certain chapters (identified by headings)
- text portions (defined by special marker tags in the article)
- values of template calls
- substitute the original template by a different one and show the output of that template
Define the output format
- specify headline and footer for your report
- use ordered list, unordered list
- use tables, sorted tables (using javascript)
- format table fields individually by applying templates to their content
- use category style listing
- create "tag clouds" by varying output text size depending on popularity of pages
- multi column output
- truncate title or contents to a certain maximum length
- add a link to the article or to one or more of its chapters
DPL generates reports on categories
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?"
DPL can be used for bulk editing
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.
DPL interacts with other extensions
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 generate nice bar graphs or pie charts using DPL together with Ploticus, you can call 'gallery' or whatever you want...
DPL is a platform for building other applications
The power of DPL makes it possible to create applications on wiki template level which would normally require PHP programming. One example of this is a light-weight "semantic wiki" approach. See the DPL demo page for details.
DPL and performance
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.
See also
Further reading
DPL can do much more than we can explain here. The complete full original manual or manual (German Manual Hilfe:DynamicPageList) describes more.
Related extensions
- Manual:在MediaWiki管理数据 – An overview and comparison.
- 扩展:Semantic MediaWiki turns links and data in wiki pages into queryable information
- Extension:DPL大量删除 deletes pages based on DynamicPageList; also useful for testing different DPL settings without actually deleting the pages
- Pages using deprecated NoteTA template
- Extensions incompatible with 1.35/zh
- Unmaintained extensions/zh
- Tag extensions/zh
- Parser function extensions/zh
- GPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- All extensions/zh
- Extensions not using extension registration
- Category extensions/zh
- List extensions/zh
- Namespace extensions/zh
- Special page extensions/zh
- Table extensions/zh
- Page content extensions/zh
- Tag cloud extensions/zh
- Category intersection extensions/zh