我在一个代码库上设置了一堆不同的语言媒体维基。到目前为止,大多数都在工作,但是我想使用一个与其他页面不同的主页。为此,我最初只是添加了仅应用于main_page类的一些CSS规则:

body .page-Main_Page { <rules> }

问题在于,在其他语言中,主页被称为不同(并且类相应地更改),因此我要么必须为所有可能的主页标题(不会发生)添加CSS规则,要么在皮肤内进行检查,以添加如果当前页面是主页,则可以与身体上课。

不幸的是,没有办法检查一下。我搜索过的大多数解决方案都是基于“主页”或设置自己的标题的。我希望皮肤自动检测标题。

到目前为止,我唯一想到的解决方案是将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ágina校长。数据['thispage']对此没有任何问题,但是['href']被保存为 /wiki /p%c3%a1gina_principal

所以...任何人都可以告诉我如何1.查找当前使用的语言的“主页”的翻译或2。将p%c3%a1gina_principal转换为páginaprinciptal(等其他语言)或3 。告诉我另一种检查我是否在主页上的方式?

有帮助吗?

解决方案 2

哈哈,天哪,太简单了。

$this->data['skin']->mTitle->mUrlform == $mainurl;

好吧,这再次证明将您的问题输入其他人有时可以给您您所需的见解。

其他提示

实际上有一种更简单的方法:

if ($this->getSkin()->getTitle()->isMainPage())

返回布尔人

不幸的是,Mediawiki 1.16.4对我不起作用。我稍微研究一下,在检查时(对我来说)有效

$this->data['skin']->mTitle->mUrlform == "Main_Page"

问题是

$this->data['nav_urls']['mainpage']['href'] == "/en/Main_Page"

因此,它需要更多的思考才能获得更通用的解决方案。

(可能是升级到后来的MW会使上述代码起作用。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top