User:Zes M Young/沙盒

来自滚动的天空Wiki
revenge

Walker ?
AWWWman!
So we back to Rolling Sky,try to find out all of the gems gems gems,gems gems gems gems,
You wanna all perfect,but there's something you cannot get get get,get get get get.
Jump up ,you can see the checkpoint there,
Look out,do not let the ball fall down.
Oh no it's you again,'Trying is now over,is over,is over.
Cause baby tonight,you can just play for 50 percent ,50 percent.
Cause baby tonight,Alan Walker wants to stop your perfect,your perfect !
Run,run,until it's done,done,
Until the balls are all fallen down.
Cause baby tonight,Alan Walker wants to stop your perfect,your perfect !
Just when you think you 'll win,there's a Walker underground,underground,on-on the ground.
You bit it very fast, but it still quickly grew up,up up up,up up and up.
Blew up,'Tryin' is over' now and
Fell down,there is no alive ball now,
But there's no 'giving up',
Get united not alone,not alone,not alone.
Cause baby tonight,you can only play for 50 percent ,50 percent.
Cause baby tonight,Alan Walker wants to stop your perfect,your perfect !
Run,run,until it's done,done,
Until the balls are fallen down.
Cause baby tonight,Alan Walker wants to stop your perfect,your perfect !
So bite bite like it's the last last bite
Of your life life show them your bite.
Cause baby tonight,Alan Walker wants to stop your perfect ,your perfect!

沙子

InfoboxImage

Navbox


data

