Hur man lägger till "Utskriftsbar version" till MediaWikis navigeringsmeny

Hur man lägger till Utskriftsbar version till MediaWikis navigeringsmeny
Hur man lägger till Utskriftsbar version till MediaWikis navigeringsmeny

Förbättra din MediaWiki-navigeringsmeny

Att anpassa din MediaWiki-navigeringsmeny kan förbättra användarupplevelsen avsevärt, vilket möjliggör mer tillgängliga och funktionella verktyg. Om du kör MediaWiki 1.39 med temat Timeless kan du tycka att det är svårt att lägga till specifika alternativ som "Utskrivbar version." Denna uppgift är inte okomplicerad på grund av de unika konfigurationerna av sidofältsmenyn.

Ett vanligt mål bland administratörer är att ge användare ett snabbt sätt att komma åt utskrivbara sidor. Den här funktionen är viktig för miljöer där offline- eller pappersmaterial ofta refereras, till exempel akademiska eller företagswikis. Men många tycker att processen är mindre intuitiv än förväntat. 🖨️

I den här guiden kommer vi att utforska hur du infogar länken "Utskrivbar version" i navigeringsmenyn, specifikt under alternativet "Slumpmässig sida". Att använda MediaWiki:Sidofältet för ändringar kräver en gedigen förståelse för dess syntax och beteende inom det tidlösa temat.

Om du har fastnat eller stöter på problem, oroa dig inte! I slutet av den här genomgången kommer du inte bara att veta hur du implementerar förändringen utan också få insikter om hur MediaWikis sidofält fungerar. Låt oss dyka in i denna praktiska förbättring. 🌟

Kommando Exempel på användning
$wgHooks['SkinBuildSidebar'][] Detta kommando registrerar en anpassad hook i MediaWiki som gör det möjligt att ändra sidofältsstrukturen under dess rendering. Det är specifikt för att anpassa navigeringsmenyer dynamiskt.
$skin->$skin->msg() Hämtar lokaliserade meddelanden eller länkar i MediaWiki. I detta sammanhang hämtar den dynamiskt URL:en för funktionen "Utskrivbar version" med hjälp av inbyggda språkinställningar.
document.addEventListener('DOMContentLoaded') Säkerställer att JavaScript-logiken körs först efter att DOM är helt laddat, vilket är avgörande för att dynamiskt ändra en befintlig navigeringsmeny.
document.createElement() Skapar nya HTML-element, såsom li och a-taggar, som läggs till i navigeringsmenyn dynamiskt i front-end-lösningen.
arrayHasKey Används i enhetstester för att verifiera om en viss nyckel finns i en array, vilket säkerställer att alternativet "Utskrivbar version" har lagts till i sidofältsstrukturen på rätt sätt.
if (!defined('MEDIAWIKI')) Säkerställer att skriptet körs inom MediaWiki-ramverket, vilket förhindrar obehörig eller fristående exekvering.
$GLOBALS['wgHooks'] Får åtkomst till globala krokar inom MediaWiki, vilket gör det möjligt för utvecklare att lägga till eller ändra funktionalitet dynamiskt vid specifika punkter i applikationens livscykel.
link.href Ställer in URL:en för en nyskapad hyperlänk dynamiskt i JavaScript, och lägger till frågeparametrar som ?printable=yes för att aktivera den utskrivbara versionen.
SkinBuildSidebar En specifik MediaWiki-krok som tillåter direkt manipulering av sidofältselementen, vilket gör den mycket relevant för att lägga till nya länkar eller menyalternativ.
TestCase::createMock() Skapar skenobjekt för enhetstestning, simulerar MediaWikis Skin-klass för att validera sidofältsändringar utan att kräva en fullständig MediaWiki-instans.

Hur man anpassar MediaWiki-navigeringsmenyn

Skripten ovan fokuserar på att förbättra MediaWiki-navigeringsmenyn genom att lägga till ett "Utskrivbar version"-alternativ under länken "Slumpmässig sida". Denna modifiering kan uppnås genom backend-anpassning med hjälp av hooks eller frontend-skript med JavaScript. Till exempel använder PHP-skriptet $wgHooks array och "SkinBuildSidebar"-kroken för att dynamiskt infoga ett nytt navigeringsobjekt. Detta tillvägagångssätt säkerställer att tillägget integreras sömlöst med den befintliga sidofältsstrukturen och anpassar sig till olika skal som Timeless-temat. 🖥️

Frontend JavaScript-lösningen ger ett mer dynamiskt alternativ, inriktad på navigeringsmenyn efter att DOM har laddats helt. Genom att använda kommandon som document.createElement och genom att lägga till nyskapade listobjekt till navigeringsmenyn, kräver denna metod inte modifiering av backend-koden. Till exempel kan en universitetswiki snabbt distribuera funktionen "Utskrivbar version" för studenter som får tillgång till kursmaterial, vilket säkerställer minimala störningar på live-webbplatsen. Denna flexibilitet gör den idealisk för situationer där backend-åtkomst är begränsad eller otillgänglig. 📄

En annan viktig aspekt av de tillhandahållna skripten är deras modularitet och fokus på bästa praxis. PHP-skriptet inkluderar felhantering för att säkerställa att det bara körs inom MediaWiki-ramverket. På liknande sätt validerar JavaScript-logiken närvaron av navigeringsmenyn innan man försöker ändra den, vilket minskar risken för körtidsfel. Till exempel i en företagswiki är det avgörande att säkerställa tillförlitlighet eftersom sidofältet ofta är ett centralt navigeringsnav för anställda som kommer åt projektdokument eller rapporter.

