emkiset.ru

Hoe maak je een MediaWiki-skin helemaal opnieuw

Veel sites gebruiken MediaWiki-software en wikiHow is daar een van! Zoals je kunt zien, hoewel MediaWiki al een set met skin klaar voor gebruik heeft, besluiten veel sites, zoals wikiHow, om hun eigen skin te maken om de site een unieke look te geven. Er zijn veel manieren om het uiterlijk van een site aan te passen op basis van MediaWiki en allemaal met betrekking tot skins. Normaal gesproken is het voor veel personalisatieniveaus niet nodig om vanaf nul een nieuwe skin te maken. In andere gevallen is het voldoende om een ​​reeds bestaande skin aan te passen aan de behoeften van elke skin. Als je echter een radicale verandering in het ontwerp van de wiki wilt aanbrengen, is het nodig om je eigen skin helemaal zelf te maken. Dit artikel zal u begeleiden zodat u dit op een georganiseerde, eenvoudige en systematische manier kunt doen.

Voor demonstratiedoeleinden gaat het artikel ervan uit dat uw nieuwe skin een naam krijgt TrialSkin. U moet alle verwijzingen naar "TrialSkin" vervangen door de naam van uw skin.

stappen

1
Maak de basis bestandsstructuur die nodig is voor je nieuwe skin. Dit omvat het maken van de volgende bestanden en mappen (die allemaal aan de map moeten worden toegevoegd) skins van je MediaWiki-installatie):
  • Een TrialSkin.php-bestand. Hier plaatst u het grootste deel van de code en definieert u het ontwerp van de pagina`s.
  • Een TrialSkin.deps.php-bestand. Dit is een standaardbestand dat waarschijnlijk dezelfde code bevat. Het is gemaakt om elk probleem met het PHP-bestand op te lossen.
  • De trialskin-map. In deze map worden de overige bestanden met betrekking tot uw skin, inclusief stylesheets en afbeeldingen, opgeslagen.
  • Een bestand /skins/trialskin/main.css, dat het hoofdstijlblad voor de skin zal bevatten. Dit bestand is optioneel, maar het is zeer waarschijnlijk dat u het moet gebruiken.
  • Browser-specifieke sheetbestanden voor de reparatiestijl, zoals /skins/trialskin/IE60Fixes.css. Deze bestanden zijn optioneel, maar het wordt aanbevolen om ze te gebruiken.
  • 2
    Voeg de initialisatiecode toe zoals verderop in de subsectie "Initialisatiecode" van dit artikel wordt toegelicht. vervangt TrialSkin door de naam van je huid en trialskin naar de naam van je huid nadat je alle letters in kleine letters hebt omgezet.
  • 3
    Voeg de code toe "Lijst met vaste categorieën" zoals getoond in de overeenkomstige subparagraaf van dit artikel.
  • 4
    Definieert de functie execute (), die wordt aangeroepen om de inhoud van de pagina`s in de browsers van de clients uit te voeren.
  • 5
    Declareer de globale variabele $ wgUser in de functie execute () en gebruik de methode getSkin () om een ​​object of variabele $ skin te krijgen. Je hebt zeker die variabele nodig. Als u het echter niet nodig hebt, hoeft u deze stap niet uit te voeren. U vindt een typisch voorbeeld over hoe de functie execute () moet worden verklaard met de meest gebruikte code in de subsectie "Declaration of the function execute ()".
  • 6
    Begin met het toevoegen van code (zowel PHP als XHTML) om pagina`s in uw wiki te maken. Zelfs in het geval dat u een radicale verandering in het ontwerp wilt aanbrengen, moet u hoogstwaarschijnlijk dezelfde set gegevens maken die normale skins gebruiken (misschien met enkele wijzigingen). De meest voorkomende elementen, componenten en blokken voor een pagina zijn (zie de overeenkomstige subsecties voor meer details of voorbeeldcodes):
  • De XHTML-code die de HTML-uitvoer opent en vervolgens sluit die naar de browser van de client wordt verzonden
  • Het header-element, dat stijlbladen, scripts importeert, definieert de metadata van de pagina en bepaalt de titel die moet worden weergegeven in de titelbalk van de browser voor de specifieke pagina die wordt bekeken.
  • Het label dat het begin van het lichaam aangeeft. Met deze tag wordt het hoofdgedeelte van de pagina geopend en wordt aangegeven wat er gebeurt wanneer de pagina wordt geladen of erop wordt geklikt, als die handler bestaat.
  • Het naamblok van de site
  • Het beeld van het sitelogo
  • De slogan van de site
  • Site kennisblok
  • Berichtenblok voor gebruikersberichten (indien nodig)
  • De werkbalk van de gebruiker
  • Navigatieblok binnen de pagina
  • zoeken
  • Toolbox
  • Taal links
  • Naam van de pagina
  • Ondertitel van de pagina
  • Pagina herstel melding
  • Inhoud van de pagina
  • Categorie koppelingen
  • Werkbalk van de pagina
  • footer
  • Code sluiten
  • Methode 1

    Initialisatiecode

    Vervang SkinTrialSkin door de huidThe Name of Your Skin, trialskin by thetupielname en TrialSkinTemplate by TemplateDe naam van je huid.

     SkinName = `trialskin` - $ this-> styleName = `trialskin` - $ this-> template = `TrialSkinTemplate` -}} class TrialSkinTemplate breidt QuickTemplate {// andere delen van de code worden toegevoegd aan het lichaam van deze soort

    Methode 2

    Fix-code voor categorielijst
    • Kopieer en plak de volgende code in de body van de sjabloonklasse (TrialSkinTemplate voor dit voorbeeld), bij voorkeur na de initialisatiecode.
    / * Categorie functies worden verkregen om een ​​passende lijst * / functie getCategories create () {$ catlinks = $ this-> getCategoryLinks () - als (empty ($ catlinks)) {return "{$ catlinks}" -} } function getCategoryLinks () {global $ wgOut, $ wgUser, $ wgTitle, $ wgUseCategoryBrowser-global $ wgContLang-if (count ($ wgOut-> mCategoryLinks) == 0) return `` - $ huid = $ wgUser-> getSkin ( ) - # separator $ september = "" - // Unicode bidi gebouwd met behulp van overlay tekens // om ervoor te zorgen dat de banden niet raken elkaar zo slordig $ dir = $ wgContLang-> isRTL ()? `rtl`: `ltr` - $ embed = "
  • mCategoryLinks) $ pop- $ msg = wfMsgExt (. `Pagecategories` array ( `parsemag`, `escape`), tel ($ wgOut-> mCategoryLinks)) -. $ s = $ huid-> makeLinkObj (titel :: newFromText (wfMsgForContent ( `pagecategorieslink`)), $ msg) $ t- # categorisering vergelijkbaar met dmoz verbindingen (optioneel), wordt hieronder # lijst met categorieën waaraan een artikel if ($ wgUseCategoryBrowser) {$ s behoort getoond. = `

    `- # krijgt een grote boom onder ouder $ parenttree = $ wgTitle-> getParentCategoryTree () - # de huid object wordt doorgegeven aan de hand en die niet kunnen worden geopend binnen de methode # deelfunctie drawCategoryBrowser $ tempout = explode ( " n "Skin :: drawCategoryBrowser ($ parenttree, $ this)) - # reinig de eerste dummy binnenkomst en orders unset ($ tempout [0]) - asort ($ tempout) - # getoond door lijn = $ s. implode ("
    n ", $ tempout) -} return $ s-}
  • Methode 3

    Code van de hoofdmethode execute ()
    • Als u de regels niet gebruikt die $ wgUser, $ wgSitename en $ skin declareren, kunt u deze verwijderen.
    UITVOEREN function () {// verklaring van globale variabelen en het verkrijgen van de huid object in het geval dat u nodig hebt om het te gebruiken tardeglobal $ wgUser, wgSitename- $ $ $ wgUser- huid => getSkin () - // $ sitenaam herstelt this-> set ( `sitename` $ wgSitename) - // waarschuwingen worden onderdrukt tot het indexeren waarschuwingen over verlies van $ this-> datawfSuppressWarnings () te voorkomen -

    Methode 4

    Code van de structuur Hoofd XHTML
    • Openingscode Hier vertelt u de skin om de HTML-tag uit te voeren en alle benodigde XHTML-naamruimten te declareren. De volgende code is een typische verklaring die u kunt aanpassen als u wilt, maar het is waarschijnlijk niet nodig.
    ?> data [`xhtmlnamespaces`] als $ tag => $ ns) {?> xmlns: text (`lang`)?> "lang =" text (`lang`)?> "dir =" text (`dir`)?>
    • Het header-element. Hier voert u het header-element uit met alle bijbehorende inhoud. Dit omvat koppelingen naar stylesheets, client side scripts en metadata voor robots en browsers. De code die hier is opgenomen, is een standaardcode die u mogelijk moet wijzigen om elk aangepast script of stijlblad op te nemen dat u wilt.
    • Om deze code naar behoren te laten werken, moet u over de volgende bestanden beschikken (als u ze niet nodig hebt, kunt u de regels verwijderen waarin een van deze stijlpagina`s is geïmporteerd):
    • /common/commonPrint.css. Stijlpagina voor het afdrukken van pagina`s. Als u de standaardafdrukstijlpagina niet wilt gebruiken, kunt u het pad wijzigen waar het zich bevindt.
    • main.css, contents.css. De belangrijkste stijlpagina`s voor uw huid. Deze zouden in je skin directory moeten staan ​​(/ skins / trialskin in dit voorbeeld)
    • handheld.css. Een stylesheet die kan worden gebruikt met draagbare apparaten.
    • IE50Fixes.css, IE55Fixes.css, IE60Fixes.css, IE70Fixes.css. Regelingen voor verschillende browsers. U kunt deze bestanden kopiëren van die van een bestaande skin, omdat u waarschijnlijk niets hoeft te wijzigen.
    • De laatste regels, beginnend in / *** Verschillende scripts en stijlen gerelateerd aan MediaWiki *** / "bevatten stijlbladen die specifiek zijn voor de gebruiker, de pagina en de breedte van de pagina. Als u deze functies niet gaat gebruiken, hoeft u alleen maar alles te verwijderen dat zich boven de opmerking bevindt .
    • Het is waargenomen dat de aanroep $ this-> html (`headscripts`) in sommige gevallen tot fouten leidt, dus als iets niet goed werkt, probeer het dan te verwijderen.
    • Als de code om een ​​of andere reden niet correct werkt, kunt u deze code volledig verlaten en uw eigen code schrijven, inclusief de links naar stylesheets, scripts en de title-tag, helemaal alleen!
    • tekst (`mimetype`)?> - charset =tekst (`charset`)?> "/> html (`headlinks`)?><? php $ this-> text (`pagetitle`)?>data [`printable`])) {?> media = "print" text (`stylepath`)?> / common / commonPrint.css? data) -?> data [`jsvarurl`]) {?> data [`pagecss`]) {?> data [`usercss`]) {?> data [`userjs`]) {?> data [`userjsprev`]) {?> data [`trackbackhtml`] print $ this-> data [`trackbackhtml`] -?> html (`headscripts`)?>
      • Het openingsetiket van het lichaam. Maak het openingslabel van het lichaam. De kans is groot dat je dit niet hoeft te wijzigen tenzij je de bodystijl op het label wilt coderen.
      data [`body_ondblclick`]) {?> ondblclick = " text (`body_ondblclick`)?> " data [`body_onload`]) {?> onload = " text (`body_onload`)?> " text (`nsclass`)?>  text (`dir`)?>  text (`pageclass`)?>
      • Code sluiten. Dit wordt toegevoegd aan het einde van het bestand. Sluit elke tag, script of php-code die open is. Alle volgende code moet hier voor worden geplaatst, dit moet de laatste regel van het skinbestand zijn.


       html (`bottomscripts`) - / * JS calls runBodyonloadHook * /?> html (`reporttime`)?> data [`debug`]):?>

      Methode 5

      Algemene elementen van de sitecode
      • Let op het gebruik van $ this-> text ($ msg) en $ this-> html ($ msg). Ze zullen veel op de huid worden gebruikt.
      • Naam van de site:
       text (`sitename`)?>
      • Afbeelding van het sitelogo
    • Blokkering gebruikersbericht:
  • Navigatieblok binnen de pagina (optioneel):



  • msg (`jumpto`)?> msg (`jumptonavigation`)?>, msg (`jumptosearch`)?>
    Methode 6Algemene elementen van de paginacode
    • Naam van de pagina:
    • Ondertitel van de pagina:
    html (`subtitle`)?>
    • Inhoud van de pagina:
     html (`bodytext`)?>
    • Categorie koppelingen:
     data [`catlinks`]) {?>
    html (`catlinks`)?>
  • Voettekst. Deze code is iteratief, dus je moet voorzichtig zijn wanneer je het kopieert!
  • data [`poweredbyico`]) {?>
    html (`poweredbyico`)?>
    data [`copyrightico`]) {?>
    html (`copyright`)?>
    data [$ aLink]) $ this-> data [$ aLink]) {?> html ($ aLink)?>

    Methode 7

    Code van gemeenschappelijke werkbalken
    • Gebruikerswerkbalk Met deze code worden de navigatielinks van de gebruiker gemaakt, zoals de pagina van de gebruiker, de discussiepagina, de sessie-afsluitkoppeling, enzovoort.
    msg (`personaltools`)?>
      data [`personal_urls`] als $ key => $ item) {?> tooltipAndAccesskey (`pt -`. $ key)?>
    • Werkbalk van de pagina. Deze code bevat de koppelingen voor bewerken, maken en discussiëren, samen met andere, afhankelijk van de groep van de gebruiker.
    msg (`views`)?>
      data [`content_actions`] als $ key => $ tab) {?> tooltipAndAccesskey (`ca -`. $ key)?>
    • Kennisgeving van herstel van de pagina. Als de pagina eerder is verwijderd en de gebruiker de pagina`s kan ophalen, moet deze link worden weergegeven (als u kiest)
     data [`undelete`]) {?>
    html (`undelete`)?>
    Methode 8Portlets (hoofdnavigatieblokken)
    • Zoekportlet (de zoekbalk). Dit is een implementatie met de minimale inhoud die alleen laat zien wat er moet gebeuren om de zoekbalk te laten werken.
    • Toolbar-portlet:
    msg (`toolbox`)?>
    • Taal links
     data [`language_urls`]) {?>
    msg (`otherlanguages`)?>
      data [`language_urls`] als $ langlink) {?>

    waarschuwingen

    • Maak altijd een back-up van de database, de installatiemap en andere elementen die gerelateerd zijn aan uw MediaWiki voordat u uw nieuwe skin gaat maken of wijzigen.
    • Deze procedure moet worden uitgevoerd door iemand (of op zijn minst door iemand onder toezicht) die een gematigde kennis heeft van de MediaWiki-software en de PHP-taal. Fouten in de code kunnen fouten en onverwachte resultaten genereren.

    tips

    • Naarmate uw code groeit, kan het handig zijn om een ​​deel ervan in een ander bestand te scheiden en vervolgens in het hoofdbestand van uw skin op te nemen.
    • U kunt afzonderlijke functies gebruiken om specifieke delen van de interface te maken. Dit is vooral handig voor partijen die een grote hoeveelheid code nodig hebben en van uw kant aanpassingen nodig hebben.
    • Het kan handig zijn om een ​​skin met de minimale inhoud te implementeren en deze vervolgens te gebruiken als basisklasse voor de rest van je skins.
    • Alle code die in dit artikel wordt weergegeven, biedt een minimale standaardimplementatie. Het is bedoeld om de lezer te laten zien hoe informatie uit de skin template-klasse kan worden gehaald en wat te overwegen bij elk stukje informatie. U kunt (en zal zeker) de standaardgedragingen wijzigen die in deze implementatie zijn opgenomen.
    Delen op sociale netwerken:

    Verwant
    Hoe u uw huid ziet veranderen in Minecraft PEHoe u uw huid ziet veranderen in Minecraft PE
    Hoe een Mineshafter skin te ladenHoe een Mineshafter skin te laden
    Hoe `skins` te krijgen in MinecraftHoe `skins` te krijgen in Minecraft
    Hoe maak je je eigen huid uiterlijk in MinecraftHoe maak je je eigen huid uiterlijk in Minecraft
    Hoe een Wiki te installeren in minder dan 20 minutenHoe een Wiki te installeren in minder dan 20 minuten
    Hoe zich te ontdoen van de droge huid onder je neusHoe zich te ontdoen van de droge huid onder je neus
    Hoe maak je een huid tonicHoe maak je een huid tonic
    Hoe je je huid zacht en delicaat kunt houden met honingHoe je je huid zacht en delicaat kunt houden met honing
    Hoe een dood dier te villenHoe een dood dier te villen
    Zonnebrand verwijderen (voor Indiase huidtypes)Zonnebrand verwijderen (voor Indiase huidtypes)
    » » Hoe maak je een MediaWiki-skin helemaal opnieuw
    © 2021 emkiset.ru