扩展:变量

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:Variables and the translation is 93% complete.
Other languages:
Deutsch • ‎English • ‎Tiếng Việt • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎русский • ‎中文 • ‎日本語 • ‎한국어
MediaWiki扩展手册
OOjs UI icon advanced.svg
Variables
发布状态: 稳定版
实现 解析器函数
描述 介绍页面作用的变量函数。
作者
维护者 MGChecker
最新版本 2.5.2 (2019-07-11)
MediaWiki 1.29+
PHP 5.5+
数据庫更新
许可协议 ISC授權條款
下载
README
RELEASE-NOTES
翻译Variables扩展如果在translatewiki.net可用
检查使用和版本矩阵。
Vagrant角色 variables
问题 开放的工作 · 报告错误

变量(Variables)扩展允许您在一个页面定义变量,然后在同样的页面或包括的模板变化它的值,可能是通过表达式在旧值中赋予的值等。

它很像模板,只是占用内存非常少并且作用只能在1个页面,所以你可以在1个页面使用很多个变量而不需要用大数量的模板在这个wiki缓慢下来。结合解析器函数组件以达到最好的结果。

This extension will not be enabled for wikis run by the Wikimedia Foundation (WMF).[1][2][3][4] 參見替代選項

给变量赋值

#vardefine

  • {{#vardefine:变量名称|指定值}}

将值specifiedvalue分配给(已存在或由此引入的)变量variablename

  • 示例:{{#vardefine:iconwidth|25}}使iconwidth=25

#vardefineecho

  • {{#vardefineecho:变量名称|指定值}}

#vardefine完全相同,但会打印受影响的值。

  • 例如: making iconwidth = <code>{{#vardefineecho:iconwidth|25}}</code>

检索变量的值

#var

变量variablename的值由。产生

  • {{#var:变量名称}}

如果未定义,会产生空字符串,不会抛出错误。

变量未定义或为空时可以定义值:

  • {{#var:变量名称 | 默认值 }}

相当于:

  • {{#if: {{#var:变量名称}} | {{#var:变量名称 }} | 默认值 }}

但这样更加简短。在版本2.0之前,默认值会自动展开。从版本2.0开始,默认值只会在真正用到时展开。

值可用于解析器函数。

#varexists

  • {{#varexists:变量名称 }} 如果变量已经定义返回1。如果没有定义则返回空。

它支持第二个和第三个参数来替换这些值。

  • {{#varexists:变量名称 | if值 | else-value }}

这相当于:

  • {{#if: {{#varexists: 变量名称 }} | if值 | else-value }}

但它更短,更好地安排。在2.5版之前,两者都是扩展的。从2.5以后的if和else值只有在实际输入案例时才会展开。

#var_final

变量2.0中引入了实验新功能。此函数将输出变量在页面渲染结束时具有的最后一个最后一个值。当然,在解析器遍历整个wiki标记之后将插入该值,因此该函数不能用于其他函数,期望正在使用正确的值。例:

  • {{#var_final:变量名称 | 默认值}}

如果变量在最终页面呈现阶段不存在或者其值为空字符串,则将使用默认值。默认值将在使用函数的位置展开,因此即使不需要参数,也会扩展参数。

例子

解析器函数扩展必须已安装以使用#expr

计算x = 2*a + b

  • {{#vardefine:x|{{#expr:2*{{#var:a}}+{{#var:b}}}}}}

加入一个至“n”:

  • {{#vardefine:n|{{#expr:{{#var:n}}+1}}}}

安装

  • 下载文件,并将其放置在您extensions/文件夹中的Variables目录内。
  • 将下列代码放置在您的LocalSettings.php的底部:
    wfLoadExtension( 'Variables' );
    
  • Yes 完成 – 在您的wiki上导航至Special:Version,以验证扩展已成功安装。

致使用MediaWiki 1.30或更早版本的用户:

上面的说明介绍的是安装此扩展的新方法,它使用wfLoadExtension()。 如果您需要在早期版本(MediaWiki 1.30和更早版本)中安装此扩展,而不是wfLoadExtension( 'Variables' );,您需要使用:

require_once "$IP/extensions/Variables/Variables.php";

兼容性

下面列出了最近MediaWiki版本的Variables扩展的推荐版本。较旧版本的扩展可能也可以正常工作,但未针对新的MediaWiki版本进行测试。

替代選項

由于这个扩展不被维基媒体基金会(WMF)启用[1][2][3][4],以下是一些替代选择:

  • If you use Variables as cache for expensive operations, you can transform the section where you need them into a template and pass the required information as template parameters instead. This will work until you reach the expansion depth limit.
  • If you use Variables to do more complex template operations than possible with simple ParserFunctions, you can use Scribunto's Lua functionality instead. Note that this does not add support for global Variables. However, Extension:VariablesLua adds a Scribunto interface for the Variables store.
  • Don't use variables, instead duplicate the information you need as a variable. If that information is aquired by an expensive template call, performance may suffer. This will work until you reach the node count limit.

参见

参考