4

我正在尝试获取当前页面的 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'];
4

2 回答 2

5

如果您正在为皮肤编写QuickTemplate类,则可以使用.$this->getSkin()->getTitle()

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

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

于 2013-08-26T12:37:51.247 回答
2

由于您知道当前页面名称 ($name),您可以使用 MediaWiki 标题(参见http://www.mediawiki.org/wiki/Manual:Title.php)。据我了解,它必须如下所示:

$title = Title::newFromText($name);
$url = $title->getPrefixedUrl();
于 2013-08-26T11:17:48.357 回答