如何在MediaWiki中获取当前页面的URL


How to get Current Page URL in MediaWiki

我正在尝试获取当前页面的url,并将其存储到我的自定义皮肤模板中的一个变量中。我正在尝试这样做,以便我可以将此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'];

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

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

事实上,$this-getSkin()是从皮肤模板访问"请求全局"MediaWiki对象(如当前标题、WebRequest、用户、语言、OutputPage等)的通用方法。具体来说,Skin类实现了IContextSource接口,该接口提供对所有这些对象的访问。

由于您知道当前页面名称($name),您可以使用MediaWiki标题(请参阅http://www.mediawiki.org/wiki/Manual:Title.php)。据我所知,它一定是这样的:

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