2010-08-28 48 views
1

我在一个代码库上设置了一堆不同语言的mediawiki。到目前为止,它大部分都在工作,但我想使用与其余页面不同的主页面。要做到这一点,我原本只是补充说,仅适用于main_page类的一些CSS规则:MediaWiki自定义皮肤:检查当前页面是否为主页面

body .page-Main_Page { <rules> } 

的问题是,在其他语言中的主网页被称为不同(类相应变化),所以我要么为所有可能的主页标题添加css规则(不会发生),或者如果当前页面是主页面,则在皮肤内添加一个向主体添加类的检查。

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

从来就想到了迄今为​​止唯一的解决办法是采取mediawiki's变量的主网页的URL,并将其与当前页面标题:

$mainurl = $this->data['nav_urls']['mainpage']['href']; 
$ismain = $this->data['thispage'] == substr($mainurl,'6'); 

(在[“href”属性]开头/维基/,6因此偏移)

后来

<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">  

(和一些类的课程,但你的想法)

但这给了我另一个问题。在西班牙语中,该页面被称为PáginaPrincipal。数据['thispage']没有问题,但['href']保存为/ wiki/P%C3%A1gina_Principal

所以...任何人都可以告诉我如何 1. lookup “主页”翻译为当前使用的语言或 2.将P%C3%A1gina_Principal转换为PáginaPrincipal(以及其他语言的类似内容)或 3.向我展示另一种方法来检查我是否在主页?

回答

4

哈哈omg,它很简单。

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

嗯,这再次证明了打字了您的问题给别人,有时只给你你所需要的洞察力...:P

+0

是的,我我一直在那里。通常在我发布问题后,答案就会“出现”。太好了,你也发布了答案,谢谢。 (不要忘了接受它。) – Wikis 2010-08-30 17:27:54

+0

感谢您的提醒:D – 2010-09-07 08:27:33

0

不幸的是它不适合我能同MediaWiki 1.16.4工作。在

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

检查的问题是,

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

所以它需要更多的一些思维去一个更通用的解决方案时,我看着它一点点,它的工作原理(对我来说)。

(可能是升级到更高MW会使上面的代码工作虽然)。

+0

这可能与您设置wiki的方式有关,我从来没有遇到过在页面uri之前使用该语言作为子文件夹的mediawiki安装。我认为它必须比你使用的实际版本做得更多。 – 2012-04-02 09:37:56

4

其实还有一个更简单的方法:

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

返回布尔

+0

很好,谢谢! – Heihachi 2014-07-07 06:03:13

+0

这应该是被接受的答案,因为这将取决于url结构。而且,这就是'isMainPage()'的用途。 – leo 2014-10-03 11:56:52

相关问题