Mediawiki Cargo
下载安装
https://www.mediawiki.org/wiki/Extension:Cargo/Download_and_installation
Cargo是什么?
Cargo是MediaWiki的一项扩展,可以提供轻量的方式来存储和查询数据,这些数据是通常通过信息框(infobox)等模板调用的。
Cargo的三个最重要的解析器函数
#cargo_declare - 位于模板的<noinclude>部分,为表定义概要。
#cargo_store - 为Cargo的表存储一行,通常位于模板的<includeonly>部分。
#cargo_query - 查询一个或多个Cargo数据表,使用SQL组件。
声明一个数据表
在表中存储数据的模板也需要声明该表,或者将自己“附加(attach)”到别处声明的表。由于每个模板通常有一个表(反之亦然),因此大多数使用Cargo的模板将声明它们自己的表。声明是通过解析器函数#cargo_declare完成的。这个函数是用以下语法调用的:
{
{
#cargo_declare:
_table=table name
|field_1=field description 1
|field_2=field description 2
...etc.
}}
注意表名和字段名都不能包含空格或破折号(-),下划线不能用于表和字段名的开头或结尾。
字段描述必须以字段的类型开头,很多情况下描述内容只是类型。 Cargo中预定义了以下类型:
指定的任何其他类型都将被视为“字符串”类型。 未索引类型的字段查询或连接的速度要慢得多。
我们来看一个例子:
需要注意的是,cargo的声明只能在模板里,在其他的位置声明,例如空白页面中会报错。
字段参数
描述字符串也可以有附加参数;这些都包含在类型标识符后的括号内,并用分号分隔。当前允许的参数有:
-
size= - 对于“Text”类型的字段,设置该字段的大小,即字符数;默认值由全局变量$wgCargoDefaultStringBytes设置,该变量的默认值为300(可以在LocalSettings.php中对其进行修改)。
-
hierarchy - 指定该字段包含值的层次结构,如“allowed values”参数中所定义。
-
allowed values= - 字段可以具有的一组允许值(通常用于类型为“String”或“Page”的字段)。如果未指定“hierarchy”,则应该只是一组用逗号分隔的值。如果指定了“hierarchy”,则应使用项目符号列表的语法来定义值。简而言之:每个值应在其单独的行上&