Extension:DynamicPageList (Wikimedia)

This page is a translated version of the page Extension:DynamicPageList (Wikimedia) and the translation is 100% complete.
MediaWiki扩展手册
DynamicPageList
发行状态: 稳定版
实现 标签 , 解析器函数
描述 輸出一個最新進入分類項目的符號列表,或多個分類的交集。
作者 IlyaHaykinson and Amgine
最新版本 Continuous updates
兼容性政策 快照跟随MediaWiki发布。 master分支不向后兼容。
MediaWiki 1.23+
PHP 5.4+
数据库更改
许可协议 GNU通用公眾授權條款2.0或更新版本
下載
示例
  • $wgDLPmaxCategories
  • $wgDLPMaxCacheTime
  • $wgDLPAllowUnlimitedResults
  • $wgDLPAllowUnlimitedCategories
  • $wgDLPQueryCacheTime
  • $wgDLPMaxResultCount
  • $wgDLPMaxQueryTime
‎<DynamicPageList>
正在使用的公开wiki数 813 (Ranked 314th)
翻译DynamicPageList (Wikimedia)扩展
問題 开启的任务 · (Wikimedia) 报告错误
此扩展是由Wikimedia使用,別與Extension:DynamicPageList (第三方) Extension:DynamicPageList3 混淆。

DynamicPageList扩展讓Wiki用户建立頁面列表,并将其列入一组类别。有關一般信息請見m:幫助:DPL

起源

它最初是为了維基新聞开发的。目前,维基新闻的大多数语言项目(詳见n:Wikinews:DynamicPageList)、Meta、MediaWiki.org 和其他一些小型项目都已有安装。 由于性能问题,它不会再安装到任何维基媒体的wiki上

此扩展以前称为DynamicPageList/old,后来称为Intersection。您可能还会对拥有更多功能的DynamicPageList3 感兴趣。

安装和设置

安裝

  • 下载文件,并将其放置在您extensions/文件夹中的intersection目录内。
    开发者和代码贡献人员应从Git安装扩展,输入:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/intersection
  • 将下列代码放置在您的LocalSettings.php 的底部:
    wfLoadExtension( 'intersection' );
    
  •   完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。

配置

该扩展还支持几个配置变量。通常情况下,你不会想更改默认值,但如果你想更改,可以在require_once行之后将它们添加到 "LocalSettings.php "中。以下是支持的配置变量及其默认值:

# 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

使用

DynamicPageList 可在维基的编辑視窗中使用XML相似的语法。参数控制了要列表的页面、顺序和显示模式。有关各個参数的信息,请参阅以下章节。例如,以下是本维基中最近移至 MediaWiki.org 的最古老的五个页面。

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

一个非常复杂的 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>

它列出了文件名空间中属于foo类别的第12页至第31页,将其格式化为图片库,并在标题中以年月日的格式标明添加到foo类别的日期、使其图片的宽度为70px

選擇頁面

category

category列出要交集的分類。DynamicPageList將會列出在每一個分類都能找到的頁面,要列出的最小和最大頁面數在擴展源代碼中被設定,你可以在分類名稱中使用魔術字,例如{{CURRENTMONTHNAME}}。

語法為category = 分類名稱

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

notcategory

notcategory可以限制頁面列表不在特定分類中,你可以在分類名稱中使用魔術字,例如{{CURRENTMONTHNAME}}。

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

namespace

namespace將上面指定的頁面列表限制在特定命名空間中,使用名稱或編號指定(請參閱預設命名空間列表)。任何無效名稱將等效於主條目命名空間。

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

redirects

redirects決定是否包含重定向頁面。 该值可以是exclude(默认值,不列出重定向)、include(列出重定向)或only(不列出非重定向页面)。

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

stablepages

stablepages决定了在使用Extension:FlaggedRevisions 时是否包含稳定(已标记)页面。 該值可以是 exclude(不列出)、include(列出稳定和非稳定页面。是默认值)或only(只列出稳定页面)。需要安装FlaggedRevs才能使用。

qualitypages

qualitypages决定了在使用Extension:FlaggedRevisions 时是否包含高质量(已标记為'纯净'等級)页面。 該值可以是exclude(不列出)、include(列出高质量和非高质量)或only(只列出高质量页面)。

注意:与旧版本相比,qualitypages 的行为有些变化。在旧版本中,qualitypages=exclude 会自动设置为 stablepages=only。现在已不再如此。

count

count限制顯示的結果數。預設情況下會顯示最近添加到分類的頁面(請參閱排序)。請注意,該擴展不會列出比擴展源代碼中所定義的最大值更多的結果。

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

