0

这是一个 wiki 语法挑战!

自从询问Mediawiki: Same section with multiple names (section aliases/synonyms)以来,我开发了一个更具体的查询,因为我觉得我更接近一个按我想要的方式工作的解决方案:

我想在链接中将参数传递给模板而不包含整篇文章。

[[ Template:Interrupts Code Examples|pagename={{PAGENAME}} ]]

除非这会创建指向文章的链接,pagename=Name_of_page_you're_on而不是传递参数。

转入文章,参数传递成功,但我只是想要一个链接,将参数传递给模板。

有关更多上下文,

使用#ifexists我可以生成一个“代码示例编译”页面,当没有给出名称时,该页面默认为标题为“示例一”和“示例二”的部分,但我也希望它们是可链接的部分并显示适当的标题取决于从哪里来:

"EIMSK" and "Example Two"
"EICRA" and "Example Two"
"Example One" and "PCMSK0"
"Example One" and "PCMSK1"
"Example One" and "PCMSK2"
"Example One" and "PCICR"

这是不是太复杂了,我应该手动编译这些页面?这可能吗?

我目前的解决方案是拥有

"PCMSK0"
{{example one code}}
"PCMSK2"
{{example one code}}
"EICRA"
{{example two code}}
etc.

从那时起,这远非理想,代码示例页面的编译只是一团糟

如果有人可以给我一些伪代码,我愿意用 PHP 编写 MediaWiki 扩展。

4

1 回答 1

1

注意:这可能只是部分答案。无论如何我都会发布它,以防它有一些用处。

如果您只是尝试使用自定义查询参数链接到 wiki 上的另一个页面,请使用URL 数据魔术词之一(localurlfullurlcanonicalurl等),如下所示:

[{{fullurl:Target page|pagename={{PAGENAMEE}}}} link text]

(注意使用自动对源页面名称进行URL 编码。){{PAGENAMEE}}

请注意,生成的链接将被 MediaWiki 视为外部链接,并将被格式化。如果外部链接图标困扰您,摆脱它的简单方法是将链接包装在 a<span>或 a <div>with 中class="plainlinks"

可以将所有这些包装在模板中,例如:

页面模板:Fancylink

<span class="plainlinks">[{{fullurl:{{{1}}}|pagename={{PAGENAMEE}}}} {{{2|{{{1}}}}}}]</span>

这将允许您将链接编写为:

{{fancylink:Target page|link text}}

有关类似模板的示例(尽管顶部添加了额外的花里胡哨),请参阅例如Template:Edit on Wikipedia,它链接到带有action=edit添加到 URL 的参数的页面。

但是,仅此方法不会导致您在链接中传递的 URL 参数在目标页面上pagename=被替换。{{{pagename}}}要做到这一点,您可能需要编写一个自定义的 MediaWiki 扩展。这应该是可行的,但比仅仅在第一页中创建链接要复杂得多。


或者,考虑到有效参数值的集合似乎有限,解决此类问题的“传统”MediaWiki 方法是为每个简单地嵌入共享模板的值创建一个单独的页面,例如:

页面中断代码示例 PCICR

{{Interrupts Code Example One|interrupt=PCICR}}

使用Template:Interrupts Code Example One包含实际的示例代码,可能在适当的地方{{{interrupt}}}替换了中断名称(或用于类似的东西)。{{#switch:...}}创建单独的页面,如果有很多,您可以使用机器人或维护脚本importTextFile.phpedit.php

于 2014-01-17T13:59:34.647 回答