起初我不确定在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页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top