我正在尝试获取当前页面的网址并将其存储到我的自定义外观模板中的变量中。我试图这样做,所以我可以将此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="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
答案 0 :(得分:4)
如果您正在为皮肤编写QuickTemplate子类,则可以使用$this->getSkin()->getTitle()
为当前页面获取Title个对象。
获得Title对象后,可以在其上调用getLinkURL()
以获取该页面的URL。 (你可能不想要使用getPrefixedURL()
,正如Ilya建议的那样,因为它只是给你一个URL编码版本的页面名称。)或者你可以将Title对象传递给{ {3}}如果你想生成一个标准的wikilink风格的链接,而不必自己弄乱URL。
事实上,$this-getSkin()
是访问“请求全局”MediaWiki对象的一般方式,例如当前标题,Linker::link()
,WebRequest,User,{来自皮肤模板的{3}}等。具体来说,Language类实现了OutputPage接口,该接口提供对所有这些对象的访问。
答案 1 :(得分:2)
由于您知道当前页面名称($ name),因此可以使用MediaWiki Title(请参阅http://www.mediawiki.org/wiki/Manual:Title.php)。据我了解,它必须如下:
$title = Title::newFromText($name);
$url = $title->getPrefixedUrl();