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