2

私は1つのコードベースにたくさんの異なる言語のmediawikiをセットアップしています。これまでのところほとんどが機能していますが、他のページとは異なって見えるメインページを使用したいと思います。これを行うために、私は元々、main_pageクラスにのみ適用されるいくつかのcssルールを追加しました。

body .page-Main_Page { <rules> }

問題は、他の言語ではメインページの呼び出しが異なる(それに応じてクラスが変更される)ため、考えられるすべてのメインページタイトルにcssルールを追加するか(発生しない)、スキン内でチェックを実行して、現在のページがメインページの場合は、本文にクラス分けします。

残念ながら、それを確認する方法はありません。私がグーグルで検索したほとんどのソリューションは、「メインページ」または独自のタイトルの設定に基づいています。肌にタイトルを自動検出させたい。

私がこれまで考えてきた唯一の解決策は、メインページのURLにmediawikiの変数を取り、それを現在のページタイトルと比較することです。

$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と呼ばれます。data ['thispage']には問題はありませんが、['href']は/ wiki / P%C3%A1gina_Principalとして保存されます。

だから...誰かが私に方法を教えてもらえますか1.現在使用されている言語で「メインページ」の翻訳を検索するか2.P%C3%A1gina_PrincipalをPáginaPrincipal(および他の言語の同様のもの)に変換するまたは3 。メインページにいるかどうかを確認する別の方法を教えてください。

4

3 に答える 3

5

実際には、さらに簡単な方法があります。

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

ブール値を返します

于 2013-01-12T13:38:28.477 に答える
4

ははは、とても簡単でした。

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

さて、それはあなたの問題を他の誰かにタイプすることが時々あなたにあなたが必要とした洞察を与えることができることをもう一度証明します..:P

于 2010-08-28T20:29:02.607 に答える
0

残念ながら、MediaWiki1.16.4では機能しません。私はそれを少し調べました、そしてそれはチェックするときに(私にとって)うまくいきます

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

問題はそれです

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

したがって、より一般的なソリューションに到達するには、もう少し考える必要があります。

(ただし、後のMWにアップグレードすると、上記のコードが機能する可能性があります。)

于 2012-03-31T08:41:38.743 に答える