Frage

Ich gründe eine Reihe von verschiedenen Sprach bis mediawiki auf einer Code-Basis ist. Bisher meiste davon funktioniert, aber ich möchte eine Haupt-Seite verwenden, als der Rest der Seiten anders aussieht. Um dies zu tun ich ursprünglich nur ein paar CSS-Regeln hinzugefügt, die sich nur auf die main_page Klasse angewendet:

body .page-Main_Page { <rules> }

Das Problem ist, dass in anderen Sprachen die Hauptseite anders genannt wird (und die Klasse ändert sich entsprechend), so dass ich entweder CSS-Regeln für alle möglichen Haupt-Seitentitel (nicht passieren) oder tun einen Scheck in der Haut muss hinzufügen fügt hinzu, dass eine Klasse, um den Körper, wenn die aktuelle Seite die Haupt-Seite ist.

Leider gibt es keine Möglichkeit, das zu überprüfen. Die meisten Lösungen, die ich gegoogelt habe beruhen entweder auf ‚Hauptseite‘ oder einen eigenen Titel zu setzen. Ich möchte, dass die Haut den Titel automatisch zu erkennen.

Die einzige Lösung Ive dachte an so weit ist mediawiki's Variable für die Hauptseite URL nehmen und vergleichen Sie es mit der aktuellen Seitentitel:

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

(die [ 'href'] beginnt mit / wiki /, daher der Versatz von 6)

und später

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

(und einige weitere Klassen natürlich, aber Sie bekommen die Idee)

Aber das gibt mir ein anderes Problem. In Spanisch wird die Seite Página Auftraggeber genannt. Die Daten [ 'Thispage'] hat keine Probleme damit, aber die [ 'href'] wird gespeichert als / wiki / P% C3% A1gina_Principal

So ... kann jemand entweder mir sagen, wie 1. Übersetzung Nachschlag für ‚Hauptseite‘ in der Sprache, die derzeit verwendet wird, oder 2. convert P% C3% A1gina_Principal in Página Principal (und dergleichen für andere Sprachen) OR 3. Zeigen Sie mir eine andere Art und Weise zu überprüfen, ob ich auf der Hauptseite bin?

War es hilfreich?

Lösung 2

Haha omg, es war so einfach.

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

Nun, die wieder einmal beweist, dass Ihr Problem an jemand anderen manchmal können Sie die Eingabe aus geben nur die Einsicht, man benötigt ..: P

Andere Tipps

Es ist eigentlich eine noch einfachere Art und Weise:

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

Gibt einen boolean

Leider funktioniert es nicht für mich mit MediaWiki 1.16.4. Ich sah in ihm ein wenig und es funktioniert (für mich) bei der Überprüfung auf

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

Das Problem ist, dass

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

so bedarf es etwas mehr Denken, eine generische Lösung zu erhalten.

(Könnte das ein Upgrade auf eine später MW sein wird, obwohl die obige Code funktioniert.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top