在MediaWiki插件中创建对话/讨论链接

在MediaWiki插件中创建对话/讨论链接,mediawiki,Mediawiki,我正在创建一个列出许多文件的MediaWiki插件。对于每个文件,我想打印一个[Talk]或[Discussion]链接。原来的名字似乎是talk,但后来改名为Discussion。如果页面不存在,这些链接应该是红色的;如果页面存在,这些链接应该是蓝色的 应该有办法在OutputPage.php中添加这样的链接,但我想不出来 我知道这些函数foo: $page = WikiPage::factory ( $title ) $talk = $title->getTalkPage() 但我不

我正在创建一个列出许多文件的MediaWiki插件。对于每个文件,我想打印一个[Talk]或[Discussion]链接。原来的名字似乎是talk,但后来改名为Discussion。如果页面不存在,这些链接应该是红色的;如果页面存在,这些链接应该是蓝色的

应该有办法在OutputPage.php中添加这样的链接,但我想不出来

我知道这些函数foo:

$page = WikiPage::factory ( $title )
$talk = $title->getTalkPage()
但我不知道如何从foo那里获得$title

我也不知道如何将$talk更改为适当的HTML。我不想将它添加到输出流中,因为我要单独构建很多HTML,但我想我可以重构,这样就不用传递字符串,而是传递一个句柄到输出。

为什么不使用OutputPage::addWikiText添加适当的链接,而不用担心技术细节:[[{ns:11}}:Foo|Text]]比如说

或者,您可以从当前页面的OutputPage::getTitle获取$title,或者从要使用的任何标题的title::newFromText获取$title。通过指定正确的名称空间常量,您可以直接获得$talk,这可能比通过WikiPage对象进行访问更容易

链接的正确样式可以使用helper方法Title::exists和用于生成页面URL的适当帮助器之一来完成


另请参见

您可以通过Title对象获取talk页面,不需要WikiPage。是的,我的意思是您可以执行类似$talk=Title::newFromText'foo',NS_talk;您可以直接获取talk页面标题,而不首先获取主题页面$title,但是如果Foo不在主名称空间中,它将被破坏。这是真的,很公平。OutputPage::addWikiText正是我要找的!谢谢如果能为插件编写者找到简单、简洁、易于阅读的文档,那就太好了。