Mediawiki 如何排除<;不包括>;模板中的标记,以仅在原始页面上设置类别

Mediawiki 如何排除<;不包括>;模板中的标记,以仅在原始页面上设置类别,mediawiki,mediawiki-templates,Mediawiki,Mediawiki Templates,作为模板的一部分,我想设置页面的类别。但也有一个类别不包括时,该页被排除 所以,如果我有一个模板定义,模板:Person <includeonly>Name: {{{1|}}} [[Category:People]] </includeonly> 但是我有一个页面,它排除了约翰·史密斯的页面,但我不希望它出现在人物类别中。比如说一个“本周最佳员工”页面 现在我有一种感觉,它可以用{{{subst:}}或{{safesubst:}}}来完成,正如这里记录的那样:但我无法理

作为模板的一部分,我想设置页面的类别。但也有一个类别不包括时,该页被排除

所以,如果我有一个模板定义,模板:Person

<includeonly>Name: {{{1|}}}
[[Category:People]]
</includeonly>
但是我有一个页面,它排除了约翰·史密斯的页面,但我不希望它出现在人物类别中。比如说一个“本周最佳员工”页面

现在我有一种感觉,它可以用
{{{subst:}}
{{safesubst:}}}
来完成,正如这里记录的那样:但我无法理解它

现在我看到wikipedia有一个模板,它看起来像是做了我想要的,但我无法理解它,它不适合我。我尝试过的一件事是将
noinclude
dtag
模板添加到我的wiki中,然后尝试使用Template:Person,但没有成功

<includeonly>Name: {{{1|}}}
{{subst:noinclude|[[Category:People]]}}
</includeonly>
名称:{{{1}}
{{subst:noinclude{[Category:People]]}
试试这个:

<includeonly>Name: {{{1|{{PAGENAME}}}}}
{{#ifeq:{{PAGENAME}}|{{{1|{{PAGENAME}}}}}|[[Category:People]]}}</includeonly>
名称:{{{1}{{PAGENAME}
{{{ifeq:{{PAGENAME}}{{1}{{PAGENAME}}}}{[Category:People]}}
解析器函数
{{{ifeq:}}
由MediaWiki绑定的扩展提供。它比较前两个参数并返回第三个参数(如果它们相等),否则返回第四个参数


假设页面名称与模板的参数相同;或者由参数定义,如果实际模板比示例更复杂。

我选择了更复杂的解决方案。我首先安装了变量扩展

然后创建了一个模板
template:SetCategories

<includeonly>{{#varexists:hidecats||{{#arraymap:{{{names|}}}|,|x|[[Category:x]]|}}}}</includeonly>
所以现在
Template:Person
变成了

<includeonly>Name: {{{1|}}}
{{SetCategories|names=People}}
</includeonly>

如果没有
{{subst:Person | John Smith}}
,我不认为您试图做的事情是可能的,它会在Person页面中展开模板,模板可能会在类别周围添加
标记。好主意,不过我不会使用默认值。这意味着在“约翰·多伊”上写
{{Person}}
是可行的,但是如果你在其他地方写
{{John-Doe}
,它会显示“姓名:本周最佳员工”(并将其包括在类别中)。我喜欢这个想法,我会尝试一下tomorrow@Bergi很公平。使用默认值是我的习惯,而排除非模板页面则不是。
<includeonly>{{#varexists:hidecats||{{#arraymap:{{{names|}}}|,|x|[[Category:x]]|}}}}</includeonly>
<includeonly>{{#switch: {{{heading_level|}}}
| 2 = == [[{{{name|}}}{{#if: {{{extra|}}}|,&#32;{{{extra|}}}|}}|{{{name|}}}]] ==
| 3 = === [[{{{name|}}}{{#if: {{{extra|}}}|,&#32;{{{extra|}}}|}}|{{{name|}}}]] ===
| 4 = ==== [[{{{name|}}}{{#if: {{{extra|}}}|,&#32;{{{extra|}}}|}}|{{{name|}}}]] ====
| === [[{{{name|}}}{{#if: {{{extra|}}}|,&#32;{{{extra|}}}|}}|{{{name|}}}]] ==
}}
{{#vardefine:hidecats|yes}}
{{:{{{name|}}}{{#if: {{{extra|}}}|,&#32;{{{extra|}}}|}}}}</includeonly>
<includeonly>Name: {{{1|}}}
{{SetCategories|names=People}}
</includeonly>
{{IncludePageWithHeader|name=John Smith}}