我在一个代码库上设置了一堆不同的语言mediawiki。到目前为止大部分都在工作,但我想使用一个看起来与其他页面不同的主页面。为此,我最初添加了一些仅适用于main_page类的css规则:
body .page-Main_Page { <rules> }
问题在于,在其他语言中,主页面被不同地调用(并且类会相应地更改),因此我要么为所有可能的主页标题添加css规则(不会发生),要么在皮肤内部进行检查如果当前页面是主页面,则会向主体添加一个类。
不幸的是,没有办法检查。我用Google搜索的大多数解决方案都基于“主页”或设置自己的标题。我希望皮肤自动检测标题。
到目前为止我唯一想到的解决方案是将mediawiki的变量用于主页面url并将其与当前页面标题进行比较:
$mainurl = $this->data['nav_urls']['mainpage']['href'];
$ismain = $this->data['thispage'] == substr($mainurl,'6');
(['href']以/ wiki /开头,因此偏移为6)
以后
<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">
(当然还有一些课程,但你明白了)
但这给了我另一个问题。在西班牙语中,该页面称为PáginaPrincipal。数据['thispage']没有问题,但['href']保存为/ wiki / P%C3%A1gina_Principal
所以...任何人都可以告诉我如何 1.用当前使用的语言OR查找“主页面”的翻译 2.将P%C3%A1gina_Principal转换为PáginaPrincipal(以及其他语言的类似物)OR 3.告诉我另一种检查我是否在主页上的方法?
答案 0 :(得分:5)
实际上有一种更简单的方法:
if ($this->getSkin()->getTitle()->isMainPage())
返回布尔值
答案 1 :(得分:4)
$this->data['skin']->mTitle->mUrlform == $mainurl;
再次证明,向其他人输入您的问题有时可以为您提供所需的洞察力......:P
答案 2 :(得分:0)
不幸的是,对于MediaWiki 1.16.4,它不起作用。我仔细研究了一下,在检查
时它(对我来说)有效$this->data['skin']->mTitle->mUrlform == "Main_Page"
问题在于
$this->data['nav_urls']['mainpage']['href'] == "/en/Main_Page"
因此需要更多思考才能获得更通用的解决方案。
(可能升级到以后的MW会使上面的代码工作。)