Mediawiki

Eric讨论 | 贡献2020年10月15日 (四) 04:03的版本 →‎SyntaxHighlight

MediaWiki全球最著名的开源wiki程序,维基百科也使用该软件。MediaWiki采用PHP编程语言写成,可以使用MariaDBMySQLPostgreSQLSQLite数据库软件管理数据。

简介

时间轴

  • 2001年1月15日,吉米·威尔士与拉里·桑格推出维基百科。使用UseModWiki软件,这是一个用Perl编写,使用CamelCase并将所有页面存储在单个文本文件中,没有任何更改历史记录。
  • 2001年1月下旬,UseModWiki开发人员和维基百科参与者Clifford Adams为UseModWiki添加了一项新功能:自由链接,例如能够使用特殊语法(双方括号)链接到页面。
  • 2001年夏天,基百科的参与者Magnus Manske,开始用PHP和MySQL支持编写新引擎,被称为PHP脚本。
  • 2001年8月,PHP脚本上市,9月,在SourceForge上共享。并测试到2001年末。
  • 2002年1月,维基百科从UseModWiki切换到PHP脚本。
  • 2002年,Lee Daniel Crocker重新编写代码,称新软件为Phase III。
  • 2002年7月,Phase III部署到英语维基百科。
  • 2003年初,Brion Vibber有效地接任了该软件的首席开发人员和发布经理。该代码现在由一个庞大且活跃的开发者组维护。
  • 2003年6月,维基百科的联合创始人吉米·威尔士创建了维基媒体基金会(Wikimedia Foundation)。
  • 2003年7月,维基百科软件被正式命名为MediaWiki。
  • 2003年7月,添加了新功能,例如自动生成的目录,以及编辑页面部分的功能,两者目前仍在使用。
  • 2003年8月,MediaWiki的第一个版本诞生,结束了一个应用程序的长期起源,其整体结构从那时起将保持相当稳定。
  • 2003年12月8日,发布MediaWiki 1.1 ,开始新的wiki表格语法,“魔术字”功能——特殊的变量和解析器指令。
  • 2006年10月10日,发布MediaWiki 1.8 ,开始完全支持PostgreSQL(8.1或更高版本)后台数据库。
  • 2019年12月19日,发布MediaWiki 1.34。

了解更多 >> Mediawiki:MediaWiki 历史 维基百科:MediaWiki 版本历史


用户

以下一些使用Mediawiki的网站:

安装

直接安装

  1. 下载MediaWiki软件压缩包,上传到网站指定文件夹,解压缩。
  2. 在浏览器输入该文件夹,进入配置页面,按照提示一步步操作。需要注意的是,虚拟主机MySQL先要在主机管理上配置,再在配置页面写入。
  3. 设置完成后会生成LocalSettings.php,下载并上传到wiki的文件夹,完成安装。

了解更多 >> MediaWiki 手册:安装指南


使用Docker安装

使用Docker安装很简单,一条命令即可。其中--name指定容器名称,-p设置主机8080端口对应容器80端口,-d 后台运行。

docker run --name some-mediawiki -p 8080:80 -d mediawiki

接下来在浏览器打开:http://localhost:8080http://host-ip:8080 进行初始化设置。数据库选SQLite,可以省去连接其他容器。配置完成后,会生成LocalSettings.php文件,把该文件使用docker cp命令复制到容器的/var/www/html目录中即可。

docker cp /path/to/LocalSettings.php some-mediawiki:/var/www/html

了解更多 >> Docker Hub:Mediawiki


编辑内容

编辑维基时最重要的一条规则就是大胆。不要犹豫、动手编辑。其他人会来更正错误的,所以要有信心,尝试一下吧!在保存之前先用“显示预览”按钮看一下你的修改会怎样是个好主意。这也与追踪更改相关,因为你的每次保存都会显示为一条修改记录。“显示更改”按钮,它可以让你查看当前版本与你编辑后的版本之间的差异。

了解更多 >> Mediawiki 帮助:编辑页面


创建新页面

创建新文章页面有多。常用在搜索输入页面名称,然后在搜索结果页面点击该红色名字创建。

了解更多 >> Mediawiki 帮助:创建新页面


Wiki标记语言

Wiki标记语言,又称Wiki语法,包含了许多参数与关键字,可将MediaWiki软件内的页面进行格式的编排。如在文章中使用三个引号包裹'''粗体'''会转为粗体

了解更多 >> 维基百科帮助:Wiki标记语言 维基百科:备忘单


文本格式

了解更多 >> Mediawiki 帮助:格式化文本


标题

MediaWiki页面中的标题使用等号标记,用几对等号括起来则表示是几级标题。每篇文章只要章节标题超过三个,就会自动根据这些标题生成一个目录(table of contents,TOC)。标题标记使用如下:

= 一级标题(文章) =
== 二级标题(章) ==
=== 三级标题(节)===
==== 四级标题(小节) ====
===== 五级标题(子小节) =====
====== 六级标题  ======

注:不要使用一级标题,表示页面本身。

粗体和斜体

''斜体''两个单引号包围表示斜体
'''粗体'''三个单引号包围表示粗体
'''''粗斜体'''''五个单引号包围表示粗斜体

列表

* 在行首表示无序列表,几个*表示几个层级。
# 在行首表示有序列表,空行或其他用任何其他字符在段首将停止列表。

定义

;事物一
: 事物一的定义
显示如下:

事物一
事物一的定义

分割线

----用4条横杆表示分割线,只能放在行头。 显示如下:


换行

Mediawiki忽略单个换行。要想另起一段,留空一行。或使用HTML标记<br />强制换行另起一段。如下:

单个换行会忽略,
不会影响输出格式。

但空出一行代表新段落的开始,
或是某个列表或缩进内容的终止。<br /> 
也可以使用html标记强制换行。

显示如下:

单个换行会忽略, 不会影响输出格式。

但空出一行代表新段落的开始, 或是某个列表或缩进内容的终止。
也可以使用html标记强制换行。

注释掉wiki标记

使用nowiki标记,标记中间的所有wiki标记都不会进行转换,直接显示。如:

<nowiki>wiki标记'''无效'''</nowiki>,也可以使用单个nowiki标记<<nowiki/>br/>注释掉html标记。

显示效果:

wiki标记'''无效''',也可以使用单个nowiki标记<br/>注释掉html标记。

代码块

预格式化文本
在行首使用空格。文本被预格式化并且可以使用维基标记。使用如:

 行首空格,代码行可以使用'''wiki标记'''

显示效果

行首空格,代码行可以使用wiki标记

预格式化文本块
在行首<nowiki> 之前使用空格,文本块的格式保留,wiki标记也不起作用,可用于源代码显示。显示效果如:

def function():
    """documentation string"""

    if True:
        print True
    else:
        print False

行内代码块
行内代码块好像只能使用HTML的<code>标记,使用如下:

一行中的<code>代码,wiki'''标记'''</code>会起作用。

显示效果如:

一行中的代码,wiki标记会起作用。


HTML 标记

在 MediaWiki 中允许使用一些HTML标记。比如<code>, <div>, <span> and <font>等。这些标记将在你插入它们的地方生效。

了解更多 >> Mediawiki 帮助:格式化文本



链接

创建页面后,需要添加链接才能调转到对应页面。在MediaWiki中有5种类型的超文本链接,几种链接添加方法:

  1. 内部链接:链接到Wiki网站其他页面: [[页面名]] 或[[页面名|显示名称]]。注意:页面名不区分大小写。如果存在页面的话文字颜色显示蓝色,不存在的话就会显示红色。
  2. 外部链接:链接到其他网站的链接。以百度为例:[http://www.baidu.com 百度] [网址+空格+链接名]

了解更多 >> Mediawiki 帮助:链接


表格

表格标记使{|开头,|}表示结束。表格标题可选,用|+表示,只能有一个且位于开头标记下面一行。行分隔线使用|- 。列分隔使用|标记。列标题使用!标记。这些标记都必须位于行首。使用如下:

{|
|橘子
|苹果
|-
|面包
|饼
|-
|奶油 
|冰淇凌 
|}

显示效果:

橘子 苹果
面包
奶油 冰淇凌

要在一行表示表格的一行可以使用||来分隔列,列标题使用!!分隔。使用如下:

{|
!名称 !! 数量
|-
|橘子 || 5
|-
|苹果 || 3
|}

显示效果:

名称 数量
橘子 5
苹果 3

可以添加HTML属性到表格,如:

{| class="wikitable"  style="width: 100%;
!colspan="6"|购物清单
|-
|rowspan="2"|麵包和奶油
|派
|小圆面包
|丹麥甜糕餅
|colspan="2"|羊角麵包
|-
|奶酪
|colspan="2"|冰淇凌
|奶油
|酸奶酪
|}

显示效果:

购物清单
麵包和奶油 小圆面包 丹麥甜糕餅 羊角麵包
奶酪 冰淇凌 奶油 酸奶酪

class可选值: wikitable mw-collapsible sortable

相关工具:

  • MediaWiki Tables Generator是一个快速生成表格在线工具,可以可视化编辑表格生成代码,也可以从原有表格(Excel,网页,文本等)直接复制,粘贴到该工具,生成mediawiki表格代码。

了解更多 >> Mediawiki 帮助:表格



图片

图片被存储在MediaWiki服务器上通常通过使用File:名字空间前缀(但传统的Image:名字空间前缀仍然作为同义词受到支持)作为MediaWiki链接的目标。 Media:名字空间前缀也可以作为替代用于链接用于引用原始媒体文件内容(在任何MediaWiki页面之外单独呈现或下载)。图片默认支持.jpg 或 .jpeg、.png、.png。其他格式(.svg/.tiff /.ogg/.pdf/.djvu )参见帮助设置。

文件上传默认是禁止的,上传图片需要将LocalSettings.php文件中$wgEnableUploads设置为 true 。

$wgEnableUploads = true;

上传通过Special:Upload完成。

显示图像的完整语法是:

[[File:filename.extension|options|caption]]

options是可选项,通过管道符号(|)分隔:


链接到图像:

添加:作为前缀到您要创建的链接前:

[[:File:Wiki.png]]

File:Wiki.png

[[:File:Wiki.png|Wiki]]

Wiki

了解更多 >> Mediawiki 帮助:图片 Mediawiki 帮助:图片管理



上传文件

设置文件种类: 您可以在LocalSettings.php中添加$wgFileExtensions以允许上传其他所需的文件类型。 例如,您可以将$wgFileExtensions行更改为类似的内容

$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc',
    'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx',
    'pptx'
);

了解更多 >> Mediawiki 手册:配置文件上传


扩展

数学公式

Math

Math是官方插件,维基百科使用该扩展来显示数学公式。 使用MathMLLaTeX等标记语言在服务器端渲染输出输出SVG图片或PNG图片格式的数学公式,默认为SVG图片。使用到了数据库,还要用到Mathoid软件在服务端生成SVG图片,所以安装会麻烦些。此扩展被用于一个或多个维基媒体项目上。

手动安装:

  • 下载扩展文件,并上传到服务器wiki的extensions/文件夹中,解压缩。
  • 将下列代码放置在您的LocalSettings.php的底部:
wfLoadExtension( 'Math' );
  • 运行更新脚本,它将自动创建此扩展必须依赖的数据库,注意:Web updater方式升级不行,错误不会消失。
  • 要设置非纯文本输出的数学输出模式,请按照以下说明启用各种数学输出模式
  • 在Special:MathStatus页面查看Math插件状况。

用法:数学公式放在<math>与</math>的标记之间。

了解更多 >> Mediawiki 扩展:Math 维基百科帮助:数学公式 维基百科:MathML


SimpleMathJax

SimpleMathJax是一个第三方扩展,通过MathJax在客户端浏览器渲染生成数学公式。MathJax是一个JavaScript库,所以SimpleMathJax安装很简单。SimpleMathJax默认使用TeX标记语言,输出公式为HTML + CSS 的文本格式。

