模板入门

来自istudylinux

模板是将一个事物的结构规律予以固定化、标准化的成果,它体现的是结构形式的标准化。[1]

PPT模板,Word模板,论文模板,简历模板。同理,Mediawiki的模板(Template)也是类似的功能。它们都是提供固有的内容形式,使用的时候,仅需要修改对应的内容或者添加对应的内容即可。

几乎99.9%的MW网站都使用模板。

“一发不可牵,牵之动全身。” --清·龚自珍《自春徂秋偶有所感触》

我也不知道为什么,就是想把这句话放在这里。

创建模板

前面的文章命名空间列出了18种MediaWiki内建的名称,模板也包含在其中。因此,该模板功能也使用了命名空间的相关功能。

创建模板很简单,和创建页面一样。

  • 在WIKI网站的URL栏输入模板:问候语或者Template:问候语,中英文都可。
  • 然后,页面存在就点击更改,不存在就创建,然后在里面写上wikitext内容
  • 点击保存,比如这里的例子是写成如下内容:
欢迎大家一起学习Mediawiki!

这样,一个最简单的模板就完成了!

使用模板

使用模板有如下方法,但是都是使用的“{{ }}”将其包含起来,现在咱们仅需要关注第一种方式,如无特殊说明,本文后面都是用第一种方式做例。

  1. {{模板名称}}或者{{模板:模板名称}}或者{{Template:模板名称}},结果都是一样的
  2. {{subst:模板名称}}
  3. {{safesubst:模板名称}}
  4. {{msgnw:模板名称}}

使用模板,通常是叫嵌入(transclude),不仅模板,其他网站上几乎所有页面都可以嵌入。

使用模板
调用模板语法 调用后的结果 备注
{{问候语}} 欢迎大家一起学习Mediawiki! 结果都一样,所以只要不嫌麻烦,都是用这种方式调用
{{模板:问候语}} 欢迎大家一起学习Mediawiki! 结果都一样
{{Template:问候语}} 欢迎大家一起学习Mediawiki! 结果都一样

如果当你不满意这句话的时候,你就可以更改模板:问候语里面的内容,这样,调用该模板的所有页面都会相应的变成你最后更改的内容。

参数

为丰富嵌入包含机制,当一个模板被嵌入时,MediaWiki允许对这个模板传递参数。由于参数的作用,模板可以提供不同的内容,拥有不同的行为。[2]

如果大家学过编程,说到函数应该就大概了解了。没有学过的,想想PPT模板,Word模板也差不多的意思。

隐式传递

模板:隐式传递 内容
欢迎你,来自{{{1}}}的{{{2}}},和我们一起学习MediaWiki!
调用
{{隐式传递|中国|张三}}

这种形式里,中国占用的是第一个位置({{{1}}}),张三是第二个位置({{{2}}})。这句话的意思就是,给模板:隐式传递传递

  • 参数1=中国,其中参数1也就是{{{1}}}
  • 参数2=张三,其中参数2也就是{{{2}}}
隐式传递
调用模板语法 调用后的结果 备注
{{隐式传递|中国|张三}} 欢迎你,来自中国的张三,和我们一起学习MediaWiki! {{{1}}}=中国,{{{2}}}=张三
{{隐式传递|张三|中国}} 欢迎你,来自张三的中国,和我们一起学习MediaWiki! {{{1}}}=张三,{{{2}}}=中国
{{隐式传递|俄罗斯|马雅可夫斯基·铁柱}} 欢迎你,来自俄罗斯的马雅可夫斯基·铁柱,和我们一起学习MediaWiki! 其他例子
可以看到,需要严格遵守传递顺序。看花了没?

编号传递

模板:编号传递,内容和隐式传递一样,唯一区别是调用
欢迎你,来自{{{1}}}的{{{2}}},和我们一起学习MediaWiki!
调用
{{编号传递|2=张三|1=中国}}

这句话的意思就是,给模板:编号传递传递

  • {{{2}}}=张三,第二个参数
  • {{{1}}}=中国,第一个参数
  • 无论怎么摆放位置结果都不变,只要1给国家,2给姓名
编号传递
调用模板语法 调用后的结果 备注
{{编号传递|1=中国|2=张三}} 欢迎你,来自中国的张三,和我们一起学习MediaWiki! 结果一样
{{编号传递|2=张三|1=中国}} 欢迎你,来自中国的张三,和我们一起学习MediaWiki! 结果一样
{{编号传递|2=马雅可夫斯基·铁柱|1=俄罗斯}} 欢迎你,来自俄罗斯的马雅可夫斯基·铁柱,和我们一起学习MediaWiki! 其他例子
可以看到,不需要严格遵守传递顺序,看花了没?

名称传递

模板:名称传递 内容
欢迎你,来自{{{国家}}}的{{{姓名}}},和我们一起学习MediaWiki!
调用
{{名称传递|姓名=张三|国家=中国}}

这句话的意思就是,给模板:名称传递传递

  • 姓名=张三
  • 国家=中国
  • 随便你怎么摆放位置
名称传递
调用模板语法 调用后的结果 备注
{{名称传递|国家=中国|姓名=张三}} 欢迎你,来自中国的张三,和我们一起学习MediaWiki! 结果一样
{{名称传递|姓名=张三|国家=中国}} 欢迎你,来自中国的张三,和我们一起学习MediaWiki! 结果一样
{{名称传递|姓名=马雅可夫斯基·铁柱|国家=俄罗斯}} 欢迎你,来自俄罗斯的马雅可夫斯基·铁柱,和我们一起学习MediaWiki! 其他例子
可以看到,不需要严格遵守传递顺序,没看花了吧!

调用格式

以下格式都可以使用。

{{名称传递|国家=中国|姓名=张三}}

或者

{{名称传递
|国家=中国
|姓名=张三
}}

{{编号传递|1=中国|2=张三}}

或

{{编号传递
|1=中国
|2=张三
}}

上面的1,2,国家我们姑且叫它变量吧!然后使用变量或者调用就添加{{{1}}},{{{2}}},{{{国家}}}这种方式!

需要注意的

空值

调用
{{名称传递|国家=中国|姓名=}}或者{{名称传递|国家=中国}}
结果
欢迎你,来自中国的{{{姓名}}},和我们一起学习MediaWiki!
解决方式
模板#默认值

无用值

调用
{{名称传递|国家=中国|名称=张三}}
结果
欢迎你,来自中国的{{{姓名}}},和我们一起学习MediaWiki!
解决方式
你写错了改呗!或者设置默认值。

默认值

针对上面的两种情况,MW有一种语法可以应对。

语法
{{{变量|提示语句}}}
进行更改
模板:名称传递里面写成如下文本:
欢迎你,来自{{{国家|未知地区}}}的'''{{{姓名|匿名人士}}}''',和我们一起学习MediaWiki!
默认值
调用模板语法 调用后的结果 备注
{{名称传递|国家=中国}} 欢迎你,来自中国匿名人士,和我们一起学习MediaWiki! 只写了国家没写姓名
{{名称传递}} 欢迎你,来自未知地区匿名人士,和我们一起学习MediaWiki! 两个都没写
{{名称传递|姓名=张三}} 欢迎你,来自未知地区张三,和我们一起学习MediaWiki! 没写国家

参考