#1{
	[1]=#2{
		['group']=#3{
			['content']='是不是没有这个group右边的东西会全部中对齐?'
		},
		['list']=#4{
			['content']=#5{
				[1]=#6{
					['group']=#7{
						['content']='foo'
					},
					['list']=#8{
						['content']='bar'
					}
				},
				['title']=#9{
					['content']='bar'
				}
			}
		}
	},
	[2]=#10{
		['group']=#11{
			['content']='Arc'
		},
		['list']=#12{
			['content']=#13{
				[1]=#14{
					['list']=#15{
						['content']='cytus'
					}
				},
				[2]=#16{
					['group']=#17{
						['content']='分组2-2'
					},
					['list']=#18{
						['content']=#19{
							[1]=#20{
								['group']=#21{
									['content']='分组2-2-1'
								},
								['list']=#22{
									['content']=#23{
										[1]=#24{
											['group']=#25{
												['content']='分组2-2-1-1'
											},
											['list']=#26{
												['content']=#27{
													[1]=#28{
														['group']=#29{
															['content']='分组2-2-1-1-1'
														},
														['list']=#30{
															['content']='列表2-2-1-1-1'
														}
													},
													['title']=#31{
														['content']='标题2-2-1-1'
													}
												}
											}
										},
										['title']=#32{
											['content']='标题2-1-1'
										}
									}
								}
							},
							['title']=#33{
								['content']='标题2-2'
							}
						}
					}
				},
				[5]=#34{
					['list']=#35{
						['content']=#36{
							[1]=#37{
								['list']=#38{
									['content']=#39{
										[1]=#40{
											['list']=#41{
												['content']=#42{
													[1]=#43{
														['group']=#44{
															['content']='分组2.5-1-1-1'
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				},
				['title']=#45{
					['content']='Phi'
				},
				['body']=#46{
					['style']='background:black;'
				}
			}
		}
	},
	[3]=#47{
		['group']=#48{
			['content']='Geometry Dash'
		},
		['list']=#49{
			['content']=#50{
				[1]=#51{
					['group']=#52{
						['content']='Foo'
					},
					['list']=#53{
						['content']='bar'
					}
				},
				['isChild']=true,
				['title']=#54{
					['content']='Rizline'
				}
			}
		}
	},
	[4]=#55{
		['group']=#56{
			['content']='我 包 我 自 己'
		},
		['list']=#57{
			['content']=#58{
				[1]=#59{
					['group']=#60{
						['content']='是不是没有这个group右边的东西会全部中对齐?'
					},
					['list']=#61{
						['content']=#62{
							[1]=#63{
								['group']=#64{
									['content']='foo'
								},
								['list']=#65{
									['content']='bar'
								}
							},
							['title']=#66{
								['content']='bar'
							}
						}
					}
				},
				[2]=#67{
					['group']=#68{
						['content']='Arc'
					},
					['list']=#69{
						['content']=#70{
							[1]=#71{
								['list']=#72{
									['content']='cytus'
								}
							},
							[2]=#73{
								['group']=#74{
									['content']='分组2-2'
								},
								['list']=#75{
									['content']=#76{
										[1]=#77{
											['group']=#78{
												['content']='分组2-2-1'
											},
											['list']=#79{
												['content']=#80{
													[1]=#81{
														['group']=#82{
															['content']='分组2-2-1-1'
														},
														['list']=#83{
															['content']=#84{
																[1]=#85{
																	['group']=#86{
																		['content']='分组2-2-1-1-1'
																	},
																	['list']=#87{
																		['content']='列表2-2-1-1-1'
																	}
																},
																['title']=#88{
																	['content']='标题2-2-1-1'
																}
															}
														}
													},
													['title']=#89{
														['content']='标题2-1-1'
													}
												}
											}
										},
										['title']=#90{
											['content']='标题2-2'
										}
									}
								}
							},
							[5]=#91{
								['list']=#92{
									['content']=#93{
										[1]=#94{
											['list']=#95{
												['content']=#96{
													[1]=#97{
														['list']=#98{
															['content']=#99{
																[1]=#100{
																	['group']=#101{
																		['content']='分组2.5-1-1-1'
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							},
							['title']=#102{
								['content']='Phi'
							},
							['body']=#103{
								['style']='background:black;'
							}
						}
					}
				},
				[3]=#104{
					['group']=#105{
						['content']='Geometry Dash'
					},
					['list']=#106{
						['content']=#107{
							[1]=#108{
								['group']=#109{
									['content']='Foo'
								},
								['list']=#110{
									['content']='bar'
								}
							},
							['isChild']=true,
							['title']=#111{
								['content']='Rizline'
							}
						}
					}
				},
				[1.2]=#112{
					['list']=#113{
						['content']=#114{
							[1]=#115{
								['group']=#116{
									['content']='确实'
								},
								['list']=#117{
									['content']='雀食'
								}
							}
						}
					}
				},
				[2.5]=#118{
					['group']=#119{
						['content']='上面的子导航框是通过再检测实现的'
					},
					['list']=#120{
						['content']=#121{
							[1]=#122{
								['group']=#123{
									['content']='分组2.5-1'
								},
								['list']=#124{
									['content']=#125{
										[1]=#126{
											['group']=#127{
												['content']='分组2.5-1-1'
											},
											['list']=#128{
												['content']=#129{
													[1]=#130{
														['list']=#131{
															['content']='奇怪,上面的子框呢'
														}
													},
													['title']=#132{
														['content']='标题2.5-1-1'
													}
												}
											}
										},
										['title']=#133{
											['content']='标题2.5-1'
										}
									}
								}
							},
							['title']=#134{
								['content']='这里是直接使用横杠'
							}
						}
					}
				},
				['title']=#135{
					['content']='我 自 己'
				},
				['isChild']=true,
				[1.5]=#136{
					['list']=#137{
						['content']='插入的一行'
					}
				},
				['name']='模块:navbox'
			}
		}
	},
	[1.2]=#138{
		['list']=#139{
			['content']=#140{
				[1]=#141{
					['group']=#142{
						['content']='确实'
					},
					['list']=#143{
						['content']='雀食'
					}
				}
			}
		}
	},
	[2.5]=#144{
		['group']=#145{
			['content']='上面的子导航框是通过再检测实现的'
		},
		['list']=#146{
			['content']=#147{
				[1]=#148{
					['group']=#149{
						['content']='分组2.5-1'
					},
					['list']=#150{
						['content']=#151{
							[1]=#152{
								['group']=#153{
									['content']='分组2.5-1-1'
								},
								['list']=#154{
									['content']=#155{
										[1]=#156{
											['list']=#157{
												['content']='奇怪,上面的子框呢'
											}
										},
										['title']=#158{
											['content']='标题2.5-1-1'
										}
									}
								}
							},
							['title']=#159{
								['content']='标题2.5-1'
							}
						}
					}
				},
				['title']=#160{
					['content']='这里是直接使用横杠'
				}
			}
		}
	},
	['title']=#161{
		['content']='foo'
	},
	[1.5]=#162{
		['list']=#163{
			['content']='插入的一行'
		}
	},
	['isChild']=true,
	['name']='模块:navbox'
}



