2010-08-28 47 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

相關問題