手动安装:

  • 下载扩展文件,并上传并解压缩到服务器wiki的extensions/文件夹中的SimpleMathJax目录内。
  • 将下列代码放置在您的LocalSettings.php的底部:
wfLoadExtension( 'SimpleMathJax' );
  • 如果想要配置
  • 查看Special:Version页面是否安装成功。

用法:数学公式放在<math>与</math>的标记之间。

设置: 将以下配置变量放置在LocalSettings.php中wfLoadExtension('SimpleMathJax');之后即可。

设置名 默认值 描述 示例 版本
$wgSmjSize 110 SimpleMathJax的默认字体大小 $wgSmjSize = 150; 0.6.1+
$wgSmjInlineMath [] 可以添加一些其他的inlineMath符号对 $wgSmjInlineMath = [ [ "$", "$" ], [ "\\(", "\\)" ] ]; 0.6.1+
$wgSmjUseCDN true 使用CDN或本地资源 $wgSmjUseCDN = false; 0.7.0+
$wgSmjUseChem true 开启<chem>标签,默认开启 $wgSmjUseChem = false; 0.7.0+
$wgSmjShowMathMenu false 开启MathJax右键菜单,默认关闭 $wgSmjShowMathMenu = true; 0.7.4+

了解更多 >> Mediawiki扩展:SimpleMathJax


数学公式示例

使用LaTeX在线编辑器,不用记代码格式,通过手写或输入即可生成代码,然后复制即可。如下网站:

代码:

<math>\sum_{k=1}^N k^2</math>

显示:[math]\displaystyle{ \sum_{k=1}^N k^2 }[/math]

如代码:

<math>x_{\color{Maroon}1,2}=\frac{-b\pm\sqrt{{\color{Maroon}b^2-4ac}}}{2a}</math>

显示:[math]\displaystyle{ x_{\color{Maroon}1,2}=\frac{-b\pm\sqrt{{\color{Maroon}b^2-4ac}}}{2a} }[/math]

代码高亮

SyntaxHighlight

SyntaxHighlight扩展(语法高亮扩展),原先被称作SyntaxHighlight_GeSHi,使用<syntaxhighlight>扩展标签对源代码提供了丰富的格式。 它是由Pygments库提供支持的,并支持数百种不同的编程语言和文件格式。此扩展被用于一个或多个维基媒体项目上。

示例:

<syntaxhighlight lang="python" line='line'>
def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass
</syntaxhighlight>

显示效果:

def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass


参数:

参数 描述 示例
lang 设置词法分析器 数百种编程语言,如:python,
完整清单


了解更多 >> Mediawiki 扩展:SyntaxHighlight


图表

Graph

Graph(图表)扩展允许<graph>标签以JSON格式描述数据可视化内容,例如条形图,饼图,时间线和直方图等,该JSON格式呈现基于Vega的图表。图表可以是静态或互动式的。此扩展被用于一个或多个维基媒体项目上。

安装:

  • 安装JsonConfig扩展,下载插件:最新版本,放入extensions/文件夹中解压缩。并在LocalSettings.php文件中加入如下代码:
wfLoadExtension( 'JsonConfig' );
  • 安装图表插件,下载插件:最新版本,放入extensions/文件夹中解压缩。并在LocalSettings.php文件中加入如下代码:
wfLoadExtension( 'Graph' );

插入图表最简单的方法就是使用预先制作的模板,如利用{{Graph:Chart}}制作长条图。 这些模板隐藏了所有Vega复杂的部分。 开发者可借由图表沙盒开发图表。 (除了JSON格式,图表沙盒也支援维基语法)

了解更多 >> Mediawiki 扩展:Grap Mediawiki 扩展:Grap/范例 Mediawiki 扩展:Grap/指导


魔术字