薛定谔
名称
薛定谔判定
--
-- This module will implement {{Navbox}}
-- 这是该模板的更新测试版本。
--
 
local p = {}
 
local navbar = require('Module:Navbar')._navbar
 
local trim = mw.text.trim

local function addNewline(s)
	-- 参数内容以这些字符开头时,添加一个换行符,
	-- 这是为了成功形成其格式。
    if s:match('^[*:;#]') or s:match('^{|') then
        return '\n' .. s ..'\n'
    else
        return s
    end
end

local index = require "module:others".index
local newindex = require "module:others".newindex

-- 为便于维护,采用面向对象。

function p.new(paras)
	-- 创建一个新的navbox对象。
	-- 创建时,其对应的html对象会被自动创建,也可以在参数中手动创建。
	-- 创建一个子框表时,会给它设置好根框表。
	local obj = {}
	local paras = paras or {}
	obj.rootself = paras.rootself or obj
	obj.data = paras.data or {}
	obj.args = paras.args or {}
	obj.level = paras.level or 0 -- 对象的级别,根框表为0,子框表为1
	obj.isChild = paras.isChild -- 默认为nil
	obj.root = paras.root -- 通常为nil,如有需要会在渲染时准备好
	return setmetatable(obj,{
		__index=p
	})
end

function p:renderRow(groupArgs, listArgs)
	-- 给定一个列的标题和文本,渲染这个列。
	local listContent = listArgs.content
	if not listContent then return end
	local listStyle = listArgs.style
	local listClass = listArgs.class
	local groupContent = groupArgs.content
	local groupStyle = groupArgs.style
	local groupClass = groupArgs.class
	local data = self.data
	-- 根框表的数据。
	local rootdata = self.rootself.data
	
	-- 对于子框表,其list的奇偶性存储在根框表中,而非子框表本身。
	local isEven = self.rootself.isEven
	
	local root = self.root
	local row = root:tag 'tr'
		:addClass 'newstyle_navbox-row'
	
	if groupContent then
		local group = row:tag 'th'
			:addClass 'newstyle_navbox-group'
			:wikitext(addNewline(groupContent))
			-- groupclass、groupstyle等不影响其子框表的group。
			:addClass(index(data,'group','class')) -- 共同类,即args中的groupclass
			:addClass(groupClass) -- 单独类,比如group1class
			:cssText(index(data,'group','style')) -- 共同样式,比如groupstyle
			:cssText(groupStyle) -- 单独样式,比如group1style
	end
	
	
	local list = row:tag 'td'
		:addClass 'newstyle_navbox-list'
	
	if not groupContent then
		list
			:attr('colspan','2')
			:addClass 'newstyle_navbox-list-without-group'
	end
	
	if listArgs.isChild then --强制子框
		list:addClass 'newstyle_navbox-list-with-subgroup'
	end
	
	if type(listContent) == 'string' then
		-- addNewline函数在前文中已定义
		list:wikitext(addNewline(listContent))
		-- listclass、liststyle等会影响其子框表的list。
			-- 且如果一个list的内容是一个子框表,
			-- 则这个list不受listclass、liststyle的影响。
			:addClass(index(rootdata,'list','class'))
			:cssText(index(rootdata,'list','style'))
		self.rootself.isEven = not isEven -- 交换奇偶性
		if isEven then
			list
				:addClass 'newstyle_navbox-even'
				:addClass(index(rootdata,'even','class'))
				:cssText(index(rootdata,'even','style'))
		else
			list
				:addClass 'newstyle_navbox-odd'
				:addClass(index(rootdata,'odd','class'))
				:cssText(index(rootdata,'odd','style'))
		end
	elseif type(listContent) == 'table' then
		local subElement = list
			:addClass 'newstyle_navbox-list-with-subgroup'
			:tag 'table'
			:addClass 'newstyle_navbox newstyle_navbox-subgroup'
		local subObj = self.new{
			rootself = self,
			root = subElement,
			data = listContent,
			isChild = true,
			level = (self.level or 0) + 1
		}
		subObj:render()
	end
	
	list
		:addClass(listClass) -- 单独类,如list1class
		:cssText(listStyle) -- 单独样式,如list1style
	return row
