解析器函数扩展
Appearance
此頁面已过时。 |
“解析器函数”是一种類模板式的构思,它會根据一个以上的未命名参数返回一个值,该参数与函数名之间以冒号[:]分隔。 也可能是有更多的参数;就像普通模板一样,这些额外的参数每个前面都由一个“管道”符号[|]引导。 如果函数名以井号字符[#]开头(这可以避免与命名空间或跨维基的前缀相牴觸),这个字符可能會也可能不會被视为是名称的一部份。 如果它被视为名称的一部份,其语法的形式如下:
- {{functionname: argument 1 | argument 2 | argument 3...}}
若呼叫者提供給解析函數的是沒有參數,則其形式單純為{{functionname:}};或是,當需使用井號符號(是正常的情況)時,則形式為 {{#functionname:}}。若是末尾未提供冒號,則解析器將無法識別functionname。
參數不能直接包含有"|"或"}}",除非作為模板呼叫、解析器函式呼叫、變數、連結、或圖片...的程式碼的一部份,但參數卻可使用模板(例如m:Template:!)或解析器函式來任意包含這些元素。
程式碼可指定函式名稱是否區分大小寫。
參數彼此之間的分隔是使用"|"符號、而與函數名稱之間的分隔則是使用第一個":"。這些片段的展開機制是遵循標準規範,如同在Special:ExpandTemplates的情形一樣(順帶一提,若您正在學習相關知識,此處是絕佳的實驗場地),其運作方式不受解析器函數本身的控制。
然而,其餘所有的設定皆可針對每個解析器函數個別調整,包括:
- 參數是否僅是一個值,或以「參數名稱」=「參數值」等形式,或其他任何形式
- 若適用,參數名稱是否區分大小寫
由解析器函式擴充功能所規定的語法
鑒於上述情況,製作一個擴充功能以確保參數中所使用的語法「不會」包含管道符號"|"或是雙花括号(更具體地說,是閉合的雙花括号 "}}")是有好處的。 儘管如此,管道符號本應是表示選擇或聯合等概念的合適符號(請參見,例如 [1])。 允許此類的程式碼是無害的,只要同時允許替代的程式碼,例如將"\"用於"|"。
函數列表
| 扩展 | 函數 | MediaWiki版本 |
|---|---|---|
| built-in | lc | 1.7+ |
| built-in | uc | 1.7+ |
| built-in | lcfirst | 1.7+ |
| built-in | ucfirst | 1.7+ |
| built-in | urlencode | 1.7+ |
| built-in | anchorencode | 1.8+ |
| built-in | localurl | 1.7+ |
| built-in | fullurl | 1.7+ |
| built-in | #language | 1.7+ |
| built-in | #special | 1.9+ |
| built-in | #tag | 1.12+ |
| ParserFunctions (usage) | #expr | 1.19+ |
| ParserFunctions (usage) | #ifexpr | 1.19+ |
| ParserFunctions (usage) | #if | 1.19+ |
| ParserFunctions (usage) | #ifeq | 1.19+ |
| ParserFunctions (usage) | #ifexist | 1.19+ |
| ParserFunctions (usage) | #rel2abs | 1.19+ |
| ParserFunctions (usage) | #titleparts | 1.19+ |
| ParserFunctions (usage) | #switch | 1.19+ |
| ParserFunctions (usage) | #time | 1.19+ |
| AddScriptCss | #addscript | Archived |
| 数组 | #arraydefine | 1.23+ |
| 数组 | #arraydiff | 1.23+ |
| 数组 | #arrayindex | 1.23+ |
| 数组 | #arrayintersect | 1.23+ |
| 数组 | #arraymerge | 1.23+ |
| 数组 | #arrayprint | 1.23+ |
| 数组 | #arrayreset | 1.23+ |
| 数组 | #arraysearch | 1.23+ |
| 数组 | #arraysearcharray | 1.23+ |
| 数组 | #arraysize | 1.23+ |
| 数组 | #arrayslice | 1.23+ |
| 数组 | #arraysort | 1.23+ |
| 数组 | #arraytohash | 1.23+ |
| 数组 | #arrayunion | 1.23+ |
| 数组 | #arrayunique | 1.23+ |
| 数组 | #hashtoarray | 1.23+ |
| Attachments | #attach | 1.31+ |
| Attachments | #exturl | 1.31+ |
| Babel(巴别) | #babel | 1.30+ |
| CSS | #css | 1.25+ |
| Coordinate | #coordinate | Archived |
| Counter | #+ | 1.15+ |
| Data | #data | Archived |
| Data | #sort | Archived |
| DynamicFunctions | #arg | Archived |
| DynamicFunctions | #ip | Archived |
| DynamicFunctions | #rand | Archived |
| DynamicFunctions | #skin | Archived |
| DynamicPageList (第三方) | #dpl | Archived |
| DynamicPageList3 | #dpl | 1.39+ |
| ExpandAfter | #expandafter (deprecated, see: #tag) | Archived |
| ForeachFunction | #foreachx | Archived |
| ForeachFunction | #foreachy | Archived |
| HasCategory | #ifhascat | Archived |
| HideNamespace | #hidens | Archived |
| HideNamespace | #unhidens | Archived |
| ImageLink | #img (old: #imagelink, deprecated) | Archived |
| Infobox Data Capture | #dataentry | Archived |
| Infobox Data Capture | #listsplit | Archived |
| InterWikiLinkManager | #iwl | Archived |
| KeyValue | #keyvalue | Archived |
| Labeled Section Transclusion(标记式章节嵌入) | #lst | 1.25+ |
| Labeled Section Transclusion(标记式章节嵌入) | #lstx | 1.25+ |
| Labeled Section Transclusion(标记式章节嵌入) | #lsth | 1.25+ |
| LoopFunctions | #for | 1.23+ |
| LoopFunctions | #foreach | 1.25+ |
| Loops(循环) | #while | 1.25+ |
| Loops(循环) | #dowhile | 1.25+ |
| Loops(循环) | #forargs | 1.25+ |
| Loops(循环) | #fornumargs | 1.25+ |
| Loops(循环) | #loop | 1.25+ |
| Maps(地图) | #geocode | 1.27+ |
| Maps(地图) | #display_map | 1.27+ |
| Maps(地图) | #display_point | 1.27+ |
| Maps(地图) | #coordinates | 1.27+ |
| Maps(地图) | #distance | 1.27+ |
| MediaFunctions | #media.. | 1.23+ |
| PageAfterAndBefore | #pagebefore | Archived |
| PageAfterAndBefore | #pageafter | Archived |
| PageAfterAndBefore | #firstpage | Archived |
| PageAfterAndBefore | #lastpage | Archived |
| PageFunctions | #pagetitle | Archived |
| PageFunctions | #pagesubtitle | Archived |
| PageFunctions | #pageexists | Archived |
| PageFunctions | #varset | Archived |
| PageFunctions | #varget | Archived |
| PageFunctions | #varcapset | Archived |
| PageFunctions | #cshow | Archived |
| PageFunctions | #varaset | Archived |
| PageFunctions | #varaget | Archived |
| ParserFunctions (extended) | #expr (extended) | Archived |
| ParserFunctions (extended) | #ifexpr (extended) | Archived |
| ParserFunctions (extended) | #min | Archived |
| ParserFunctions (extended) | #max | Archived |
| ParserFunctions (extended) | #if | Archived |
| ParserFunctions (extended) | #ifeq | Archived |
| ParserFunctions (extended) | #ifexist | Archived |
| ParserFunctions (extended) | #rel2abs | Archived |
| ParserFunctions (extended) | #switch | Archived |
| ParserFunctions (extended) | #time | Archived |
| Pipe Escape | #! | 1.23+ |
| QPoll | #qpuserchoice | Archived |
| RegexTools | #regex | Archived |
| RegexTools | #regex_vars | Archived |
| Scribunto | #invoke | |
| SecureProperties | #pg | Archived |
| SecureProperties | #ps | Archived |
| SecureProperties | #pf | Archived |
| SecureProperties | #gg | Archived |
| SecureProperties | #gs | Archived |
| Semantic MediaWiki(语义 MediaWiki) | #ask | 1.27+ |
| Semantic MediaWiki(语义 MediaWiki) | #concept | 1.27+ |
| Semantic MediaWiki(语义 MediaWiki) | #info | 1.27+ |
| Semantic MediaWiki(语义 MediaWiki) | #show | 1.27+ |
| Semantic MediaWiki(语义 MediaWiki) | #set | 1.27+ |
| StringFunctions | #len | 1.7+ |
| StringFunctions | #pos | 1.7+ |
| StringFunctions | #rpos | 1.7+ |
| StringFunctions | #sub | 1.7+ |
| StringFunctions | #pad | 1.7+ |
| StringFunctions | #replace | 1.7+ |
| StringFunctions | #explode | 1.7+ |
| StringFunctions | #urlencode | 1.7+ |
| StringFunctions | #urldecode | 1.7+ |
| TreeAndMenu | #tree | 1.23+ |
| TreeAndMenu | #menu | 1.23+ |
| Variables(变量) | #vardefine | 1.29+ |
| Variables(变量) | #vardefineecho | 1.29+ |
| Variables(变量) | #var | 1.29+ |
| Variables(变量) | #varexists | 1.29+ |
| Variables(变量) | #var_final | 1.29+ |
| Wikibase Client(Wikibase客户端) | #property | |
| Wikibase Client(Wikibase客户端) | #statements |
參見
- Help:魔术字
- Category:解析器函数扩展
- Writing parser functions (software development)
- Parser functions for Wikibase (the extensions that enables Wikidata): d:Wikidata:How to use data on Wikimedia projects