2

所以我有一个 MediaWiki 模板,我在表格中使用它来表示一列。代码看起来像这样,可以按我的意愿工作。

<includeonly>{{#if:{{{name|}}}|''{{{name}}}: ''|}}{{#if:{{{food|}}}|+{{Food |{{{food|}}}}}|}} {{#if:{{{condition|}}}|{{{condition|}}}|}}</includeonly>

当我将它与输入一起使用时

{{Symbiosis|name=Groove|food=10|condition=如果在 [[Apple Tree]]、[[Dandelion]] 或 [[Straberry]]}} 旁边

我得到了符合要求的以下结果。

正确的输出

但是现在我想扩展这个模板并将带有food定义的部分移动到另一个模板中,因为我再次需要它在其他地方。所以我制作了一个新ResourceList模板,它基本上和以前一样。

<includeonly>{{#if:{{{food|}}}|+{{Food|{{{food|}}}}}|}}<includeonly>

并将其包含在我的Symbiosis模板中,使其看起来像这样。

<includeonly>{{#if:{{{name|}}}|''{{{name}}}: ''|}}{{ResourceList|food={{{food}}}}} {{#如果:{{{条件|}}}|{{{条件|}}}|}}</includeonly>

但是当我现在使用与上面相同的输入时,我的表格中会出现一个换行符,看起来像这样。 错误的输出

为什么是这样?模板定义中没有空格或链接中断。我真的不明白 MediaWiki 是如何处理这一切的,这很令人困惑,而且有点不直观。所有这些空格和换行行为让我发疯......有没有办法告诉 MediaWiki 它可能会忽略我的模板定义中的所有空格和换行符,期望那些我明确想要的?

4

3 回答 3

1

我无法重现您的错误。

我输入了您第二个示例中的所有代码,结果与您的第一个示例完全相同。我自己尝试了它,然后我尝试根据屏幕截图(见下文)复制您的表格,并且在这两种情况下都没有发生错误的换行符。

{| class="wikitable sortable"
|- 
! width="33%" | Column A
! width="34%" | Column B
! width="33%" | Column C
|- 
| {{loremipsum}}
| {{Symbiosis|name=Groove|food=10|condition=if next to [[Apple Tree]], [[Dandelion]] or [[Straberry]]}}
| {{loremipsum}}
|}

您是否在表中使用不同的 css 类?因为有时这会导致意外的换行或段落问题。

于 2013-07-29T17:21:32.737 回答
0

当序列中包含多个没有输出的模板时,可能会发生这种情况(不确定这是否是这里的问题)。

尝试<nowiki/>在每个模板的结尾之前添加(在 any 之前</includeonly>

于 2013-08-14T21:45:53.973 回答
0

您不能依赖|在模板中使用竖线字符 , 。相反,您应该专门为管道字符创建一个新模板。这就是维基百科所做的。这比听起来简单。简单地:

  1. 创建一个名为的新模板!(因此页面名称将为Template:!)。
  2. 页面内容只需要是|(是的,只是管道字符)。
  3. 通过添加{{!}}到您当前使用管道字符的任何模板来使用它(即替换|{{!}}

模板:!在维基百科上获取更多信息。

于 2013-08-15T10:50:17.057 回答