在 MediaWiki 插件中创建 Talk/Discuss link

Create a Talk/Discuss link in a MediaWiki Plug-in

我正在创建一个列出许多文件的 MediaWiki 插件。对于每个文件,我想打印一个 [Talk] 或 [Discuss] link。 (好像原名是talk,后来改成了discuss。)这些link如果页面不存在应该是红色的,存在的话应该是蓝色的。

应该有办法在OutputPage.php中添加这样的link,但我想不通。

我知道这些函数"foo":

$page = WikiPage::factory ( $title )
$talk = $title->getTalkPage()

但我不确定如何从 foo 获取 $title

我也不确定如何将 $talk 更改为合适的 HTML。我不想将它添加到输出流中,因为我正在单独构建很多 HTML,但我想我可以重构,而不是传递我的字符串,而是传递一个句柄到输出.

为什么不使用 OutputPage::addWikiText() 添加适当的 link 而不必担心技术细节:例如 [[{{ns:11}}:Foo|Text]]

或者,您可以从 OutputPage::getTitle() 获取当前页面的 $title,或从 Title::newFromText() 获取您要使用的任何标题。您可以通过指定正确的命名空间常量直接获取 $talk,这可能比通过 WikiPage object.

旅行更容易

link 的正确样式可以使用辅助方法 Title::exists() 和用于生成页面 url 的适当辅助方法之一来完成。

另见 https://doc.wikimedia.org/mediawiki-core/master/php/classTitle.html