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
- 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.
Methode 1
InitialisatiecodeVervang 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 = "
`- # 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!
- 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.
- 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.
- Let op het gebruik van $ this-> text ($ msg) en $ this-> html ($ msg). Ze zullen veel op de huid worden gebruikt.
- Naam van de site:
- Afbeelding van het sitelogo
- Site waarschuwingsblok. De inhoud van de inhoud van de site wordt normaal gesproken bewerkt en toegevoegd aan het bericht op de WikiMedia-pagina: Sitenotice.
- Blokkering gebruikersbericht:
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`)?>
data [`body_ondblclick`]) {?> ondblclick = " text (`body_ondblclick`)?> " data [`body_onload`]) {?> onload = " text (`body_onload`)?> " text (`nsclass`)?> text (`dir`)?> text (`pageclass`)?>
html (`bottomscripts`) - / * JS calls runBodyonloadHook * /?> html (`reporttime`)?> data [`debug`]):?>
Methode 5
Algemene elementen van de sitecodetext (`sitename`)?>
data [`sitenotice`]) {?>
data [`newtalk`]) {?>
data [`showjumplinks`]) {?>
- Naam van de pagina:
- Ondertitel van de pagina:
- Inhoud van de pagina:
html (`bodytext`)?>
- Categorie koppelingen:
data [`catlinks`]) {?>
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`]) {?>
- 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`)?>
- data [`notspecialpage`]) {?>
- tooltipAndAccesskey (`t-whatlinkshere`)?> msg (`whatlinkshere`)?> data [`nav_urls`] [`recentchangeslinked`]) {?>
- tooltipAndAccesskey (`t-recentchangeslinked`)?> msg (`recentchangeslinked`)?> data [`nav_urls`] [`trackbacklink`])) {?>
- tooltipAndAccesskey (`t-trackbacklink`)?> msg (`trackbacklink`)?> data [`feeds`]) {?>
- data [`feeds`] als $ key => $ feed) {?> tooltipAndAccesskey (`feed -`. $ key)?> - data [ `nav_urls`] [$ special]) { ?> tooltipAndAccesskey (`t -`. $ special)?> msg ($ special)?> data [ `nav_urls`] [ `print`] [ `href`])) {?>
- tooltipAndAccesskey (`t-print`)?> msg (`printableversion`)?> data [ `nav_urls`] [ `permalink`] [ `href`])) {?>
- tooltipAndAccesskey (`t-permalink`)?> msg (`permalink`)?> data [ `nav_urls`] [ `permalink`] [ `href`] === ``) {?> tooltip (`t-ispermalink`)?> msg (`permalink`)?>
- Taal links
data [`language_urls`]) {?>
msg (`otherlanguages`)?>
- data [`language_urls`] als $ langlink) {?>