【问题标题】:How to get Current Page URL in MediaWiki如何在 MediaWiki 中获取当前页面 URL
【发布时间】:2013-08-26 10:58:23
【问题描述】:

我正在尝试获取当前页面的 url 并将其存储到我的自定义皮肤模板中的变量中。我正在尝试这样做,以便可以将此网址用于其他目的。我正在尝试做这样的事情

function currentpageurl() //Some Custom function
{
    $url= [something that can get current page's url in mediawiki and store it to this variable]
    .....use the $url variable for other purposes....
    ......
    .....
}

Mediawiki 是否有一种方法可以识别当前页面的 url,或者我找到当前页面的唯一选择是使用这种方法?

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

【问题讨论】:

    标签: php mediawiki


    【解决方案1】:

    如果您正在为皮肤编写QuickTemplate 子类,则可以使用$this->getSkin()->getTitle() 为当前页面获取Title 对象。

    获得 Title 对象后,您可以在其上调用 getLinkURL() 以获取页面的 URL。 (您可能想像 Ilya 建议的那样使用 getPrefixedURL(),因为这只会为您提供页面名称的 URL 编码版本。)或者您可以将 Title 对象传递给 Linker::link()如果你想生成一个标准的 wikilink 风格的链接,而不必自己弄乱 URL。

    事实上,$this-getSkin() 是从皮肤访问“请求全局”MediaWiki 对象(如当前标题、WebRequestUserLanguageOutputPage 等)的一般方式模板。具体来说,Skin 类实现了IContextSource 接口,该接口提供对所有这些对象的访问。

    【讨论】:

    • 嗨,Ilmari,太棒了!有用!由于我的皮肤是基于 Vector 的,所以我使用 $this->getSkin()->getTitle(); 获得了标题。通过在 BaseTemplate 中使用它,然后使用 getLinkURL() 来获取该页面的 URL。非常感谢……
    【解决方案2】:

    由于您知道当前页面名称 ($name),您可以使用 MediaWiki 标题(请参阅 http://www.mediawiki.org/wiki/Manual:Title.php )。据我了解,它必须看起来像这样:

    $title = Title::newFromText($name);
    $url = $title->getPrefixedUrl();
    

    【讨论】:

    • 就我而言,我不知道当前页面的名称。它可以是用户所在的任何页面。所以我想找到用户所在页面的页面 url。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2011-07-15
    • 1970-01-01
    • 2017-08-23
    • 2021-06-07
    相关资源
    最近更新 更多