题
起初我不确定在MediaWiki中如何做一些高级操作的问题属于这里,但在阅读常见问题并考虑它之后,我认为wiki标记与HTML和CSS一样多,它的语言也是如此,如果欢迎这些问题,那么希望这也是!如果我错了,请随意标记这个问题。 更新:正如这个问题得到的3个观点所证明的那样,我想虽然也许它符合Stackoverflow的规则,但可能没有太多关于这个主题的专业知识!我想我需要把这个问题带到官方论坛(不寒而栗)
问题
在维基上我设置了我的MediaWiki,我有一个模板,可以输出动态创建的类别。这意味着将根据传递给模板的一些变量对调用模板的页面进行分类。动态生成的类别位于<includeonly>
块内,以防止模板页面本身获取类别。
问题是我然后将那个页面转移到其他页面上,这也导致类别被转换,现在第三页包含了所有页面的所有类别transcluded。
我想以某种方式格式化模板,以便调用模板的页面将使用类别,但任何转换调用页面的页面都不会继承类别。
实施例
这是我在设置示例中的最佳镜头。如果这不够,我可以提供我现实世界范例的链接。
<强> Template:Food
强>
一个页面,它接受一些变量并输出一个高度格式化的块来解释食物,包括基于<!>“输出类别<!>类型<!>变量
<强> Banana
强>
此页面使用一些变量调用type
模板,包括"fruit"
设置为Category:Fruit
。结果是当用户查看<!>“; Banana Nut Bread Recipe
<!>”时;他们得到一个格式很好的页面,其中包含有关水果的一些基本信息。此外,如果用户访问{{:Banana}}
页面,他们将看到列出的Banana页面。
<强> Fruit
强>
这是问题页面。在这个食谱页面上,作者希望转换成分的所有页面,以便每个成分都列在其格式良好的块中。但是,当他使用<=>转换<=>页面时,<=>类别将与其一起被转换,现在<=>页面被列为<=>类别中的错误。
解决方案
如果我理解正确,您希望将includeonly信息(类别)限制为仅深度1翻译。我不认为这是可能的。
可能的解决方案:
1-不要将类别信息放入Template:Food
。只需将其直接放在每个成分页面中,或者如果您真的必须,请创建Template:Food_category
或类似的。然后每个页面可以包含任意数量的{{Food}}
s,并且需要明确放置{{food category}}
s。
其他提示
标记部分转换扩展程序允许您使用标签标记源文章的部分,并根据这些标记进行转换。标签可以重叠,因此您可以非常精细地控制所传递的内容。
https://www.mediawiki.org/wiki/Extension:Labeled_Section_Transclusion
我认为通过Labeled Section Transclusion,您可以在Banana页面上的单独转换语句中转换Type:fruit和Banana描述,但只将描述拉到Recipe页面。