offset

offset从列表第一页以外的某個地方开始列表。 例如,可以用count制作多栏佈局。

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

示例欄

<table>
<tr><th colspan="3"> recent articles in [[:category:Demo|: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>

顯示的細節

shownamespace

shownamespace在頁面名稱中顯示命名空間。 此值可以是true(是預設,會顯示在名稱中:Help:Contents )、或false(不會顯示在名稱中:Contents )。

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

addfirstcategorydate

addfirstcategorydate顯示每個頁面加入分類的日期。此值可以是「true」(顯示日期)、「false」(預設,不顯示日期)或日期指示浮(ymd、md、dm、dmy、mdy或ISO 8601)。如果指定了多個分類,則使用第一個分類。在頁面名稱前方顯示的日期格式由您本地的MediaWiki日期格式偏好決定。

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

mode

mode決定了列表的格式,此值可以是:

  • unordered — 項目符號列表
  • ordered — 編號列表
  • none — 帶有換行的純連結
  • gallery — 圖庫,就像是‎<gallery>
  • inline — 逗號分隔列表
unordered:
<DynamicPageList>
category = Demo
mode     = unordered
</DynamicPageList>

編號:

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

純連結:

<DynamicPageList>
category = Demo
mode     = none
</DynamicPageList>

逗號分隔:

<DynamicPageList>
category = Demo
mode     = inline
</DynamicPageList>
mode=gallery

图库是一种特殊模式,其输出是一个图像图库。 如果安装了Extension:页面图片 ,那么非文件页面将使用页面图像(如果存在的話)。 否则,非文件命名空间的页面将只是一片空白。

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

图库模式还支持选项imagewidth(图库中图片的宽度,如果你使用该选项,还需要设置 imageheight)、imageheight(图片的高度)、galleryshowfilesize(显示图片大小,就像在分类页面上一样)、galleryshowfilename(显示文件名,就像在分类页面上一样)、imagesperrow(图库中每行的图片数量)、gallerycaption(图库的标题)等选项。

如果使用 addfirstcategorydate,日期会附加到图片标题中。

请注意,图库标题目前无法接受链接。(但它可以接受类似 {{CURRENTMONTHNAME}} 这样的链接)。

一个复杂的图库例子可能是

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

suppresserrors

suppresserrors用以隱藏錯誤。此值可以為「true」(隱藏錯誤)或「false」(預設,顯示錯誤)。

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

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

nofollow

nofollow设置rel="nofollow"到各個链接。 这样可以防止网络爬虫通过 DynamicPageList 中的链接进入页面。 一般来说,这是没有用的,因为网络爬虫要么能通过其他链接索引该页面,要么由于 robots.txt/$wgDefaultRobotPolicy 的原因根本无法索引。 一般来说,除非你知道自己在做什么,并有充分的理由,否则不应使用此选项。 主要的使用案例是,在英文维基新闻中,谷歌新闻认为从主页链接的任何内容都是一篇文章。

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

googlehack

这是针对维基新闻的黑客技术。以前,谷歌新闻只将带有数字的文章视为新闻文章[1],因此这个选项会在列表中的网址末尾添加 ?dpl_id=<id of article>。除非你有充分的理由,否则不应该使用这个选项(不过它也不会有什么坏处)。该选项取代了不再受支持的 showcurid 选项。

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

排序

ordermethod

ordermethod指定排序及顯示日期,此值可以是:

  • categoryadd — 預設,以頁面加入第一個分類的日期排序
  • lastedit — 以頁面最後編輯時間排序
  • length — 以頁面長度排序
  • created — 以頁面建立時間排序
  • categorysortkey — 基本上按照第一個分類的排序字以字母順序排序
  • sortkeycategorysortkey的別名

需要注意的是,lastedit 的真正排序取决于页面最后一次被触及的时间。 在某些情况下,这并不等同于最后一次编辑(例如,这包括权限的更改、链接页面的创建或删除、以及被包含模板的更改)。 如果不指定类别,某些排序方法将不起作用—特别是,如果没有category段落,categoryaddcategorysortkey将退回到created

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

按字母順序範例:

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

order

order決定排序方向。 該值可以是descending(是默认值,从最新到最旧)或ascending(从最旧到最新)。

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

模板

要在模板内使用并传递参数、使用解析器函式等,请使用{{#tag: 函式:

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

模板页面本身会显示错误信息,因为模板页面上的类别值是空的,除非您将模板放在‎<includeonly>标记内。 示例

错误:需要包含至少一个分类,或指定一个命名空间!


衍生扩展