【问题标题】:Create a Talk/Discuss link in a MediaWiki Plug-in在 MediaWiki 插件中创建谈话/讨论链接
【发布时间】:2019-10-28 15:12:33
【问题描述】:

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

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

我知道这些函数“foo”:

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

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

我也不确定如何将$talk 更改为适当的 HTML。我宁愿不将它添加到输出流中,因为我正在单独构建大量 HTML,但我想我可以重构,这样我就不用传递我的字符串,而是传递一个句柄到输出。

【问题讨论】:

    标签: mediawiki


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 可以通过Title对象获取讨论页,不需要WikiPage。
    • 是的,我的意思是您可以执行类似$talk = Title::newFromText('foo', NS_TALK); 的操作,然后直接获得讨论页标题,而无需先获得主题页$title
    • 如果Foo 不在主命名空间中,那将会中断。
    • 没错,很公平。
    • OutputPage::addWikiText() 正是我要找的!谢谢。为插件编写者找到简单、简洁、易于阅读的文档会很棒。
    猜你喜欢
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2016-10-09
    相关资源
    最近更新 更多