end

function p:renderSingleRow(rowArgs)
	-- 渲染标题、上方栏或下方栏
	-- type可以是'title' 'above' 'below'
	local content = rowArgs.content
	if content then
		content = addNewline(content)
	else
		return
	end
	
	local class = rowArgs.class
	local style = rowArgs.style
	local rowtype = rowArgs.rowtype or 'unknown-rowtype'
	local root = self.root
	local level = rowArgs.level
	
	-- 适配title的navbar功能
	if rowtype == 'title' and level == 0 then
		local navbarObj = rowArgs.navbarObj or ''
		content = navbarObj .. content
		root:addClass 'newstyle_navbox-with-navbar'
	end
	
	local row = root:tag 'tr'
		:addClass 'newstyle_navbox-row'
		:tag (rowtype=='title' and 'th' or 'td')
		:attr('colspan','2')
		:addClass('newstyle_navbox-' .. rowtype)
		:addClass(class)
		:cssText(style)
		:wikitext(content)
	if rowtype=='above' or rowtype=='below' then
		row:addClass 'newstyle_navbox-abovebelow'
	end
	return row
end

local suffixes = {
	content = true,
	style = true,
	class = true,
	ischild = true,
	[''] = true
}

function p:checkItem(k,v,data)
	-- 对于参数的一个键值对,对其键进行检查。
	-- 符合特定条件的键会被以特定的方式“转录”到self:data中。
	-- “转录”过程中需要用到前面定义的newindex。
	data = data or self.data
	
	-- 首先检查一些固定的参数,检查成功即跳出函数。
	if k=='name' then
		data[k]=v
		return
	end
	if k==1 and v=='child' then
		data.isChild = true
	end
	
	-- 以下均只检查字符串键。
	if type(k)~='string' then return end
	
	-- 对下列这些前缀,检查其后缀(可以为空)。
	-- 比如title、abovestyle、belowclass之类的。
	for _, prefix in ipairs{'title','above','below',
				'group','list','body','even','odd'} do
		-- 检查通用属性
		local suffix=k:match('^' .. prefix .. '(%l*)$') -- 2021.6.14: +$
		-- 这里的suffix可以是空值,或者style、class,
		-- 其他的值也有效,但是不起作用。
		if suffix=='' then
			newindex(data,v,prefix,'content')
			break
		elseif suffix and suffixes[suffix] then
			-- 这里的suffix通常是style、class之类
			newindex(data,v,prefix,suffix)
			break
		else
			local suffix = k:match('^list(%l+[%d%l%-%.]*)')
			if suffix then
				newindex(data,{},'list')
				self:checkItem(suffix,v,data.list)
				return
			end
		end -- 如果没有suffix进入下一轮循环
	end
	
	-- 检查带有数字的变量。
	local prefix, key, suffix = k:match '^([a-z]+)([0-9%.%-]+)(%l*)$'
	--2021.6.14:floatable
	-- 对于group和list,以及其他的类型,采取不同的数据加工方式
	local isCell = (prefix=='group' or prefix=='list')
	-- 这里的prefix可以是group,list
	-- 这里的suffix可以是空白、class或style
	-- 这里的key可以是1、2、3或1-2、1-4这样的数字或多重数字。
	if not suffix or not suffixes[suffix] then
		key,suffix = k:match '^list([%d%.%-]+)(%l+[%l%d%-%.]*)$'
	end
	if not key then return end
	if suffix=='' then suffix='content' end
	
	-- 如果是匹配单个数字,比如list2style、group4class。
	local id=tonumber(key)
	if id then
		if not prefix then
			newindex(data,{},id,'list','content')
			self:checkItem(suffix,v,data[id].list.content)
		elseif isCell then
			newindex(data,v,id,prefix,suffix)
		else
			newindex(data,v,id,'list','content',prefix,suffix)
		end
		return
	end
	
	-- 如果是匹配双个数字(数字用连字符隔开,下同),
	-- 比如list2-3style、group2-3class。
	-- 应该可以直接匹配数值的,后续会继续优化。
	local id2
	id,id2 = key:match '^([0-9]+%.?[0-9]*)%-([0-9]+%.?[0-9]*)$'
	id,id2 = tonumber(id),tonumber(id2)
	if id and id2 then
		if not prefix then
			newindex(data,{},id,'list','content',id2,'list','content')
			self:checkItem(suffix,v,data[id].list.content[id2].list.content)
		elseif isCell then
			newindex(data,v,id,'list','content',id2,prefix,suffix)
		else
			newindex(data,v,id,'list','content',id2,'list','content',prefix,suffix)
		end
		return
	end
	
	-- 如果是匹配三个,比如list2-3-5style、group1-5-4class。
	local id3
	id,id2,id3 = key:match '^([0-9]+%.?[0-9]*)%-([0-9]+%.?[0-9]*)%-([0-9]+%.?[0-9]*)$'
	id,id2,id3 = tonumber(id),tonumber(id2),tonumber(id3)
	if id and id2 and id3 and isCell then
		newindex(data,v,id,'list','content',id2,'list','content',
			id3,prefix,suffix)
	end