魔术字是MediaWiki软件所识别的特定字符串,它们可以返回特定的值或触发其他的功能:比如时间、站点设置或是页面名称等等。以下只解释标准魔术字的用法。 魔术字有三种常规类型:

  • 状态开关:通常写成以两个下划线为前后缀的大写单词,例如__FOO__。
  • 变量:字符被两个大括号括起来,所有字母大写,例如{{FOO}}。用法与模板类似。
  • 解析器函数:可以创造参数,既可以是格式{{foo:...}},也可以是{{#foo:...}},例如{{#invoke:}}。参见帮助:扩展:解析器函数和扩展:Scribunto。

了解更多 >> Mediawiki 帮助:魔术字 Mediawiki 手册:魔术字


状态开关

状态开关可以控制页面(只要受皮肤支持)的显示方式或其他行为。它往往用于排除或加入特定的页面内容。例如在页面中加入__NOTOC__会隐藏该页面的目录。

魔术字 描述 版本
目录
__NOTOC__ 隐藏目录(TOC)。
__FORCETOC__ 强制于默认位置(第一个章节标题上方,忽略__NOTOC__的设置)显示目录。
__TOC__ 在魔术字的位置插入目录(忽略<nowiki>__NOTOC__的设置)。如果这个魔术字在一个页面内被多次使用,目录将出现在第一个词的位置。</nowiki>
编辑
__NOEDITSECTION__ 隐藏章节标题旁的编辑链接。
__NEWSECTIONLINK__ 在非讨论页顶端“编辑”标签右侧加入一个按钮,用于在页面结尾加入新的章节(参见[在页面末尾加入新章节 在页面末尾加入新章节])。 1.7+
__NONEWSECTIONLINK__ 移除讨论页顶端“编辑”右侧的加入新章节链接。 1.15+
分类
__NOGALLERY__ 用于分类页面。不显示分类中所包含文件的缩略图,而以普通链接代替。 1.7+
__HIDDENCAT__ 用于分类页面。加入后此分类成为隐藏分类,将不会显示在上级分类其及成员页面的分类列表中(可以通过参数设置中的选项强制显示)。 1.13+
__EXPECTUNUSEDCATEGORY__ 在分类页面上使用,从Special:UnusedCategories中删除分类。 1.33+
语言转换
__NOCONTENTCONVERT__
__NOCC__
在语言有不同变体时(如中文简体和繁体),不对当前页面进行字词转换。比如只显示中文,而不是显示大陆简体、台湾繁体、新加坡简体和香港繁体。
__NOTITLECONVERT__
__NOTC__
在语言有不同变体时(如中文简体和繁体),不对当前页面进行标题转换(其他内容照常转换)。
其他
__START__ 无影响。 曾用于指向不应被嵌入的注释之后开始的数据库消息。已被彻底废弃。 -1.10
__END__ 明确标记条目的结尾,来防止MediaWiki移除文末的空格。在19213中移除。 1.1-1.8
__INDEX__ 允许搜索引擎检索本页(忽略$wgArticleRobotPolicies的参数设置但并无法忽略robots.txt)。服从$wgExemptFromUserRobotsControl的设定。 1.14+
__NOINDEX__ 禁止搜索引擎检索本页(比如不可在搜索引擎列出指定页面)。服从变量$wgExemptFromUserRobotsControl的设定。 1.14+
__STATICREDIRECT__ 用于一些重定向页面。当有人移动页面并勾选“更新所有指向原始标题的重定向”时,禁止MediaWiki更新本页的重定向(需要变量$wgFixDoubleRedirects)。 1.13+

变量

变量可以返回关于当前页面、wiki站点或日期的信息。变量的语法与模板类似。其中标记为“[高开销]”的变量会被软件记录,且在一个页面中可使用的总数会被限制。

如果某一模板名与变量名重复,软件会自动将其解释为变量(因此若要包含Template:PAGENAME,页面中需要写作{{Template:PAGENAME}})。在某些情况下,加入参数会强制软件将变量视作一个模板,如{{CURRENTDAYNAME|x}}将会包含Template:CURRENTDAYNAME,而不是变量。

日期和时间

以下的变量返回当前的日期和UTC时间。 在MediaWiki与浏览器缓存的影响下,这些变量显示的往往是被缓存的值,而非当前的时间。 使用这些变量会使页面被缓存的时间变得更短,这可以通过MagicWordFactory 设置。 日期和时间魔术字被格式化为相应的语种。自1.19版本开始,它们取决于页面内容语言。

要使用所在服务器的日期与时间,将下面变量中的CURRENT改为LOCAL即可,如{{LOCALTIME}}表示服务器时间。

变量 输出 描述 版本
{{CURRENTYEAR}} 2024
{{CURRENTMONTH}} 11 月(补足前导的0)
{{CURRENTMONTH1}} 11 月(无前导的0)
{{CURRENTMONTHNAME}} 11月 月份名称
{{CURRENTMONTHNAMEGEN}} 11月 月份(属格)
{{CURRENTMONTHABBREV}} 11月 月份(缩写) 1.5+
{{CURRENTDAY}} 26 日(无前导的0)
{{CURRENTDAY2}} 26 日(补足前导的0) 1.6+
{{CURRENTDOW}} 2 星期(数字格式),0(星期日)到6(星期六)表示
{{CURRENTDAYNAME}} 星期二 星期(名称)
时间
{{CURRENTTIME}} 03:12 时间(24小时制HH:mm的格式)
{{CURRENTHOUR}} 03 时间(24小时制含前导0的数字)
其他
{{CURRENTWEEK}} 48 周数(数字)
{{CURRENTTIMESTAMP}} 20241126031209 YYYYMMDDHHmmss时间戳 1.7+

技术元数据

变量 输出 描述 版本
站点
{{SITENAME}} 知行迭代 维基网站的名称($wgSitename)。
{{SERVER}} https://zxdd.com 域名URL($wgServer)。
{{SERVERNAME}} zxdd.com 子域名和域名(自版本1.17后不再取决于$wgServerName)。
{{DIRMARK}}
{{DIRECTIONMARK}}

输出这个wiki默认语言所使用的Unicode文本方向控制字符(从左到右书写的语言使用&lrm; ,反之使用&rlm; ),这在多方向文本中很有用。它取决于页面语言。 1.7+
{{SCRIPTPATH}} 脚本相对路径($wgScriptPath)。
{{STYLEPATH}} /skins 样式相对路径($wgStylePath)。
{{CURRENTVERSION}} 1.38.4 此维基站点的MediaWiki版本。 1.7+
{{CONTENTLANGUAGE}}
{{CONTENTLANG}}
zh-cn
zh-cn
默认界面语言($wgLanguageCode)。 1.7+
页面
{{PAGEID}} 2 返回页面编号。 1.20+
{{PAGELANGUAGE}}
{{#language:{{PAGELANGUAGE}}}}
zh-cn
中文(中国大陆)
返回当前页面的语言。此变量返回的语言代码可使用{{#language:...}}转换为语言名。 1.29+
{{PROTECTIONLEVEL:行为}} 输出当前页面对于特定行为(比如edit,move)的保护级别(autoconfirm或sysop等)。若未保护则返回空字符串。 1.15+
{{PROTECTIONEXPIRY:动作}} 根据给出的动作(如edit、move),返回当前页面的保护信息(例如:时间戳“20160418155030”,或“infinity”) 如果未被保护,则会返回"infinity"。 1.27+
{{CASCADINGSOURCES}} [高开销] 返回当前页面上的任意连锁保护操作来源。除非存在自我嵌入,否则页面将不会返回其各自标题。 1.23+
最近一次编辑版本
{{REVISIONID}} 333 唯一的版本ID。 在预览中为空,因此能用来显示仅限于预览时的错误讯息。 可能在吝啬模式中被停用。 1.5+
{{REVISIONDAY}} 15 最近一次编辑的日期(无前导0)。 1.8+
{{REVISIONDAY2}} 15 最近一次编辑的日期(前导0)。 1.8+
{{REVISIONMONTH}} 10 最近一次编辑的月份(1.17+有前导0,较早版本没有前导0)。 1.8+
{{REVISIONMONTH1}} 最近一次编辑的月份(没有前导0)。 1.17+
{{REVISIONYEAR}} 2020 最近一次编辑的年份 1.8+
{{REVISIONTIMESTAMP}} 20201015040351 最近一次编辑的时间戳。 1.8+
{{REVISIONUSER}} Eric 最近一个对指定页面作出编辑的用户,或者当前正在对其编辑进行预览的用户。 1.15+
{{REVISIONSIZE}} 60314 当前版本页面的大小(维基文本) 1.22+
影响页面内容
{{DISPLAYTITLE:标题}}
{{DISPLAYTITLE:标题|noerror}}
{{DISPLAYTITLE:标题|noreplace}}
设置当前页面标题的显示格式。变量值须与标题等值:只允许对标题的特定部分(不是全部标题)的大小写变化和用下划线替换替换空格(这个设定可以通过$wgRestrictDisplayTitle改变)。可以通过$wgAllowDisplayTitle将其启用或禁用;在1.10+前默认禁用,之后的版本中默认启用。

可以使用第二个参数:“noerror”关闭使用多个本魔术字时导致错误信息提示。或“noreplace”如果displaytitle在前文已经设置,则关闭使用多个本魔术字时导致错误信息提示令displaytitle失效。

1.7+
1.24+
(以无错误提示、不替换为目的)
{{DEFAULTSORT:排序关键字}}
{{DEFAULTSORTKEY:排序关键字}}
{{DEFAULTCATEGORYSORT:排序关键字}}
{{DEFAULTSORT:排序关键字|noerror}}
{{DEFAULTSORT:|noreplace}}
在分类页面上使用,用来设置默认在分类中排序关键字。例如当你将{{DEFAULTSORT:Smith , John}}放到页面John Smith的结尾,该页面在分类页面上的列表中将默认排到“S”项下。可以使用第二个参数:“noerror”关闭使用多个本魔术字时导致错误信息提示。或“noreplace”如果defaultsort在前文已经设置,则关闭使用多个本魔术字时导致错误信息提示,令defaultsort失效。 1.10+
1.19+
(以无错误提示、不替换为目的)

统计

这些变量返回的数字往往包含分隔符(根据本地语言参数设置而可能是逗号或空格)。可以通过“:R”来返回无分隔号的数字(例如{{{NUMBEROFPAGES}} → 942,405和{{NUMBEROFPAGES:R}} → 942405)。

对于PAGESINCATEGORY等需要参数的变量则使用“|R”(例如{{PAGESINCATEGORY:Help}}和{{PAGESINCATEGORY:Help|R}}及{{PAGESINCATEGORY:Help|subcats}}和{{PAGESINCATEGORY:Help|subcats|R}})。并且也适用于前述{{PAGESIZE:页面名称}}。

返回数字的魔术字数字格式取决于内容语言的设定。自1.19开始,它取决于页面内容语言。

变量 输出 描述 版本
{{NUMBEROFPAGES}} 393 页面总数 1.7+
{{NUMBEROFARTICLES}} 188 内容名字空间中,作为条目的页面个数。 参见手册:$wgArticleCountMethod获得详情。
{{NUMBEROFFILES}} 9 上传的文件总数。 1.5+
{{NUMBEROFEDITS}} 1,545 总编辑次数 1.10+
{{NUMBEROFVIEWS}} 页面浏览次数。通常对使用缓存的wiki无效。 在Gerrit change 150699被删除。 1.14 - 1.24
{{NUMBEROFUSERS}} 0 注册用户数量 1.7+
{{NUMBEROFADMINS}} 1 管理员(sysop)组用户数。 1.7+
{{NUMBEROFACTIVEUSERS}} 0 活跃用户总数,其标准与Special:Statistics中的标准相同。 1.15+
{{PAGESINCATEGORY:分类名称}}
{{PAGESINCAT:分类名称}}
0
0
[高开销] 指定分类中的页面总数(包括子类和文件)。输出示例使用{{PAGESINCATEGORY:Help}}{{PAGESINCAT:Help}} 1.13+

{{PAGESINCATEGORY:分类名称|all}}
{{PAGESINCATEGORY:分类名称|pages}}
{{PAGESINCATEGORY:分类名称|subcats}}
{{PAGESINCATEGORY:分类名称|files}}

0
0
0
0

[高开销] 返回指定分类的:
  • 所有页面数
  • 所有非分类页和非文件页数
  • 所有子分类页数
  • 所有文件页数

(Category:Help 在此用于演示)

1.20+
{{NUMBERINGROUP:用户组}}
{{NUMINGROUP:用户组}}
1
1
特定用户群组中的用户总数。输出示例使用({{NUMBERINGROUP:bureaucrat}}和{{NUMINGROUP:bureaucrat}} 1.14+
{{PAGESINNS:索引编号}}
{{PAGESINNAMESPACE:索引编号}}
未启用 [高开销] 指定名字空间中的页面总数。(将“索引编号”替换成相关名字空间编号)。例如{{PAGESINNAMESPACE:14}}返回分类页面总数。{{PAGESINNS:0}}与{{NUMBEROFARTICLES}}不同之处在于包括重定向页面和消除歧义页面。默认禁用,可以通过$wgAllowSlowParserFunctions设置启用。 1.7+

页面名称

以下变量不受{{DISPLAYTITLE:xxxx}} 影响,它们都会按原来的页面标题计算返回值。

{{BASEPAGENAME}}{{SUBPAGENAME}}这两个魔术字只在启用了子页面模式的名字空间才生效。关于启用子页面模式请看$wgNamespacesWithSubpages

在1.15+之后,以下魔术字可以接受一个参数,用于指定特定页面,来代替要处理的当前页面设定,如{{PAGENAME:Template:Main Page}} → Main Page 。

注意: 如果页面标题包含存在...的任意部分,魔术字不会返回任何东西。 页面标题如果包括特定字符,例如:单引号'、星号*, 会导致以下魔术字会有不正常的处理结果,一种简单的修复方法是使用解析器函数扩展的{{#titleparts:}}来处理标题。

以下使用Help:Magic words/zh页面为例输出

变量 输出 描述 版本
{{FULLPAGENAME}} Help:Magic words/zh 名字空间与完整页面标题(包括子页面级别)。 1.6+
{{PAGENAME}} Magic words/zh 不包含名字空间的完整页面标题(包括子页面级别)。
{{BASEPAGENAME}} Magic words 页页面标题,不包括当前子页面标题及命名空间。 在Help:Title/Foo/Bar页面返回Title/Foo。 1.7+
{{ROOTPAGENAME}} Magic words 获得当前页面的根页名。 在Help:Title/Foo/Bar页面返回Title。 1.22+
{{SUBPAGENAME}} zh 子页面标题。 在Help:Title/Foo/Bar页面返回Bar。如果子页面不存在将会回传Mediawiki的值。如果需要使用更多匹配的话,请使用解析器函数扩充功能的{{#titleparts:}}。 1.6+
{{SUBJECTPAGENAME}}
{{ARTICLEPAGENAME}}
Help:Magic words/zh
Help:Magic words/zh
获得该页面的完整页面名。对讨论页十分有用。 1.7+
{{TALKPAGENAME}} Help talk:Magic words/zh 关联讨论页的完整页面名称 1.7+


要获取URL编码后的页面名称(就是空格替换为下划线,以及使用数字字符编码的一些HTML溢出字符),只需要将上面几个魔术字名称后面添加E即可,例如{{FULLPAGENAMEE}}就是{{FULLPAGENAME}}在URL中的等价编码。

注意{{PAGENAME:...}}{{PAGENAMEE:...}}{{urlencode:...}}有不同的实现方式。参见手册:PAGENAMEE编码以获取详情。

命名空间

在1.15+开始,这些可以是完整页面名参数,并将返回与那个页面相关的请求名字空间,而不是在当前页面中。如{{NAMESPACE:Template:Main Page}} → Template 。注意:参数必须不是一个名字空间名称。

变量 输出 描述 版本
{{NAMESPACE}} 命名空间的名称
{{NAMESPACENUMBER}} 0 页面所在命名空间的ID 1.20+
{{SUBJECTSPACE}}
{{ARTICLESPACE}}

相关联的内容命名空间的名称 1.7+
{{TALKSPACE}} 讨论 相关联的讨论命名空间的名称 1.7+

要获取URL编码后的命名空间名称(就是空格替换为下划线,一些字符替换为百分号编码),只需要将上面几个魔术字名称后面添加E即可,例如{{NAMESPACEE}}就是{{NAMESPACE}}在URL中的等价编码。

其他

变量 输出 描述 版本
{{!}} | 用于在模板或者是表格内插入管道符号。在被添加为魔术字之前,许多wiki通过创建包含|内容的Template:!来实现。 1.24+

解析器函数

解析器函数与变量相似,但需要一个或多个参数(技术上讲,任何需要参数的魔术字都是解析器函数)。以下介绍一些MediaWiki重要的解析器函数,解析器函数还可以通过扩展添加,如下文的扩展:解析器函数。

指定页面的技术元数据

1

URL数据

名字空间

格式化

本地化

嵌入修改器

杂项

扩展:解析器函数

解析器函数(ParserFunctions)插件,提供一些函数加强了维基格式文本(wikitext)的解析能力。此扩展被用于一个或多个维基媒体项目上,这可能意味着扩展稳定且工作良好。

安装:

  • MediaWiki 1.18及以上版本已经包含该插件,开启即可使用
  • 将下列代码放置在您的LocalSettings.php的底部:
wfLoadExtension( 'ParserFunctions' );
  • 完成 – 在您的wiki上导航至Special:Version,以验证扩展已成功安装。

解析器函数扩展提供11个附加解析器函数以补充MediaWiki固有的“魔术字”。 解析器函数格式:{{#函数名: 参数1 | 参数2 | 参数3... }},如{{#expr: 表达式 }}这个函数用来计算表达式并返回结果,{{#expr: 1+1 }}会输出2。

函数名 格式 描述 示例 结果
#expr {{#expr: 表达式 }} 计算并返回数学表达式的结果 {{#expr: 1+1 }} 2
#if {{#if: 字符串 | 当字符串不是空值时的值 | 当字符串是空值(或只包括空格)时的值 }} 判断一个字符串是否为空,根据结果返回不同值 {{#if: | 不空显示 | 空时显示我}} 空时显示我
#ifeq {{#ifeq: string 1 | string 2 | value if identical | value if different }} 函数判断两个输入字符串是否相同,根据结果返回不同值 {{#ifeq: foo | bar | 相等结果| 不等结果}} 不等结果
#iferror {{#iferror: test string | value if error | value if correct }} 函数以一个字符串为输入,根据字符串是否出错返回不同值 正确| 出错 }}</nowiki> 出错
#ifexpr {{#ifexpr: expression | value if true | value if false }} 判断数学表达式并根据其布尔值结果返回对应的字符串 {{#ifexpr: 1 < 0 | 正确 | 错误}} 错误
#ifexist {{#ifexist: page title | value if exists | value if doesn't exist }} 将一组字符串作为输入,并翻译成页面标题,然后根据在本地wiki上是否存在该页面而返回对应的值。 {{#ifexist: Help:Extension:ParserFunctions/zh | exists | doesn't exist }} exists
#rel2abs {{#rel2abs: path }} {{#rel2abs: path | base path }} 将相对文件路径转化为绝对文件路径 {{#rel2abs: /quok | Help:Foo/bar/baz }} Help:Foo/bar/baz/quok
#switch {{#switch: comparison string | case1 = result | case2 = result | ...| default result}} 根据输入的字符串,返回第一个匹配到的结果的值 {{#switch: 苹果 | 李子 = 你选了李子 | 苹果 = 你选了苹果 | 你选了水果}} 你选了苹果
#time {{#time: format string | date/time object | language code | local }} 格式化日期时间 {{#time: Y-m-d }} {{#time: Y-m-d }}
#timel {{#timel: format string | date/time object | language code }} 格式化日期时间,等同于time函数的local设置为true {{#timel:c|now|it}} now|it}}
#titleparts {{#titleparts: 文章名 | 返回片段的个数 | 返回的第一个片段的起始位置 }} 按斜线将文章名分解成不同片段,按需求返回内容 {{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2 }} bar/baz

了解更多 >> Mediawiki 扩展:解析器函数 Mediawiki 帮助:扩展:解析器函数


模板

如果你需要在多个页面上包含同样格式的文本的话,MediaWiki 的模板功能就起到作用了。

创建模板

在搜索栏输入“Template:模板名称”,在结果中点击红色链接创建模板。

使用模板

模板使用有四种方法:

  • {{模板名称}}:引用模板
  • {{subst:模板名称}}:页面保存时候,会把模板内容复制到当前页面。
  • {{safesubst:模板名称}}
  • {{msgnw:模板名称}}

模板参数

模板中可以放置变量,声明变量的方法是使用三组花括号:{{{变量名称}}}。变量名称可以是数字或字母,字母大小写敏感。如下模板Template:Thankyou:

'''感谢你!'''
感谢 {{{1}}}。
来自 {{{2}}} 

在调用模板时,需要为变量赋值,变量间用一个竖线符号(|)分隔。赋值方式有三种:隐式赋值、名称赋值。

隐式赋值:变量名称不写,按变量顺序赋值,这种变量顺序一定要对。如:{{Thankyou|你的努力|张三}}

名称赋值:写上变量名称和值,顺序可以颠倒。如:{{Thankyou|1=你的努力|2=张三}}

模板变量可以设置缺省值,当引用模板时候,这个变量没赋值,便会显示缺省值。如下模板:

'''感谢你!'''
感谢{{{reason|一切}}}。
来自{{{signature|张三}}}

当调用模板时候,变量reason不赋值,如:{{Thankyou|signature=李四}},这时候输出会变成:感谢你!感谢一切。来自张三

内容的显示和不显示:

  • <noinclude>:模板中<noinclude>和</noinclude>之间的内容只在查看模板时候显示,嵌入模板的页面不会显示。可用于:模板归类,模板的注释内容等。
  • <includeonly>:模板中<includeonly>和</includeonly>之间的内容只会在嵌入页面的时候才会被处理或显示,直接查看模板时不会显示。 两个标签之外的内容在模板和引用页面都会显示。

模板示例

如下面制作一个公式模板,在搜索框输入“Template:公式”来查看模板内容,在文章中按下面方法使用:

{{公式|公式名称|<math>表达式如:c=a+b</math>|编号|注释}}

显示效果:

公式名称 [math]\displaystyle{ 表达式如:c=a+b }[/math] 编号
注释

了解更多 >> Mediawiki 帮助:模板


管理

分类

分类是 MediaWiki 软件的一项功能,分类页面会自动索引该分类的所有页面,生成一个列表。您只需给页面的维基文本中加上一个或多个Category标记即可将页面归类。在分类页面可以很方便地查看相关文章。

所有分类页面都位于分类(category)名字空间,该页面中包含一组相关的页面以及该分类中子类的索引。

了解更多 >> Mediawiki 帮助:分类


将页面分类

在页面中添加 [[category:xxx]][[分类:xxx]] ,一般放置于文章结尾。表示该篇文章添加到xxx分类。你可以为页面添加多个Category标记,页面名称将列入所有这些分类页面中。

页面分类后,其分类一般显示于页面底端的分类框中(取决于皮肤),排列顺序取决于你输入时的顺序。默认只显示分类名“xxx”,可以通过设置 $wgUseCategoryBrowser=true 将每个分类与所有母类一起显示出来。页面也可以隐藏分类,MediaWiki 1.13 及后续版本中,只要在该页面加入“魔术字” __HIDDENCAT__ 。读者可以在 "隐藏分类" 处查看隐藏的分类。只需在Special:Preferences的“显示”一节处点选 "显示隐藏分类" 即可。

页面在分类页面上的默认排序依据页面名称的首字(母),依据Unicode顺序排列。分组也是依据是首字(母)。可以通过“排序依据”来修改一个页面所属分组,即在管道字符后标记排序依据。如在页面中添加 [[Category:xxx|yyy]] ,将在分类页面上把”xxx“归于”y“组,而不是默认的”x“组。

创建分类页面

无论分类页面是否创建,分类都将存在。但是这样的分类将孤立于其他页面,并且在组织内容和导航方面作用有限。在分类(category)名字空间创建的页面都属于分类页面。分类页面的创建与创建普通页面没有什么不同,创建时注意在页面名称前加上 Category:分类: 即可。

管理分类

分类可以是某分类的子分类。可将Category添加到分类页面的底端,从而将该分类归入某个母分类。如[[category:xxx]][[分类:xxx]]添加到分类页面“category:zzz”的底端,从而将分类“xxx”归入母分类“zzz”。

分类页面也可以被重定向到其他页面或者分类页面。但是,不建议这么做。因为被分类到重定向分类的页面将无法归入目标分类中。有些维基网站使用"分类重定向"模板来标记重定向分类,允许手工或者自动清除这些被分类到那里的页面。

特定的语法问题,比如失效的链接,或者过多的有过多昂贵解析器函数调用的页面,将导致页面被添加到“追踪分类”中。

链接到一个分类

要创建一个指向分类页面的链接,需要在“分类”前加上冒号(没有这个冒号,页面将被归入该分类)。如链接到分类“帮助”使用[[:分类:软件]],将显示: 分类:软件

要改变链接所显示的文本,使用管道符号“|”传递文本,如:[[:Category:软件|软件分类]],将显示:软件分类

重定向

重定向页是用来将一个页面引导至另一页面。 这功能主要是用于解决多译名、别名的情况。

存在两种重定向:硬重定向和软重定向

建立重定向

在需要重定向的页面最上端加上 #重定向 [[xxx]]#REDIRECT [[xxx]],即可把该页面重定向到xxx页面。

REDIRECT大小写不敏感,也可以写作redirect,但注意#前面不可有任何空格和文字。重定向标记后面的内容不会再显示,如果后面有内容应该记得删除。

删除重定向

通常并没有删除重定向页的需要,因为他们没占据多少数据库的空间。 如果某件事物名字是很模糊的,放一些相关联的名字当重定向页并没什么不好,反而有好处。

如果需要删除重定向,直接删除该页面。

了解更多 >> Mediawiki 帮助:重定向


备份

MediaWiki数据保存在两个地方:

  • 数据库:页面和内容,用户和用户的偏好设置,原数据,搜索索引,等等。
  • 文件系统:软件配置文件,自定外观,扩充功能,图像(包括已删除图像)等等。

备份步骤:

  • 维基设置为只读,在LocalSettings.php文件中加入如下代码:
$wgReadOnly = 'This wiki is currently being upgraded to a newer software version. Please check back in a couple of hours.';
  • 文件系统用FTP或打包下载等。
  • 数据库使用phpMyAdmin管理的话,点击导出即可。

了解更多 >> Mediawiki 帮助:备份


升级

  • 备份wiki网站,以防万一。
  • 下载最新版本,上传到服务器并解压缩。
  • 把之前版本的LocalSettings.php,图片文件夹,插件文件复制到新版本。把之前版本文件夹名称修改,新版文件夹名称改为之前。
  • 运行升级,小体量可以用web升级,将您的浏览器导航到/mw-config/,按向导升级。

了解更多 >> Mediawiki 帮助:升级


错误调试

下面参数可以在页面显示错误信息,默认是关闭,可以在LocalSettings.php文件中设置为true:

$wgShowExceptionDetails=true;

Enable more details (like a stack trace) to be shown on the "Fatal error" page.

$wgDebugToolbar=true;

Shows a toolbar on the page with profiling, log messages and more.

$wgShowDebug=true;

Adds the "log messages" part of wgDebugToolbar as a raw list to the page.

$wgDevelopmentWarnings=true;

MediaWiki will throw notices for some possible error conditions and for deprecated functions.

数据库方面错误:

$wgShowDBErrorBacktrace = true; 
$wgShowSQLErrors = true;

了解更多 >> Mediawiki 帮助:如何调试


定制外观

侧边导航栏

在右上角搜索栏输入“mediawiki:sidebar”确认后进行编辑。 格式:

*导航栏一
**链接|名称
**链接|名称

*导航栏二
**链接|名称
**链接|名称

链接有三种类型:1.http网址。2.文章页面标题。3.mediawiki名字空间的参数页。

了解更多 >> Mediawiki 手册:侧边栏 Mediawiki 扩展:侧边栏菜单



皮肤安装使用

皮肤定义了 MediaWiki 界面的外观和感觉。 尽管外观和感觉随皮肤变化,不过一般而言所有的皮肤都有相同的界面组件。 同一个界面组件在每个皮肤中可能显示不同,例如不一样的颜色或在页面上位置不同。

要尝试可用的皮肤以及更改皮肤,在登录时点击我的参数设置链接,然后点击“皮肤”标签选择一个皮肤即可。MediaWiki提供了几款默认皮肤可供选择。

如果要安装其他皮肤,可以按下面步骤:

  • 下载文件,并将其放置在您skins/文件夹中的your_skins目录。
  • 将下列代码放置在您的LocalSettings.php的底部:
wfLoadSkin( 'your_skins' );
  • 完成 - 在您的wiki上打开至Special:Version,以确认扩展已成功安装。

了解更多 >> Mediawiki 帮助:皮肤



安装移动版前端

1.下载插件文件,并将其放置在您extensions/文件夹中的MobileFrontend目录内。
2.将下列代码放置在您的LocalSettings.php的底部:

wfLoadExtension( 'MobileFrontend' );
$wgMFAutodetectMobileView = true;

3.如果必要,在您方便的时候配置。
4.完成 – 在您的wiki上导航至Special:Version,以验证扩展已成功安装。
注意:如果没有移动皮肤,会报错,安装Minerva皮肤即可。安装后在LocalSettings.php文件中加入wfLoadSkin( 'MinervaNeue' );。

了解更多 >> Mediawiki 扩展:移动前端



自定义CSS

可以通过自定义CSS来修改外观。如MediaWiki:Common.css会改变所有用户所有皮肤的样式,该样式表会在加载完当前网站皮肤的样式表后再加载。要设置MediaWiki:Common.css,可以再搜索框输入MediaWiki:Common.css进入。在修改保存之后,可能需要清除浏览器缓存才能看到所作出的变更的影响。

分全局样式表和个人样式表,如下:

类别 Stylesheets 作用域 示例
全局CSS MediaWiki:Common.css 所有皮肤,所有用户,除了MobileFrontend之外。
MediaWiki:skinname.css 某个皮肤,所有用户,除了MobileFrontend之外。 Timeless皮肤样式表:MediaWiki:Timeless.css
User group CSS 某个组。 MediaWiki:Group-sysop.css
MediaWiki:Noscript.css 不使用JavaScript的用户
MediaWiki:Print.css 页面打印
MediaWiki:Mobile.css 移动端主题, 用于Extension:MobileFrontend
MediaWiki:Filepage.css
个人CSS User:Example/common.css 某个用户,所有皮肤
User:Example/skinname.css 某个用户,某个皮肤 User:Example/Timeless.css
User:Example/global.css 每个wiki family


了解更多 >> MediaWiki 手册:界面/Stylesheets MediaWiki 皮肤:Timeless MediaWiki 皮肤讨论:Timeless MediaWiki 皮肤:Timeless-DarkCSS


编程开发

自定义JavaScript

了解更多 >> MediaWiki 手册:界面/JavaScript



皮肤制作修改

MediaWiki手册皮肤制作分三部分,第一部分关于设计皮肤需要考虑的问题,第二部具体制作,第三部测试和其他。

一个简单皮肤基本框架为:

YourSkin/  
  skin.json      # mediawiki(v1.25以上)程序的接口,用于描述所有数据模板资源等位置,只有这个文件名不能修改。
  YourCode.php   # 皮肤实际代码
  i18n/          # 多语言翻译文件夹

Github上也有许多MediaWiki的开源皮肤。

了解更多 >> MediaWiki 手册:皮肤 MediaWiki 手册:皮肤制作第一部分 MediaWiki 手册:皮肤制作第二部分 MediaWiki 手册:皮肤制作第三部分


资源

官方网站

相关网站

参考资料