Hogyan tegyük széppé a MediaWikit?
A produkciós Wikik (wikipedia.org, mediawiki.org) nagyon sok sablont, beszúrt színes táblázatot használnak, amelyek nem csak szépek, de használatukkal egyrészt az oldalak szerkesztése is gyorsabb, másrészt az olvasó is könnyebben megérti.
Ebben a szócikkben azt próbálom leírni, hogy miket csináltam én, hogy ez a Wiki így nézzen ki, ahogyan kinéz.
Tartalomjegyzék
Syntax highlighting
A MediaWikihez létezik egy GeSHi névre hallgató extension. Ezt kell feltelepíteni a linken található leírás alapján. (Ne felejtsük el az összes php file-t letölteni!)
Ha ezt megtettük, akkor az alábbi módon használhatjuk a kiterjesztést, pl. XML dokumentum kiemeléséhez:
<source lang="xml" <bekezdes id="1"> <text param="papparaparam">Helló világ</text> <kep source="file:///tmp/alma.png"/> </bekezdes> </source>
És ez így fog kinézni:
<bekezdes id="1">
<text param="papparaparam">Helló világ</text>
<kep source="file:///tmp/alma.png"/>
</bekezdes>
Szép táblázatok használata
A wikipedia tartalmaz egy ún. "széptáblázat" (más néven: wikitable, prettytable) sablont, amely közönséges táblázatok csinosítását végzi. Ehhez viszont szükségünk van néhány változtatásra a MediaWiki:Common.css file-ban.
- Elsőként készítsünk egy hivatkozást akárhová (pl. a saját lapunkra) ilyen néven: [[MediaWiki:Common.css]]. Ezt szerkeszteni csak sysopként fogjuk tudni. Puskázzunk például a WikiMedia oldaláról!
- Mentsük el.
- Készítsünk egy sablont ilyen néven: Template:Wikitable ([[Template:Wikitable]])
- Készítsük a táblázatainkat így:
{| {{wikitable}} ! Egyik oszlop !! Másik oszlop |- | Egyik érték || Másik érték |- |}
Ennek eredménye ez lesz:
Egyik oszlop | Másik oszlop |
---|---|
Egyik érték | Másik érték |
Szép figyelmeztetések és egyéb jelölések
Ezeket a dolgokat a wikipedia Article Message Box-oknak nevezi. Számos sablont takar, és mindegyik sablon egy közös őst használ.
Ikonok
Ha azt akarjuk, hogy a figyelmeztetések mellett ikonok is megjelenjenek, akkor ezeket fel kell tölteni a Wikibe. Egy csomó jó ikon található pl. itt: http://commons.wikimedia.org/wiki/Category:Indication_icons
CSS
Sajnos a fent leírt CSS módosítás még nem tartalmazza az ambox sablonhoz szükséges dolgokat. Sablon:Uncertain Ezért adjuk hozzá az alábbiakat a MediaWiki:Common.css-hez:
/* Article message box template styles */
table.ambox {
margin: 0 10%; /* Will not overlap with other elements */
border-collapse: collapse;
background: #fbfbfb;
border: 1px solid #aaa;
border-left: 10px solid #1e90ff; /* Default "notice" blue */
}
table.ambox th.ambox-text, table.ambox td.ambox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
width: 100%; /* Make all templates the same width regardless of text size */
}
table.ambox td.ambox-image { /* The left image cell */
padding: 2px 0px 2px 0.5em; /* 0.5em left, 0px right */
text-align: center;
}
table.ambox td.ambox-imageright { /* The right image cell */
padding: 2px 4px 2px 0px; /* 0px left, 4px right */
text-align: center;
}
table.ambox-notice {
border-left: 10px solid #1e90ff; /* Blue */
/* border-right: 10px solid #1e90ff; */ /* If you want two blue bars */
}
table.ambox-delete,
table.ambox-serious {
border-left: 10px solid #b22222; /* Red */
}
table.ambox-content {
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
border-left: 10px solid #f4c430; /* Yellow */
}
table.ambox-merge {
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
border-left: 10px solid #bba; /* Gray */
}
table.ambox.ambox-mini { /* small floating box variant */
float: right;
clear: right;
margin: 0 0 0 1em;
width: 25%;
}
ParserFunctions
A sablonok működéséhez telepíteni kell a ParserFunctions MediaWiki extension-t. A leírásért lásd a Wikimedia Meta oldalát.
Sablonok
El kell készíteni a "közös őst", az Ambox sablont (lásd a hivatkozott lap forrását!)
Ebben a sablonban kell definiálni, hogy hány féle üzenet lehet. Én ezeket az üzenettípusokat definiáltam (mindegyikhez létre kell hozni egy külön sablont!):
- Template:TODO: még nincs kész az adott szakasz vagy oldal
- Template:STOP: Állj és ne tovább!
- Template:INFO: További érdekességek a tudomány és a technika világából...
- Template:UNCERTAIN: Hát, ebben nem vagyok egészen biztos...
- Template:ATTENTION: Figyelem!
- Template:TRASH: Elavult információk
PNG MIME-type bug
Forrás: http://gustavus.edu/gts/webservices/2007/06/18/fixing-broken-png-uploads-with-mediawiki/
A lényeg, hogy a feltöltött PNG file-ok hibás MIME-típussal tárolódnak, ezért nem jelennek meg a képek. A linkelt írás szerint a PHP-ből ki kell nyerni, hogy hol tartja a mime magic-et (ez RedHat alatt itt található: /etc/httpd/conf/magic
, majd ehhez hozzá kellett adni az alábbi sorokat:
# PNG images 1 string PNG image/png
Ezután az Apache webszervert újra kell indítani, majd a hibás file-okat újból feltölteni.
Szerkesztés linkek eltüntetése anonymous számára
Számomra zavaró volt, hogy, noha anonymousnak nincs jogosultsága szerkeszteni, lépten nyomon "szerkesztés" linkekbe botlik az ember. Ezt a default skin módosításával lehet megszüntetni.
Szerkesztés TAB
A felső tab-ok közül csak a "szerkesztés" feliratút kell törölni. Ehhez szerkesszük át a skins/MonoBook.php
file-t.
A következő sort keressük meg benne:
foreach($this->data['content_actions'] as $key => $tab
És cseréljük le erre:
foreach($this->data['content_actions'] as $key => $tab)
if(!($key=='edit') or ($this->data['loggedin']==1))
FIGYELEM!
Figyeljünk, hogy a sor elején található <?php string megmaradjon! |
Szakasz szerkesztés linkek
Szintén a skins/MonoBook.php
file-ban keressük meg azt a sort, amely a <!-- Head scripts-->
kommentet tartalmazza.
Efölé szúrjuk be a következőt:
<?php if(!$this->data['loggedin']) { ?>
<style>
<!--
.editsection { display: none; }
-->
</style>
<?php } ?>
Sima "Login" link eltüntetése
Keressük meg a következő részt az includes/SkinTemplate.php
file-ban:
$personal_urls['login'] = array(
'text' => wfMsg( $loginlink ),
'href' => self::makeSpecialUrl( 'Userlogin', 'returnto=' . $this->thisurl ),
'active' => $wgTitle->isSpecial( 'Userlogin' )
);
és helyette tegyük be ezt:
$personal_urls['login'] = array();