end

function p:processArgs()
	-- 这里的args是frame中未经重写处理的args。
	for k,v in pairs(self.args) do
		v = trim(v)
		if v and v~='' then self:checkItem(k,v) end
	end
end

function p:render()
	-- 如果是通过args而非data创建的对象,
	-- 渲染之前务必记得processArgs,以将args“转录”到data中。
	-- 因为渲染过程只认data不认args。
	self.root = self.root
		or mw.html.create 'table'
			:addClass 'newstyle_navbox'
	local root = self.root
	local navbarObj
	local data = self.data or {}
	self.rootdata = self.rootself.data or {}
	self.isChild = self.isChild or data.isChild
	local isChild = self.isChild
	local level = self.level or 0
	if isChild then
		root:addClass 'newstyle_navbox-subgroup'
	end
	root
		:addClass('newstyle_navbox-level-'..(level or 'unknown'))
		:addClass(index(data,'body','class'))
		:cssText(index(data,'body','style'))
	if level==0 then
		root:addClass 'stikitable hlist'
		local name = data.name
		if name then
			navbarObj = navbar{
				mini = 1,
				title = name
			}
		end
	end
	
	-- 渲染标题。
	self:renderSingleRow{
		navbarObj = navbarObj,
		content = index(data,'title','content'),
		class = index(data,'title','class'),
		style = index(data,'title','style'),
		rowtype = 'title',
		level = level
	}
	
	-- 渲染上方框。
	self:renderSingleRow{
		content = index(data,'above','content'),
		class = index(data,'above','class'),
		style = index(data,'above','style'),
		rowtype = 'above',
		level = level
	}
	
	-- 渲染列表。这是重头戏。
	-- 考虑到空缺参数问题,所以要先将键做成序列进行排序,再进行迭代。
	local keys = {}
	for k,v in pairs(data) do
		-- keys是由data中所有整数键组成的序列
		if type(k)=='number' then
			table.insert(keys,k)
		end
	end
	table.sort(keys)
	for i,k in pairs(keys) do
		local v = data[k]
		-- 上述9行语句其实就相当于
		-- for k,v in pairs(data) do
		-- 但是考虑到断层参数的排序问题
		-- 所以先进行人工排序再迭代
		local groupContent = index(v,'group','content')
		local listContent = index(v,'list','content')
		local id = v.id or k -- 这个k其实没什么用
		local groupClass = index(v,'group','class')
		local groupStyle = index(v,'group','style')
		local listClass = index(v,'list','class')
		local listStyle = index(v,'list','style')
		local isChild = index(v,'list','ischild') --强制性添加subgroup类,为了适配传统用法
		
		self:renderRow({
			content=groupContent,
			class=groupClass,
			style=groupStyle,
			level=level
		},{
			content=listContent,
			class=listClass,
			style=listStyle,
			level=level,
			isChild=isChild
		})
	end
	
	-- 渲染下方框。
	self:renderSingleRow{
		content = index(data,'below','content'),
		class = index(data,'below','class'),
		style = index(data,'below','style'),
		rowtype = 'below'
	}
	return root
