全球专业中文经管百科,由121,994位网友共同编写而成,共计435,843个条目

Help:模板擴展語法

出自 MBA智库百科(https://wiki.mbalib.com/)

模板擴展語法是一個MediaWiki擴展,包含多個解析函數解釋器。本擴展的典型語法是:

{{#函數名: 參數1 | 參數2 | 參數 3 …}}

目前有預定義的函數:exprififeqifexprswitchrand暫時被廢除)。

各函數名都對大小寫不敏感。

語句中的空格、換行等空白字元將被省略。

目錄

函數

expr

expr函數,計算數學表達式。語法為:

{{ #expr: 表達式 }}

表達式支持的運算符有:

運算符 名稱 優先順序 元數 結合性 樣例
+ 9 1 {{#expr: + 7}} = 7
- 9 1 {{#expr: - 7}} = -7
not 邏輯非 9 1 {{#expr: not 7}} = 0
* 8 2 {{#expr: 30 * 7}} = 210
/ 8 2 {{#expr: 30 / 7}} = 4.2857142857143
div 8 2 {{#expr: 30 div 7}} = 4.2857142857143
mod 8 2 {{#expr: 30 mod 7}} = 2
+ 6 2 {{#expr: 30 + 7}} = 37
- 6 2 {{#expr: 30 - 7}} = 23
round 舍入 5 2 {{#expr: 30 / 7 round 7}} = 4.2857143
= 等於 4 2 {{#expr: 30 = 7}} = 0
< 小於 4 2 {{#expr: 30 < 7}} = 0
> 大於 4 2 {{#expr: 30 > 7}} = 1
<= 小於等於 4 2 {{#expr: 30 <= 7}} = 0
>= 大於等於 4 2 {{#expr: 30 >= 7}} = 1
<> 不等於 4 2 {{#expr: 30 <> 7}} = 1
 != 不等於 4 2 {{#expr: 30 != 7}} = 1
and 邏輯與 3 2 {{#expr: 30 and 7}} = 1
or 邏輯或 2 2 {{#expr: 30 or 7}} = 1

round運算對運算數正負,位數正負都有不同的表現,參見下例。

  • {{#expr: 300/7 round 1}} = 42.9
  • {{#expr: 300/7 round -1}} = 40
  • {{#expr: -300/7 round 1}} = -42.9

邏輯運算符把假映射為0,把真映射為非0,且返回值只有0或1。

同一表達式中先計算高優先順序運算。括弧優先順序高於一切。

if

if函數是一個if-then-else結構。語法是:

{{#if: <判斷字元串> | <then字元串> [| <else字元串> ]}}

若判斷字元串為非空字元串(忽略前導或尾碼空格),則函數返回then字元串,否則函數返回else字元串。else字元可被省略而不會造成錯誤,但函數在判斷字元串為空時便會返回空字元串。

ifeq

ifeq比較兩個字元串,返回比較結果。語法為:

{{#ifeq: <字元串1> | <字元串2> [| <相等時返回的字元串> [| <不相等時返回的字元串> ]]}}

註意:兩個空字元串是相等的。

ifexist

ifexist根據指定名稱的頁面是否存在,返回兩個參數中的一個。用法: <不存在文字>; 示例:

  • {{#ifexist:test|有test頁面|無test頁面}} 得到 有test頁面
  • {{#ifexist:user:sex|該用戶存在|該用戶不存在}} 得到 該用戶不存在
  • {{#ifexist:Calculation|Yes|Oops}} 得到 Oops

ifexpr

ifexpr計算數學表達式,並根據計算結果返回字元串。

{{ #ifexpr: <表達式> | <then字元串> [| <else字元串>] }}

若表達式經計算不為0,則函數返回then字元串,否則函數返回else字元串。表達式語法與expr相同。

switch

switch將一個值與多個預設值比較,若有匹配時則返回指定字元串,即雙射。語法是:

{{ #switch: <比較值> | <預設值1> [= <結果1>] | <預設值2> [= <結果2>] | ... | <預設值n> [= <結果n>] | [#default = ]<預設結果> }}

switch將從左往右逐一嘗試,直到出現匹配。函數將返回第一個匹配值對應的結果,而忽略後面的匹配值。如果沒有匹配,函數將返回預設結果。如果預設結果沒有設置,函數將返回空串。

註意:“預設結果”是最後一個沒有等號的預設值或“#default”預設值對應的結果;如果期望把一個包含“=”號的字元串作為預設結果,則必須採用“#default”預設值形式。例如: #default = <span style="color:red;">red</span>

switch也可用作滿射(多對一,避免重覆設置結果)。即某預設值後未設置結果,這樣如果該預設值與比較值匹配,則函數返回第一個有結果的預設值的結果。例如:

{{ #switch: <比較值> | <預設值1> | <預設值2> | <預設值3> = <結果3> | <預設結果> }}


如果比較值與預設值1或預設值2匹配,都將返回結果3。註意:“#default”後必須有“=”,但其他預設值可以使用“#default”的結果。

time

time是一個時間日期格式化函數,它的語法為:

{{ #time: format }}

或者

{{ #time: format | time }}

format參數是時間格式化設置,與php的date使用方法很相似。 PHP's date

以下格式碼在php中也具有相同的含義。重大差異在於PHP的國際化處理 (即語言和locale的不同處理) 在ParserFunctions中將視為錯誤並被報告出來。所有數字格式化碼按本地語言返加格式化後的數字,可以使用xn指定的編碼來覆蓋它。
編碼 描述 範例輸出
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


所有非格式化編碼的字元將直接輸出。有兩個轉義字元可以輸出原始內容。

  • 兩個引號中的字元將直接輸出(引號本身去掉),沒有對應的引號將直接輸出:
    • {{ #time: "本月是" m}} → 本月是05
    • {{ #time:i's"}} → 20'11"
  • 支持PHP的date()中反斜杠。如 \H 輸出一個原始字元 H, \" 輸出一個原始字元 "。


time參數的格式與PHP的strtotime()函數的參數格式相同。支持相對時間的計算。如“+10 hours”。更多信息可以查看the GNU tar manual

如果時間參數沒有指定,則預設為所在的文章轉化成HTML文檔時的時間。註意,由於緩存,文章上觀看到的時間和實際可能有近一周時間的出入。如果有必要可以手工更新,對文章不做任何更改進行保存就可以刷新緩存(“空編輯”)。

Examples

  • {{#time:Y年M月j日 |-14 days}} 得到14天前的日期: 2024年4月12日
  • {{#time:H:i|+8 hours}} 得到當前的UTC+8時間: 23:56


subst

應用subst:到模板擴展,必須在subst:和#之間不能有空格,才可以正常工作。

表格

模板擴展函數中由於使用了“|”管道符做參數分隔符,所以不能包括表格所需要的“|”符。要想在輸出中包含表格,可以通過以下兩個辦法達到:

  1. 通過嵌套模板來達到隱藏“|”的目的。
  2. 使用HTML語法。

參見

以上内容根据网友推荐自动排序生成

闽公网安备 35020302032707号