首頁
查看“Help:模板擴展語法”的源代码
←
Help:模板擴展語法
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
模板扩展语法是一个MediaWiki扩展,包含多个解析函数解释器。本扩展的典型语法是: :<nowiki>{{</nowiki>#函数名: 参数1 | 参数2 | 参数 3 …}} 目前有预定义的函数:<tt>expr</tt>,<tt>if</tt>,<tt>ifeq</tt>,<tt>ifexpr</tt>,<tt>switch</tt>(<tt>rand</tt>暂时被废除)。 各函数名都对大小写不敏感。 语句中的空格、换行等空白字符将被省略。 == 函数 == === expr === <tt>expr</tt>函数,计算数学表达式。语法为: <nowiki>{{</nowiki> #expr: ''表达式'' }} 表达式支持的运算符有: {| class="prettytable" style="text-align: left;" ! 运算符 || 名称 || 优先级 || 元数 || 结合性 || 样例 |- | + || 正 || 9 || 1 || 右 || <nowiki>{{#expr: + 7}}</nowiki> = {{#expr: + 7}} |- | - || 负 || 9 || 1 || 右 || <nowiki>{{#expr: - 7}}</nowiki> = {{#expr: - 7}} |- | not || 逻辑非 || 9 || 1 || 右 || <nowiki>{{#expr: not 7}}</nowiki> = {{#expr: not 7}} |- | * || 乘 || 8 || 2 || 左 || <nowiki>{{#expr: 30 * 7}}</nowiki> = {{#expr: 30 * 7}} |- | / || 除 || 8 || 2 || 左 || <nowiki>{{#expr: 30 / 7}}</nowiki> = {{#expr: 30 / 7}} |- | div || 除 || 8 || 2 || 左 || <nowiki>{{#expr: 30 div 7}}</nowiki> = {{#expr: 30 div 7}} |- | mod || 模 || 8 || 2 || 左 || <nowiki>{{#expr: 30 mod 7}}</nowiki> = {{#expr: 30 mod 7}} |- | + || 加 || 6 || 2 || 左 || <nowiki>{{#expr: 30 + 7}}</nowiki> = {{#expr: 30 + 7}} |- | - || 减 || 6 || 2 || 左 || <nowiki>{{#expr: 30 - 7}}</nowiki> = {{#expr: 30 - 7}} |- | round || 舍入 || 5 || 2 || 左 || <nowiki>{{#expr: 30 / 7 round 7}}</nowiki> = {{#expr: 30 / 7 round 7}} |- | = || 等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 = 7}}</nowiki> = {{#expr: 30 = 7}} |- | < || 小于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 < 7}}</nowiki> = {{#expr: 30 < 7}} |- | > || 大于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 > 7}}</nowiki> = {{#expr: 30 > 7}} |- | <= || 小于等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 <= 7}}</nowiki> = {{#expr: 30 <= 7}} |- | >= || 大于等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 >= 7}}</nowiki> = {{#expr: 30 >= 7}} |- | <> || 不等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 <> 7}}</nowiki> = {{#expr: 30 <> 7}} |- | != || 不等于 || 4 || 2 || 左 || <nowiki>{{#expr: 30 != 7}}</nowiki> = {{#expr: 30 != 7}} |- | and || 逻辑与 || 3 || 2 || 左 || <nowiki>{{#expr: 30 and 7}}</nowiki> = {{#expr: 30 and 7}} |- | or || 逻辑或 || 2 || 2 || 左 || <nowiki>{{#expr: 30 or 7}}</nowiki> = {{#expr: 30 or 7}} |} round运算对运算数正负,位数正负都有不同的表现,参见下例。 *<nowiki>{{#expr: 300/7 round 1}}</nowiki> = {{#expr: 300/7 round 1}} *<nowiki>{{#expr: 300/7 round -1}}</nowiki> = {{#expr: 300/7 round -1}} *<nowiki>{{#expr: -300/7 round 1}}</nowiki> = {{#expr: -300/7 round 1}} 逻辑运算符把假映射为0,把真映射为非0,且返回值只有0或1。 同一表达式中先计算高优先级运算。括号优先级高于一切。 === if === <tt>if</tt>函数是一个if-then-else结构。语法是: <nowiki>{{</nowiki>#if: ''<判断字符串>'' | ''<then字符串>'' [| ''<else字符串>'' ]}} 若判断字符串为非空字符串(忽略前导或后缀空格),则函数返回then字符串,否则函数返回else字符串。else字符可被省略而不会造成错误,但函数在判断字符串为空时便会返回空字符串。 === ifeq === <tt>ifeq</tt>比较两个字符串,返回比较结果。语法为: <nowiki>{{</nowiki>#ifeq: ''<字符串1>'' | ''<字符串2>'' [| ''<相等时返回的字符串>'' [| ''<不相等时返回的字符串>'' ]]}} 注意:两个空字符串是相等的。 === ifexist === ifexist根据指定名称的页面是否存在,返回两个参数中的一个。用法: {{#ifexist: ''<待测页面标题>'' | ''<存在文字>'' | ''<不存在文字>'' }}; 示例: *<nowiki>{{</nowiki>#ifexist:test|有test页面|无test页面}} 得到 {{#ifexist:test|有test页面|无test页面}} *<nowiki>{{</nowiki>#ifexist:user:sex|该用户存在|该用户不存在}} 得到 {{#ifexist:user:sex|该用户存在|该用户不存在}} *<nowiki>{{</nowiki>#ifexist:Calculation|Yes|Oops}} 得到 {{#ifexist:Calculation|Yes|Oops}} === ifexpr === <tt>ifexpr</tt>计算数学表达式,并根据计算结果返回字符串。 <nowiki>{{</nowiki> #ifexpr: ''<表达式>'' | ''<then字符串>'' [| ''<else字符串>''] }} 若表达式经计算不为0,则函数返回then字符串,否则函数返回else字符串。表达式语法与<tt>expr<tt>相同。 === switch === <tt>switch</tt>将一个值与多个预设值比较,若有匹配时则返回指定字符串,即双射。语法是: <nowiki>{{</nowiki> #switch: ''<比较值>'' | ''<预设值1>'' [= ''<结果1>''] | ''<预设值2>'' [= ''<结果2>''] | ''...'' | ''<预设值n>'' [= ''<结果n>''] | [#default = ]''<缺省结果>'' }} <tt>switch</tt>将从左往右逐一尝试,直到出现匹配。函数将返回第一个匹配值对应的结果,而忽略后面的匹配值。如果没有匹配,函数将返回缺省结果。如果缺省结果没有设置,函数将返回空串。 注意:“缺省结果”是'''最后一个没有等号'''的预设值或“#default”预设值对应的结果;如果期望把一个包含“=”号的字符串作为缺省结果,则必须采用“#default”预设值形式。例如: <nowiki>#default = <span style</nowiki><span style="color:red;">=</span><nowiki>"color:red;">red</span></nowiki> <tt>switch</tt>也可用作满射(多对一,避免重复设置结果)。即某预设值后未设置结果,这样如果该预设值与比较值匹配,则函数返回'''第一个有结果的'''预设值的结果。例如: <nowiki> {{</nowiki> #switch: ''<比较值>'' | ''<预设值1>'' | ''<预设值2>'' | ''<预设值3>'' = ''<结果3>'' | ''<缺省结果>'' }} 如果比较值与预设值1或预设值2匹配,都将返回结果3。注意:“#default”后必须有“=”,但其他预设值可以使用“#default”的结果。 ===time=== <tt>time</tt>是一个时间日期格式化函数,它的语法为: <nowiki>{{</nowiki> #time: ''format'' }} 或者 <nowiki>{{</nowiki> #time: ''format'' | ''time'' }} ''format''参数是时间格式化设置,与php的date使用方法很相似。 [http://php.net/date PHP's date] :以下格式码在php中也具有相同的含义。重大差异在于PHP的国际化处理 (即语言和locale的不同处理) 在ParserFunctions中将视为错误并被报告出来。所有数字格式化码按本地语言返加格式化后的数字,可以使用xn指定的编码来覆盖它。 {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" ! 编码 ! 描述 ! 范例输出 |-------------- | d | 所在月份的第几天,有前导零 | 04 |-------------- | D | 简写的星期。 | Mon |-------------- | j | 所在月份的第几天,没有前导零 | 3 |-------------- | l | 完整的星期。 | Monday |-------------- | F | 完整的月份 | January |-------------- | m | 数字表示的月份,有前导零 | 01 到 12 |-------------- | M | 简写的月份。 | Jan |-------------- | n | 数字表示的月份,没有前导零 | 1 to 12 |-------------- | Y | 4位数的年份 | 2006 |-------------- | y | 2位数的年份 | 06 |-------------- | H | 小时,有前导零 | 00 to 23 |-------------- | i | 分钟,有前导零 | 00 to 59 |-------------- | s | 秒,有前导零 | 00 to 59 |} <!--The following format codes are extensions to the PHP syntax: {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" ! Code ! Description |-------------- | xn | Format the next numeric code as a raw ASCII number. For example, in the Hindi language, {{ #time:H, xnH}} produces ०६, 06. |-------------- | xr | Format the next numeric code as a roman numeral. |-------------- | xg | Output the genitive form of the month name, for languages which make such a distinction between genitive and nominative. |-------------- | xx | A literal "x" |} More format codes may be added in the future, as demanded by the users of this extension. This may come in the form of either a more complete implementation of PHP's format codes, or additional "x" codes. --> 所有非格式化编码的字符将直接输出。有两个转义字符可以输出原始内容。 *两个引号中的字符将直接输出(引号本身去掉),没有对应的引号将直接输出: ** <nowiki>{{ #time: "本月是" m}}</nowiki> → 本月是05 ** <nowiki>{{ #time:i's"}}</nowiki> → 20'11" * 支持PHP的date()中反斜杠。如 \H 输出一个原始字符 H, \" 输出一个原始字符 "。 ''time''参数的格式与PHP的strtotime()函数的参数格式相同。支持相对时间的计算。如“+10 hours”。更多信息可以查看[http://www.gnu.org/software/tar/manual/html_node/tar_109.html the GNU tar manual]。 如果时间参数没有指定,则默认为所在的文章转化成HTML文档时的时间。注意,由于缓存,文章上观看到的时间和实际可能有近一周时间的出入。如果有必要可以手工更新,对文章不做任何更改进行保存就可以刷新缓存(“空编辑”)。 ====Examples==== *<nowiki>{{#time:Y年M月j日 |-14 days}}</nowiki> 得到14天前的日期: {{#time:Y年F月j日|-14 days}} *<nowiki>{{#time:H:i|+8 hours}}</nowiki> 得到当前的UTC+8时间: {{#time:H:i|+8 hours}} == subst == 应用subst:到模板扩展,必须在subst:和#之间不能有空格,才可以正常工作。 == 表格 == 模板扩展函数中由于使用了“|”管道符做参数分隔符,所以不能包括表格所需要的“|”符。要想在输出中包含表格,可以通过以下两个办法达到: #通过嵌套模板来达到隐藏“|”的目的。 #使用HTML语法。 == 参见 == *[[Help:模板|模板]] [[Category:帮助文档|MBKZYF]]
返回至
Help:模板擴展語法
。
导航菜单
个人工具
登录
命名空间
帮助页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息