end

function p._navbox(args)
	-- 通常第三方模块可以不必这样使用
	-- 可以设置data然后再render
	local obj = p.new{args=args}
	obj:processArgs()
	local root = obj:render()
	return root
end

function p.direct(frame)
	-- 通过#invoke直接使用
    return p._navbox(frame.args)
end

function p.navbox(frame)
	-- 通过模板使用
	return p._navbox(frame:getParent().args)
end
 
return p


  • 第一项
  • 第二项
  • 等等
  • 第一项
  • 第二项
  • 等等
  • 第一项
  • 第二项


前面

  • 第一项
  • 第二项
后面


沙盒子页面

Cargo


脚本错误:没有“sandbox/Daily”这个模块。

变量


wikitext

维基语法(Wikitext)是一门标记语言。MediaWiki软件在加载页面是将Wikitext翻译为HTML,以显示在浏览器上。

详解

Wikitext无非就是这些语法:

初级

初级的语法无法再展开成更低级的语法,只能直接翻译为HTML。当然,wikitext也可以直接写HTML(考虑到安全问题,部分标签无法使用)。多数初级的语法在编辑器中皆可快速生成。请注意换行的问题,参见格式

另外,[[Category:分类]]仅将页面加入分类,不会显示分类。[[:Category:分类]]仅显示分类,不加入分类。使用[[/子页面]]链入当前页面的子页面(如果不想要斜杠可以在后面再加上斜杠,两个斜杠就会全部隐藏,对模板也同样适用),使用[[#子页面]]转到当前页面的锚点。一行仅有四个减号解析为一根横线(如下):


扩展标签

扩展标签与HTML标签相似,但在解析时数据会储存在别的地方。扩展标签也不可展开,但扩展标签作为模块参数传入会变化为复杂的代码,最后又会把处理后的内容放回。扩展标签是由扩展提供的,也有MediaWiki自带的。

扩展标签不可以被打断,而HTML可以。

实例1:

<syntaxhighligh<includeonly></includeonly>t lang="lua">local a = 3</syntaxhighlight>

<syntaxhighlight lang="lua">local a = 3</syntaxhighlight>

实例2:

<spa<includeonly></includeonly>n style=color:red>实例2</span>

实例2


本Wiki上有这些扩展标签:

nowiki
使维基文本不解析。
poem
维持文本的原有格式。
noinclude
将内容只加入模板,不嵌入。详见#模板
includeonly
将内容只嵌入,不加入模板本身。
onlyinclude
只嵌入这部分内容,不嵌入其它内容。再加入的<includeonly>和<noinclude>会被忽略。
syntaxhighlight
使用Python实现的语法高亮。可以高亮各种程序语言。原名为source,现已弃用。使用时需添加lang属性以确定语言。
templatestyles
模板样式。使用时用src="XX/style.css"确定页面(默认页面在模板命名空间,要调用其他命名空间的CSS应在前面加上冒号。是自我闭合标签,使用时必须闭合,不能像HTML自我闭合标签一样不写斜杠(比如<br />可以写成<br>)。
ref
生成一个注脚(参考文献)。name属性可以给注脚编号。可以是自我闭合标签,也可以不是。作为自我闭合标签时,name必填,以确定显示的注脚编号。就像[1]这样[1]
references
将从上面最近一个<references />位置到这个标签的所有注释内容显示在此标签位置。是自我闭合标签。就像这样:
  1. 1.0 1.1 注脚
math
生成数学公式。

此外,虽然<pre>是HTML标签,但被打断后也会失去原有的不解析效果。

状态开关

状态开关是属于魔术字的范畴,由两端的两对下划线和中间的大写字母(或汉字)组成。常用状态开关有这些(下划线已省略):

TOC/目录
强制指定目录显示位置。
NOTOC/无目录
强制不显示目录。
NOTC/不转换标题
强制不转换标题。
NOCC/不转换内容
强制不转换内容。
DISAMBIG/消歧义/消除歧义
将这个页面标记为一个消歧义页面。

……

高级语法

高级语法需要展开为低级语法才能翻译为HTML。另外,高级语法从模块中输出时也不会被解析。所有可展开的高级语法都用两对花括号包裹。

嵌入

嵌入是指将一个页面的内容在另一个页面显示。嵌入一般发生在模板,但它也可以发生在其他命名空间的页面。

假定我们有一个模板,名为Template:数数,内容为:

一二三四五

此时在任何页面使用

{{数数}}

输出内容将会是:一二三四五。

模板参数

有时我们不希望模板嵌入千篇一律的内容,这时就需要设置模板参数。模板参数使用{{{参数名|默认值}}}表示。不写默认值时,默认值为空;默认值和竖线(管道符)都不写,默认值为{{{参数名}}}

模板参数分为位次参数(或匿名参数)和具名参数。使用位次参数参数不需要输入参数名。

假定我们有一个模板,名为Template:又数数,内容为

一二{{{1|三四五}}}{{{arg|}}}六七
代码 输出
{{又数数}}
一二三四五六七
{{又数数|34}}

{{又数数|1=34}}
一二34六七
{{又数数|arg=和}}
一二三四五和六七

嵌入模板使用没有的参数不会造成影响。模板参数并不局限于模板,你可以把自己的用户子页当作模板来实验。

注意:把参数写成空不等于不写。嵌入主命名空间页面需要加冒号,如{{:山丘}}

有时我们不希望把部分要嵌入的内容显示在模板页面上,或者模板页面上需要显示一些不能嵌入的内容,这时我们就需要用上面的扩展标签。尤其是<noinclude>,几乎每个模板都有用到,以显示文档。一般来说模板尾部<noinclude>不需要手动关闭。

一大段模板代码<noinclude>{{文档}}

系统变量

注:在维基百科译为“变量”,这里使用的是萌娘百科的译法。

(待补充)

解析器函数

解析器函数和系统变量非常相似,不同的是所有解析器函数必须接受一个参数(这个参数有时可以留空,但冒号必打)。为了与模板区分,许多解析器函数开头会加上井号#。

解析器函数可以在模块中通过frame的:callParserFunction方法来调用。

解析器函数 代码 效果 备注
常用
{{#if:X|A|B}}
{{#if:|A|B}}
B 如果X为不为空输出A,否则输出B(如果有)。
{{#if:X|A|B}}
A
{{#ifeq:X|Y|A|B}}
{{#ifeq:X|Y|A|B}}
B 如果X==Y则输出A,否则输出B(如果有)。
{{#ifeq:X|X|A|B}}
A
{{#switch:X|...|#default=默认值}}
{{#switch:迷你关
|迷你关|迷你=迷你关卡
|奖励=奖励关卡
|#default=关卡
}}
迷你关卡 第一个参数给出一个值,在参数后面的内容中寻找这个值,找到后输出这个参数向后第一个等号后面的值。如果没找到,返回#default的值(#default=可以不写)。
扩展:CSS
{{#css:CSS}}
<span class="example">e.g.</span>
{{#css:
.example {
    color:red;
}
}}
e.g. 嵌入CSS代码。该解析器函数不可替换引用
扩展:Cargo见Help:Cargo(话说也没什么新手会搞Cargo)。
待补充