Verbessern Sie Ihr MediaWiki-Navigationsmenü
Das Anpassen Ihres MediaWiki-Navigationsmenüs kann die Benutzererfahrung erheblich verbessern und zugänglichere und funktionalere Tools ermöglichen. Wenn Sie MediaWiki 1.39 mit dem Timeless-Design ausführen, kann es schwierig sein, bestimmte Optionen wie die „druckbare Version“ hinzuzufügen. Diese Aufgabe ist aufgrund der einzigartigen Konfigurationen des Seitenleistenmenüs nicht einfach.
Ein gemeinsames Ziel von Administratoren besteht darin, Benutzern einen schnellen Zugriff auf druckbare Seiten zu ermöglichen. Diese Funktion ist für Umgebungen unerlässlich, in denen häufig auf Offline- oder Papiermaterialien verwiesen wird, z. B. auf akademische oder Unternehmens-Wikis. Allerdings empfinden viele den Prozess als weniger intuitiv als erwartet. 🖨️
In dieser Anleitung erfahren Sie, wie Sie den Link „Druckversion“ in das Navigationsmenü integrieren, insbesondere unter der Option „Zufällige Seite“. Die Verwendung der MediaWiki:Sidebar für Änderungen erfordert ein solides Verständnis der Syntax und des Verhaltens innerhalb des Timeless-Themas.
Machen Sie sich keine Sorgen, wenn Sie nicht weiterkommen oder auf Probleme stoßen! Am Ende dieser exemplarischen Vorgehensweise wissen Sie nicht nur, wie Sie die Änderung implementieren, sondern erhalten auch Einblicke in die Funktionsweise der MediaWiki-Seitenleiste. Lassen Sie uns in diese praktische Verbesserung eintauchen. 🌟
Befehl | Anwendungsbeispiel |
---|---|
$wgHooks['SkinBuildSidebar'][] | Dieser Befehl registriert einen benutzerdefinierten Hook in MediaWiki, der es ermöglicht, die Seitenleistenstruktur während des Renderns zu ändern. Es ist speziell für die dynamische Anpassung von Navigationsmenüs gedacht. |
$skin->$skin->msg() | Ruft lokalisierte Nachrichten oder Links in MediaWiki ab. In diesem Zusammenhang ruft es mithilfe der integrierten Spracheinstellungen dynamisch die URL für die Funktion „Druckbare Version“ ab. |
document.addEventListener('DOMContentLoaded') | Stellt sicher, dass die JavaScript-Logik erst ausgeführt wird, nachdem das DOM vollständig geladen ist, was für die dynamische Änderung eines vorhandenen Navigationsmenüs von entscheidender Bedeutung ist. |
document.createElement() | Erstellt neue HTML-Elemente wie li- und a-Tags, die dynamisch zum Navigationsmenü in der Front-End-Lösung hinzugefügt werden. |
arrayHasKey | Wird in Komponententests verwendet, um zu überprüfen, ob ein bestimmter Schlüssel in einem Array vorhanden ist, um sicherzustellen, dass die Option „Druckbare Version“ korrekt zur Seitenleistenstruktur hinzugefügt wurde. |
if (!defined('MEDIAWIKI')) | Stellt sicher, dass das Skript innerhalb des MediaWiki-Frameworks ausgeführt wird, und verhindert so eine unbefugte oder eigenständige Ausführung. |
$GLOBALS['wgHooks'] | Greift auf globale Hooks in MediaWiki zu und ermöglicht es Entwicklern, an bestimmten Punkten im Lebenszyklus der Anwendung dynamisch Funktionen hinzuzufügen oder zu ändern. |
link.href | Legt die URL eines neu erstellten Hyperlinks dynamisch in JavaScript fest und fügt Abfrageparameter wie ?printable=yes hinzu, um die druckbare Version zu aktivieren. |
SkinBuildSidebar | Ein spezieller MediaWiki-Hook, der die direkte Manipulation der Seitenleistenelemente ermöglicht und ihn daher für das Hinzufügen neuer Links oder Menüelemente äußerst relevant macht. |
TestCase::createMock() | Erstellt Scheinobjekte für Unit-Tests und simuliert die Skin-Klasse von MediaWiki, um Änderungen an der Seitenleiste zu validieren, ohne dass eine vollständige MediaWiki-Instanz erforderlich ist. |
So passen Sie das MediaWiki-Navigationsmenü an
Die oben bereitgestellten Skripte konzentrieren sich auf die Verbesserung des MediaWiki-Navigationsmenüs durch das Hinzufügen einer Option „Druckbare Version“ unter dem Link „Zufällige Seite“. Diese Änderung kann durch Backend-Anpassung mithilfe von Hooks oder Frontend-Skripting mit JavaScript erreicht werden. Das PHP-Skript nutzt beispielsweise die Array und den „SkinBuildSidebar“-Hook, um dynamisch ein neues Navigationselement einzufügen. Dieser Ansatz stellt sicher, dass sich die Ergänzung nahtlos in die bestehende Seitenleistenstruktur einfügt und sich an verschiedene Skins wie das Timeless-Theme anpasst. 🖥️
Die Frontend-JavaScript-Lösung bietet eine dynamischere Alternative und zielt auf das Navigationsmenü ab, nachdem das DOM vollständig geladen wurde. Durch die Verwendung von Befehlen wie und das Anhängen neu erstellter Listenelemente an das Navigationsmenü erfordert diese Methode keine Änderung des Backend-Codes. Beispielsweise könnte ein Universitäts-Wiki schnell die Funktion „Druckversion“ für Studenten bereitstellen, die auf Kursmaterialien zugreifen, und so eine minimale Unterbrechung der Live-Site gewährleisten. Diese Flexibilität macht es ideal für Situationen, in denen der Backend-Zugriff eingeschränkt oder nicht verfügbar ist. 📄
Ein weiterer wichtiger Aspekt der bereitgestellten Skripte ist ihre Modularität und der Fokus auf Best Practices. Das PHP-Skript beinhaltet eine Fehlerbehandlung, um sicherzustellen, dass es nur innerhalb des MediaWiki-Frameworks ausgeführt wird. In ähnlicher Weise überprüft die JavaScript-Logik das Vorhandensein des Navigationsmenüs, bevor versucht wird, es zu ändern, wodurch das Risiko von Laufzeitfehlern verringert wird. Beispielsweise ist in einem Unternehmens-Wiki die Sicherstellung der Zuverlässigkeit von entscheidender Bedeutung, da die Seitenleiste häufig als zentraler Navigationspunkt für Mitarbeiter dient, die auf Projektdokumente oder Berichte zugreifen.
Die Unit-Tests ergänzen die Skripte, indem sie überprüfen, ob der Link „Druckbare Version“ in verschiedenen Szenarien korrekt hinzugefügt wird. Durch die Simulation der MediaWiki-Umgebung mithilfe von Scheinobjekten stellen diese Tests sicher, dass die Lösung in verschiedenen Konfigurationen funktioniert. Dieser Testprozess ist besonders wertvoll für Entwickler, die mehrere Wikis verwalten, da er einen Schutz vor Bereitstellungsproblemen bietet. Letztendlich bieten die Skripte vielseitige Methoden, um die MediaWiki-Navigation mit optimaler Leistung und Zuverlässigkeit zu verbessern, sei es durch PHP-Backend-Hooks, Frontend-JavaScript oder robuste Unit-Tests. 🌟
Hinzufügen einer Option „Druckbare Version“ in der MediaWiki-Navigation
Serverseitiges Skript zum Ändern der MediaWiki-Sidebar-Konfiguration mit PHP.
//php
// Load MediaWiki's core files
if ( !defined( 'MEDIAWIKI' ) ) {
die( 'This script must be run from within MediaWiki.' );
}
// Hook into the Sidebar generation
$wgHooks['SkinBuildSidebar'][] = function ( &$sidebar, $skin ) {
// Add the "Printable version" link below "Random page"
$sidebar['navigation'][] = [
'text' => 'Printable version',
'href' => $skin->msg( 'printable' )->inContentLanguage()->text(),
'id' => 'n-printable-version'
];
return true;
};
// Save this script in a custom extension or LocalSettings.php
//
Verwenden der MediaWiki-Seitenleistenkonfiguration zum Hinzufügen neuer Links
Manuelle Methode zum Bearbeiten der MediaWiki:Sidebar-Seite im Timeless-Design.
* navigation
mainpage|mainpage-description
recentchanges-url|recentchanges
randompage-url|randompage
printable-version|Printable version
* SEARCH
* TOOLBOX
// Save changes in the MediaWiki:Sidebar special page.
// Ensure "printable-version" message key is properly defined.
Dynamische Front-End-JavaScript-Lösung
Clientseitiges Skript, das JavaScript verwendet, um die Option „Druckbare Version“ dynamisch hinzuzufügen.
document.addEventListener('DOMContentLoaded', function () {
const navList = document.querySelector('.mw-portlet-navigation ul');
if (navList) {
const printableItem = document.createElement('li');
printableItem.id = 'n-printable-version';
const link = document.createElement('a');
link.href = window.location.href + '?printable=yes';
link.textContent = 'Printable version';
printableItem.appendChild(link);
navList.appendChild(printableItem);
}
});
Unit-Tests für Sidebar-Änderungen
PHP-Unit-Tests zur Validierung der „Druckversion“-Integration im Backend.
use PHPUnit\Framework\TestCase;
class SidebarTest extends TestCase {
public function testPrintableVersionLinkExists() {
$sidebar = []; // Simulate Sidebar data structure
$skinMock = $this->createMock(Skin::class);
$callback = $GLOBALS['wgHooks']['SkinBuildSidebar'][0];
$this->assertTrue($callback($sidebar, $skinMock));
$this->assertArrayHasKey('Printable version', $sidebar['navigation']);
}
}
// Run using PHPUnit to ensure robust testing.
Erweiterung von MediaWiki mit erweiterten Anpassungen
Das Hinzufügen benutzerdefinierter Funktionen zu einer MediaWiki-Instanz kann über einfache Änderungen im Navigationsmenü hinausgehen. Beispielsweise suchen Administratoren häufig nach Möglichkeiten, die Funktionalität für bestimmte Benutzeranforderungen zu verbessern, beispielsweise durch die Integration von Exportoptionen oder die Anpassung von Layouts basierend auf Benutzerrollen. Diese Verbesserungen, einschließlich der Hinzufügung einer „druckbaren Version“, sind entscheidend, um Wikis dynamischer und benutzerfreundlicher zu machen. Die Integration neuer Links in die kann auf die individuellen Anforderungen eines Hochschulportals oder einer unternehmensinternen Dokumentation zugeschnitten werden.
Ein Bereich, der es wert ist, erkundet zu werden, ist die Lokalisierung neu hinzugefügter Menüoptionen. Wenn Sie beispielsweise sicherstellen, dass die Bezeichnung „Druckversion“ dynamisch basierend auf den Sprachpräferenzen des Benutzers übersetzt wird, wird eine Ebene der Inklusivität hinzugefügt. Mithilfe der integrierten Lokalisierungsmethoden von MediaWiki, z ermöglicht es Entwicklern, ihre Anpassungen an den globalen Standards von MediaWiki auszurichten. Dies ist besonders nützlich in multinationalen Organisationen, in denen Mitarbeiter oder Mitwirkende in mehreren Sprachen auf das Wiki zugreifen. 🌍
Ein weiterer wichtiger Gesichtspunkt ist die Interaktion zwischen Anpassungen und dem ausgewählten MediaWiki-Thema. Der verwendet beispielsweise eine einzigartige Struktur, die ein gründliches Testen aller Änderungen erfordert, um die Kompatibilität sicherzustellen. Beispielsweise könnte ein optisch hervorstechendes Navigationselement wie „Druckversion“ zusätzliche CSS-Anpassungen erfordern, um sein Erscheinungsbild auf allen Geräten beizubehalten. Diese nuancierten Modifikationen sorgen dafür, dass die Benutzeroberfläche unabhängig vom Gerät oder der Bildschirmgröße des Benutzers intuitiv und professionell bleibt. 📱
- Wie kann ich die MediaWiki-Seitenleiste bearbeiten?
- Sie können die Seitenleiste bearbeiten, indem Sie die Seite MediaWiki:Sidebar ändern. Verwenden Sie Befehle wie Und um neue Links zu definieren.
- Was ist das Thema „Zeitlos“ und welche Auswirkungen hat es auf die Individualisierung?
- Das Timeless-Theme ist ein moderner MediaWiki-Skin mit responsivem Design. Anpassungen wie Änderungen an der Seitenleiste erfordern möglicherweise zusätzliche Tests, um sicherzustellen, dass sie korrekt angezeigt werden.
- Ist es möglich, eine Lokalisierung für neue Seitenleistenoptionen hinzuzufügen?
- Ja, Sie können es verwenden um lokalisierte Beschriftungen für Ihre Menüpunkte abzurufen und so die Kompatibilität mit mehrsprachigen Wikis sicherzustellen.
- Kann ich neue Funktionen hinzufügen, ohne den Backend-Code zu ändern?
- Ja, Frontend-JavaScript-Lösungen mögen die Verwendung ermöglichen Ihnen das dynamische Hinzufügen von Links oder Funktionen ohne Backend-Änderungen.
- Wie teste ich neue Seitenleistenfunktionen?
- Simulieren Sie mithilfe von PHP-Unit-Tests oder einem Test-Framework wie PHPUnit Änderungen an der Seitenleiste, um sicherzustellen, dass sie wie erwartet funktionieren.
Das Hinzufügen der Option „Druckversion“ zur MediaWiki-Navigation erhöht die Benutzerfreundlichkeit und Organisation Ihres Wikis. Mit den hier beschriebenen Ansätzen, von PHP-Skripten bis hin zu JavaScript, ist die Anpassung für alle Administratoren zugänglich und effektiv.
Durch die Priorisierung der Lokalisierung und Themenkompatibilität wird Ihr Wiki zu einer zuverlässigen Ressource für unterschiedliche Zielgruppen. Diese Verbesserungen verbessern nicht nur die Funktionalität, sondern sorgen auch für ein benutzerfreundliches Erlebnis und spiegeln eine gut gepflegte und zugängliche Plattform wider. 🌟
- Offizielle MediaWiki-Dokumentation zur Seitenleistenanpassung: MediaWiki-Sidebar-Handbuch
- Community-Diskussion und Beispiele für Timeless-Themenkonfigurationen: Zeitloses MediaWiki-Theme
- Beispielbild zur Veranschaulichung des Navigationsmenü-Layouts: Beispiel für ein Navigationsmenü
- PHP-Dokumentation für Hooks und Erweiterungen: PHP-Handbuch