6

起初我不确定如何在 MediaWiki 中进行高级操作的问题是否属于这里,但在阅读了常见问题并思考之后,我决定 wiki 标记与 HTML 和 CSS 一样是它自己的语言,如果这些欢迎在这里提问,希望这也是!如果我错了,请随时标记这个问题。更新:正如这个问题得到的 3 个观点所证明的那样,我想虽然它可能在 Stackoverflow 的规则之内,但在这个主题上可能没有太多的专业知识!我想我需要把这个问题带到官方论坛(不寒而栗)


问题

在我设置的 wiki 上,我设置了我的 MediaWiki,我有一个模板,可以输出动态创建的类别等内容。这意味着调用模板的页面将根据传递给模板的一些变量进行分类。动态生成的类别位于<includeonly>块内,以防止模板页面本身获取类别。

问题是我随后将该页面嵌入到其他页面,这导致类别也被嵌入,现在第三页具有它嵌入的所有页面的所有类别。

我想以某种方式格式化模板,以便调用模板的页面将使用类别,但包含调用页面的任何页面都不会继承类别。

例子

这是我最好的设置示例。如果这还不够,我可以提供指向我的真实示例的链接。

Template:Food
一个页面,它接受几个变量并输出一个解释食物的高度格式化的块,包括输出基于“类型”变量的类别。

Banana
此页面使用一些变量调用Template:Food模板,包括typeset to "fruit"。结果是,当用户查看“ Banana”页面时,他们会得到一个格式精美的页面,其中包含有关水果的一些基本信息。此外,如果用户转到该Category:Fruit页面,他们将看到列出的 Banana 页面。

Banana Nut Bread Recipe
这是问题页面。在这个食谱页面上,作者想要嵌入所有的成分页面,以便每种成分都列在其格式良好的块中。但是,当他使用 嵌入Banana页面时{{:Banana}}Fruit类别也随之被嵌入,现在该Banana Nut Bread Recipe页面被列为Fruit错误的类别。

4

2 回答 2

3

如果我理解正确,您希望将仅包含信息(类别)限制为仅深度 1 嵌入。我不认为这是可能的。

可能的解决方案:

1-不要将类别信息放入Template:Food. 只需将其直接放在每个成分页面中,或者如果您真的必须,创建一个Template:Food_category或类似的。然后每个页面可以有任意数量的{{Food}}s 并且{{food category}}需要明确放置 s。

于 2009-03-05T02:29:56.763 回答
0

Labeled Section Transclusion 扩展允许您使用标签标记源文章的部分,并基于这些标签进行转换。标签可以重叠,因此您可以非常精细地控制通过的内容。

https://www.mediawiki.org/wiki/Extension:Labeled_Section_Transclusion

我认为使用带标签的部分嵌入,您可以将 Type:fruit 和 Banana 描述嵌入到 Banana 页面上单独的嵌入语句中,但只能将描述拉到 Recipe 页面。

于 2016-06-07T14:16:56.130 回答