Enhetstesten kompletterar skripten genom att verifiera att länken "Utskrivbar version" är korrekt tillagd i olika scenarier. Genom att simulera MediaWiki-miljön med hjälp av skenobjekt säkerställer dessa tester att lösningen fungerar över olika konfigurationer. Denna testprocess är särskilt värdefull för utvecklare som hanterar flera wikis, eftersom den ger ett skydd mot distributionsproblem. I slutändan, oavsett om det är genom PHP-backend-hooks, frontend-JavaScript eller robust enhetstestning, erbjuder skripten mångsidiga metoder för att förbättra MediaWiki-navigeringen med optimal prestanda och tillförlitlighet. 🌟

Lägga till ett "Utskrivbar version"-alternativ i MediaWiki Navigation

Server-side script för att ändra MediaWiki Sidebar-konfigurationen med 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
?>

Använda MediaWiki Sidebar Configuration för att lägga till nya länkar

Manuell metod för att redigera MediaWiki:Sidebar-sidan i temat Timeless.

* 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.

Dynamisk front-end JavaScript-lösning

Skript på klientsidan som använder JavaScript för att dynamiskt lägga till alternativet "Utskrivbar version".

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);
    }
});

Enhetstest för sidofältsändringar

PHP Unit testar för att validera "Utskriftsbar version"-integrationen på 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.

Förbättra MediaWiki med avancerade anpassningar

Att lägga till anpassade funktioner till en MediaWiki-instans kan gå längre än enkla modifieringar av navigeringsmenyn. Till exempel söker administratörer ofta sätt att förbättra funktionaliteten för specifika användarbehov, som att integrera exportalternativ eller anpassa layouter baserat på användarroller. Dessa förbättringar, inklusive att lägga till en "utskrivbar version", är avgörande för att göra wikis mer dynamiska och användarvänliga. Integreringen av nya länkar i MediaWiki sidofält kan skräddarsys för att matcha de unika kraven på en universitetsportal eller intern företagsdokumentation.

Ett område som är värt att utforska är lokaliseringen av nyligen tillagda menyalternativ. Att till exempel se till att etiketten "Utskrivbar version" översätts dynamiskt baserat på användarens språkinställningar ger ett lager av inkludering. Att använda MediaWikis inbyggda lokaliseringsmetoder, som t.ex $skin->msg(), tillåter utvecklare att anpassa sina anpassningar till MediaWikis globala standarder. Detta är särskilt användbart i multinationella organisationer där anställda eller bidragsgivare får tillgång till wikin på flera språk. 🌍

En annan viktig faktor är interaktionen mellan anpassningar och det valda MediaWiki-temat. De Tidlöst tema, till exempel, använder en unik struktur som kräver att alla ändringar testas noggrant för att säkerställa kompatibilitet. Till exempel kan ett visuellt framträdande navigeringselement som "Utskrivbar version" behöva ytterligare CSS-justeringar för att behålla sitt utseende på alla enheter. Dessa nyanserade ändringar säkerställer att gränssnittet förblir intuitivt och professionellt oavsett användarens enhet eller skärmstorlek. 📱

Vanliga frågor om MediaWiki-anpassning

  1. Hur kan jag redigera MediaWiki sidofältet?
  2. Du kan redigera sidofältet genom att ändra MediaWiki:Sidofältssidan. Använd kommandon som * navigation och option|label för att definiera nya länkar.
  3. Vad är temat "Tidlöst" och hur påverkar det anpassningen?
  4. The Timeless-temat är ett modernt MediaWiki-skinn med en responsiv design. Anpassningar som sidofältsändringar kan kräva ytterligare testning för att säkerställa att de visas korrekt.
  5. Är det möjligt att lägga till lokalisering för nya sidofältsalternativ?
  6. Ja, du kan använda $skin->msg() för att hämta lokaliserade etiketter för dina menyalternativ, vilket säkerställer kompatibilitet med flerspråkiga wikis.
  7. Kan jag lägga till nya funktioner utan att ändra backend-koden?
  8. Ja, frontend JavaScript-lösningar som att använda document.createElement() låter dig lägga till länkar eller funktioner dynamiskt utan ändringar i backend.
  9. Hur testar jag nya sidofältsfunktioner?
  10. Använd PHP-enhetstester eller ett testramverk som PHPUnit, simulera sidofältsändringar för att säkerställa att de fungerar som förväntat.

Förfina din MediaWiki-navigering

Genom att lägga till alternativet "Utskrivbar version" i MediaWiki-navigeringen får du större användbarhet och organisation till din wiki. Med de metoder som beskrivs här, från PHP-skript till JavaScript, är anpassning tillgänglig och effektiv för alla administratörer.

Genom att prioritera lokalisering och temakompatibilitet blir din wiki en pålitlig resurs för olika målgrupper. Dessa förbättringar förbättrar inte bara funktionaliteten utan ger också en användarvänlig upplevelse, vilket återspeglar en väl underhållen och tillgänglig plattform. 🌟

Källor och referenser
  1. Officiell MediaWiki-dokumentation om anpassning av sidofältet: Manual för MediaWiki Sidebar
  2. Gemenskapsdiskussion och exempel på tidlösa temakonfigurationer: MediaWiki tidlöst tema
  3. Exempelbild som illustrerar navigeringsmenyns layout: Exempel på navigeringsmeny
  4. PHP-dokumentation för krokar och tillägg: PHP manual