如何访问由#set设置的Semantic MediaWiki属性?
Semantic MediaWiki模板属性访问与默认值设置
核心问题解答
- 无法通过
{{{Is foo}}}读取#set设置的语义属性值,因为{{{参数名}}}仅对应模板调用时传入的页面参数,而非语义属性。要访问语义属性,需使用Semantic MediaWiki的#show解析器函数:- 在模板内部或调用模板的页面中,通过
{{#show:{{FULLPAGENAME}}|?Is foo}}可获取当前页面的Is foo属性值。
- 在模板内部或调用模板的页面中,通过
- 针对“给缺失属性的页面设置默认值
N”的需求,正确写法如下:
逻辑说明:利用{{#if:{{#show:{{FULLPAGENAME}}|?Is foo|default=}}| <!-- 属性已存在,不执行操作 --> | {{#set:Is foo=N}} }}#show的default参数在属性不存在时返回空值,配合#if判断——若为空则执行#set设置默认值。
常见误区修正
- 你之前的代码
{{#if:{{{Is foo|}}}{{{Is foo|}}}|{{#set:Is foo=N}}存在两个问题:- 仅判断模板参数
Is foo是否存在,而非语义属性; - 语法不完整,缺少闭合的
}}。
- 仅判断模板参数
内容的提问来源于stack exchange,提问作者MothOnMars
相关产品推荐
相关产品推荐

