Mediawiki
MediaWiki全球最著名的开源wiki程序,维基百科也使用该软件。MediaWiki采用PHP编程语言写成,可以使用MariaDB、MySQL、PostgreSQL或SQLite等数据库软件管理数据。
简介
时间轴
- 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 下载
- 下载软件压缩包,上传到网站指定文件夹,解压缩。
- 在浏览器输入该文件夹,进入配置页面,按照提示一步步操作。需要注意的是,虚拟主机MySQL先要在主机管理上配置,再在配置页面写入。
- 设置完成后会生成LocalSettings.php,下载并上传到wiki的文件夹,完成安装。
了解更多 >> MediaWiki 手册:安装指南
使用Docker安装
使用Docker安装很简单,一条命令即可。其中--name指定容器名称,-p设置主机8080端口对应容器80端口,-d 后台运行。
docker run --name some-mediawiki -p 8080:80 -d mediawiki
接下来在浏览器打开:http://localhost:8080 或 http://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种类型的超文本链接,几种链接添加方法:
- 内部链接:链接到Wiki网站其他页面: [[页面名]] 或[[页面名|显示名称]]。注意:页面名不区分大小写。如果存在页面的话文字颜色显示蓝色,不存在的话就会显示红色。
- 外部链接:链接到其他网站的链接。以百度为例:[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|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 使用MathML、LaTeX等标记语言输出SVG或PNG图片格式,使用到了数据库,安装也麻烦些。 手动安装:
- 下载扩展文件,并上传到服务器wiki的extensions/文件夹中,解压缩。
- 将下列代码放置在您的LocalSettings.php的底部:
wfLoadExtension( 'Math' );
- 运行更新脚本,它将自动创建此扩展必须依赖的数据库,注意:Web updater方式升级不行,错误不会消失。
- 要设置非纯文本输出的数学输出模式,请按照以下说明启用各种数学输出模式。
- 在Special:MathStatus页面查看Math插件状况。
第三方插件:SimpleMathJax
MathJax是一个跨浏览器的JavaScript库,它使用MathML、LaTeX和ASCIIMathML标记在Web浏览器中显示数学符号。MathJax使用文本排版显示,非图片。
手动安装:
- 下载扩展文件,并上传到服务器wiki的extensions/文件夹中,解压缩。
- 将下列代码放置在您的LocalSettings.php的底部:
wfLoadExtension( 'SimpleMathJax' );
- 如果想要配置
- 查看Special:Version页面是否安装成功。
用法:数学记号放在<math>与</math>的标记之间。 使用LaTeX在线编辑器,不用记代码格式,通过手写或输入即可生成代码,然后复制即可。
- 91数学网:在线LaTex数学公式编辑器按分类点选然后编辑即可生成LaTeX格式。
- wiris:MathType demo在线编辑,支持手写,生成LaTeX和MathML。
代码:
<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]
图表
图表扩展允许基于Vega的图表被加入至Wiki页面中。图表可以是静态或互动式的。 安装:
- 安装JsonConfig扩展,下载插件:最新版本,放入extensions/文件夹中解压缩。并在LocalSettings.php文件中加入如下代码:
wfLoadExtension( 'JsonConfig' );
- 安装图表插件,下载插件:最新版本,放入extensions/文件夹中解压缩。并在LocalSettings.php文件中加入如下代码:
wfLoadExtension( 'Graph' );
插入图表最简单的方法就是使用预先制作的模板,如利用{{Graph:Chart}}制作长条图。 这些模板隐藏了所有Vega复杂的部分。 开发者可借由图表沙盒开发图表。 (除了JSON格式,图表沙盒也支援维基语法)
魔术字
魔术字是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__ |
在语言有不同变体时(如中文简体和繁体),不对当前页面进行标题转换(其他内容照常转换)。 | |
其他 | ||
-1.10 | ||
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}} | 22 | 日(无前导的0) | |
{{CURRENTDAY2}} | 22 | 日(补足前导的0) | 1.6+ |
{{CURRENTDOW}} | 5 | 星期(数字格式),0(星期日)到6(星期六)表示 | |
{{CURRENTDAYNAME}} | 星期五 | 星期(名称) | |
时间 | |||
{{CURRENTTIME}} | 20:57 | 时间(24小时制HH:mm的格式) | |
{{CURRENTHOUR}} | 20 | 时间(24小时制含前导0的数字) | |
其他 | |||
{{CURRENTWEEK}} | 47 | 周数(数字) | |
{{CURRENTTIMESTAMP}} | 20241122205734 | YYYYMMDDHHmmss时间戳 | 1.7+ |
技术元数据
变量 | 输出 | 描述 | 版本 |
---|---|---|---|
站点 | |||
{{SITENAME}} | 知行迭代 | 维基网站的名称($wgSitename)。 | |
{{SERVER}} | https://zxdd.com | 域名URL($wgServer)。 | |
{{SERVERNAME}} | zxdd.com | 子域名和域名(自版本1.17后不再取决于$wgServerName)。 | |
{{DIRMARK}} {{DIRECTIONMARK}} |
|
输出这个wiki默认语言所使用的Unicode文本方向控制字符(从左到右书写的语言使用‎ ,反之使用‏ ),这在多方向文本中很有用。它取决于页面语言。
|
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}} | 45 | 唯一的版本ID。 在预览中为空,因此能用来显示仅限于预览时的错误讯息。 可能在吝啬模式中被停用。 | 1.5+ |
{{REVISIONDAY}} | 19 | 最近一次编辑的日期(无前导0)。 | 1.8+ |
{{REVISIONDAY2}} | 19 | 最近一次编辑的日期(前导0)。 | 1.8+ |
{{REVISIONMONTH}} | 08 | 最近一次编辑的月份(1.17+有前导0,较早版本没有前导0)。 | 1.8+ |
{{REVISIONMONTH1}} | 最近一次编辑的月份(没有前导0)。 | 1.17+ | |
{{REVISIONYEAR}} | 2020 | 最近一次编辑的年份 | 1.8+ |
{{REVISIONTIMESTAMP}} | 20200819042711 | 最近一次编辑的时间戳。 | 1.8+ |
{{REVISIONUSER}} | Eric | 最近一个对指定页面作出编辑的用户,或者当前正在对其编辑进行预览的用户。 | 1.15+ |
{{REVISIONSIZE}} | 56752 | 当前版本页面的大小(维基文本) | 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+ |
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}} |
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 的模板功能就起到作用了。
创建模板
在搜索栏输入“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:软件|软件分类]]
,将显示:软件分类。
备份
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的开源皮肤。