我正在 mediawiki 中创建一个模板,该模板仅在该信息可用时才可选择包含一条信息。该信息是使用作为模板参数传递的文章中的语义媒体维基注释获得的。问题在于将多个查询{{#if: ...}}
与 AND 和 OR 组合在一起非常麻烦且容易出错。我现在做的方式看起来像
{{#ifexist: {{{1}}} | {{#if: {{#if: {{#show: {{{1}}} | ?prop1 }} |
{{#if: {{#show: {{{1}}} | ?prop2 }} | {{#show {{{1}}} | ?prop3 }} }}
{{#if: ... }} ... | ... }}
所以第二个和第三个#if
s 基本上是对 AND 进行编码,而第二个和第四个是对 OR 进行编码,也就是说,它类似于if ((prop1 in {{{1}}}) and (prop2 in {{{1}}}) and (prop3 in {{{1}}})) or ...
. 这#ifexist
是必要的,因为当wiki 中的文章不存在#show
时会返回错误(不是空字符串) 。{{{1}}}
我有大约 6 个 OR 和 18 个 AND,因此您可以想象阅读它会变得多么漫长和困难。我想知道是否有更直接的方式来表达这些连接词,特别是 AND 需要这种丑陋的嵌套#if
s 编码。
如果您想知道我在哪里需要这么长的 if,我正在处理的实际模板在这里:https ://psychonautwiki.org/wiki/Template:Summary