首页 | 主题 | 图库 | 问答 | 文摘 | 原创 | 百科

历史 | 地理 | 人物 | 艺术 | 体育 | 科学 | 音乐 | 电影 | 信息技术 | 世界遗产

 开放、中立,源自维基百科

个人工具


Help:替换引用

维库,知识与思想的自由文库

跳转到: 导航, 搜索
维库使用手册

当前软件版本——1.10.1

目录 | 读者手册 | 编辑手册 | 管理手册


修饰符“subst:”(“substitute”,“替换引用”)位于模板、变量、解析函数的“{{”之后。但subst对参数的“{{{”不起作用。

它能在引用页面保存时,将维基代码自动替换,分别为:

  • 模板的维基代码,而不是引用模板的维基代码(例如{{template1}}),参数被替换成参数的值;
  • 变量的值;
  • 解析函数的值。

对模板的替换引用不会显示在页面历史和模板的链入页面等中。

目录

[编辑] 模板

样例: Template:t2討論 - 鏈入頁面 - 编辑) ,包含start_{{{1}}}_middle_{{{2}}}_end,以{{subst:t2|[[a]]|{{x2|b}}}}方式引用,得到源代码start_[[a]]_middle_{{x2|b}}_end,显示为start_a_middle_bb_end。

注意到这种对模板的替换不会自动重复进行:如果被替换引用的模板又引用了其他模板,那个模板不会被替换引用。你可以随后加上subst,做手动转换。这种逐步的替换引用对于分析模板调用原理很有用。但是,复杂的是:

  • 如果参数名取决于另一个参数的默认值,那么替换引用时这不会被计算。

如果你想修改替换引用生成的目标代码,你必须先保存,因为预览时替换引用还没发生,替换引用只在保存时发生。

另一种方式就是手动替换,复制模板的源代码再编辑。另一种方式是使用“msgnw:”修饰符(参见:Help:模板#msgnw)。

对“~~~~”进行替换引用没有效果。

[编辑] 变量

对变量替换引用与对模板的类似。比如时间戳:

{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}},    {{subst:CURRENTTIME}} (UTC)

得到:

4 5月 2006,    14:07 (UTC)

[编辑] 解析函数

对解析函数的替换引用与模板一样,但是“subst:”与“#”之间不能有分隔。

[编辑] nowiki与pre

如果某模板包含位于nowiki或pre标记之内的签名或替换引用,他们将被解释并展开,但nowiki或pre标记仍保留。

[编辑] 条件替换技术

是否进行替换可由特定参数决定,由此还可进行多重替换。原理如下:

  • 页面A包含{{subst:B|subst=subst:|参数...}}
  • template:B包含{{{{{subst|}}}C|subst={{{subst|}}}|参数...}}
  • template:C包含{{{{{subst|}}}D|subst={{{subst|}}}|参数...}}
  • 以此类推

当页面A对template:B的引用包含“subst=subst:”时,template:B对template:C的引用也是替换引用,template:C对template:D也是。若页面A不含“subst=subst:”时,便不会替换,且不会出现错误。由此,条件替换和多重替换可以实现。

[编辑] 基于引用的替换

在被替换的模板中使用“仅包含”和“不包含”标签,可以在引用时实现魔术般的技巧。

代码~<includeonly>~</includeonly>~~显示为~~~,当被引用时显示为~~~~,当被替换引用时展开为用户签名。而当一包含了{{<includeonly>subst:</includeonly>CURRENTTIME}}的模板被替换引用并保存时,不变的时间就被保存在维基文字中,替换了随时间变化的时间变量。变量也是如此。样例:

  • 在Template:Demo中保存{{CURRENTTIME}},源文件为{{CURRENTTIME}}
在页面中保存{{Demo}},源文件为{{Demo}},页面显示出变化的当前时间08:09;
在页面中保存{{subst:Demo}},源文件为{{CURRENTTIME}},页面显示出变化的当前时间08:09;
  • 在Template:Demo中保存{{subst:CURRENTTIME}},源文件为07:37
在页面中保存{{Demo}},源文件为{{Demo}},页面显示出不变的模板保存时间07:37;
在页面中保存{{subst:Demo}},源文件为{{subst:CURRENTTIME}},页面显示出不变的模板保存时间07:37;
  • 在Template:Demo中保存{{<includeonly>subst:</includeonly>CURRENTTIME}},源文件为{{<includeonly>subst:</includeonly>CURRENTTIME}}
在页面中保存{{Demo}},源文件为{{Demo}},页面显示出{{subst:CURRENTTIME}};
在页面中保存{{subst:Demo}},源文件为07:37,页面显示出不变的页面保存时间07:37;

简单的说:仅包含标签可被用于专门被替换引用的模板、变量,即在subst:前后加上仅包含标签。

[编辑] 参见

到其他帮助页面的链接
 
帮助目录 - 所有帮助页面
阅读
链接|搜索|分类|重定向|章节|名字空间|URL|跨维基链接|打印页面|随机页面|特殊页面
登录与参数设置
登录|参数设置|用户样式
跟踪更改
页面历史|差异|链入页面|链出更改|最近更改|增强的最近更改|监视列表|编辑摘要|用户贡献|小修改
编辑
创建新页面|编辑页面|使用表格|图像|模板|HTML|页面重命名|特殊字符|回退|脚注|ISBN|签名
高级
变量|魔术字|默认参数|模板扩展语法|替换引用|计算|数学公式|简易时间线语法|输入框


AD Links