Daftar isi |
Mediawiki memiliki banyak ekstensi guna memperkaya fitur-fiturnya. Standar mendapatkan dan memasang ekstension adalah:
require_once("$IP/extensions/NamaEkstensi/NamaEkstensi.php");
Kalau lancar, semuanya akan beres. Namun, open source tanpa ngoprek bagaikan rendang tanpa cabe ;D
Extensi ini memungkinkan kita membuat daftar halaman secara dinamik, dengan berbagai pilihan yang fleksibel. Namun kalau membaca sejarahnya, cukup membingungkan. Di situs media wiki ada Dynamic Page List, Dynamic Page List (third party) dan Intersection. Kalau mau main aman, pilih yang pertama. Unduh dan pasang ikut cara standar.
Untuk membuat list halaman kategori tertentu
<DynamicPageList> category = Aplikasi count = 6 order = descending </DynamicPageList>
Ekstensi ini kembangan dari DynamicPageList, khusus untuk membuat list halaman yang paling banyak dilihat, halaman terbaru, suntingan terbaru dan diskusi terbaru.
Ekstensi ada di http://www.mediawiki.org/wiki/Extension:DynamicArticleList, ada empat file yang harus di salin tempel.
Edit LocalSettings.php
require_once("extensions/DynamicArticleList/DynamicArticleList.php");
Kalau setelah dipasang, halaman anda jadi ada error "header already posted", tandanya di akhir file DynamicArticleList.php ada kelebihan
?>
Hapus saja.
<DynamicArticleList> title=Artikel Populer categoryRoot=Utama type=hot count=3 </DynamicArticleList>
Untuk type, bisa diisi : new, update, discussion, atau hot
Ini ekstensi yang bagus untuk membuat daftar kategori dan artikel dengan tampilan yang manis (nice). Mengunduh dan memasangnya sesuai standar.
<ncl style=compact maxdepth=2 headings=bullet headstart=2 showcats=1 showarts=1>Category:{{PAGENAME}}</ncl>
Ekstensi ini mampu menampilkan kategori dalam bentuk pohon yang bisa berkembang sesuai pilihan pengguna. Kategori anak akan diambil pakai AJAX, jadi lebih efisien dibanding NiceCategory2. Mengunduh dan memasangnya ikut standar.
Pada LocalSettings.php, perlu ditambah:
$wgUseAjax = true; require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");
Setelah lihat tampilan NiceCategory2 dan CategoryTree, tampilan standar Subkategori yang selalu muncul di setiap halaman Kategori: jadi terasa hambar. Inginnya, tampilan itu diganti saja pakai NiceCategory atau CategoryTree. Namun setalah dicari sana-sini, tidak fasilitas untuk mematikan hal itu (seperti halnya __NOTOC__ di halaman artikel). Karena itu, terpaksa main kotor, hack halaman includes/CategoryPage.php, fungsi getHTML() sebagai berikut:
// Hack supaya halaman kategori tidak menampilkan sub kategori // Nanti akan diganti pakai NiceCategory saja $r = $this->getCategoryTop() . //$this->getSubcategorySection() . Dua baris ini //$this->getPagesSection() . dikomentar saja $this->getImageSection() . $this->getCategoryBottom(); // Give a proper message if category is empty /* Dan yang ini, juga tak perlu if ( $r == '' ) { $r = wfMsgExt( 'category-empty', array( 'parse' ) ); } */
Awas, oprekan ini akan membuat SEMUA halaman Kategori: tidak menampilkan Subkategori !!!
Setelah di hack dengan kasar seperti itu, rugi kalau tidak habis-habisan dimanfaatkan. Buat sebuah template, misal Templat:Kategori, isinya:
[[Berkas:{{PAGENAME}}.jpg]] <categorytree>{{PAGENAME}}</categorytree>
Lalu pada setiap kategori, tinggal tambah
{{Kategori}}
Ekstensi ini menyediakan form untuk membuat halaman baru. Pemakaiannya cukup fleksibel, namun ternyata belum cukup untuk kasus ini, sehingga perlu oprekan cukup banyak.
Edit LocalSettings.php
require_once("extensions/CreateBox/CreateBox.php");
Tujuan oprekan ini ingin menambah fitur, supaya halaman yang baru dimuat bisa langsung masuk ke kategori tertentu. Untuk itu file CreateBox.php di hack di dua tempat. Pertama, ubah fungsi acRedirect agar mampu meneruskan parameter category.
function acRedirect($title, $action) { global $wgRequest, $wgOut; $query = "action={$action}"; $value = $wgRequest->getVal('section'); if ( ! empty($value)) $query = $query . "§ion=" . $value; $value = $wgRequest->getVal('category'); //if ( ! empty($value)) $query = $query . "&category=" . $value; $value = $wgRequest->getVal('preload'); if ( ! empty($value)) $query = $query . "&preload=" . $value; $value = $wgRequest->getVal('editintro'); if ( ! empty($value)) $query = $query . "&editintro=" . $value; $wgOut->setSquidMaxage( 1200 ); $wgOut->redirect($title->getFullURL( $query ), '301'); }
Selanjutnya tambahkan hook untuk menambahkan kategori di halaman baru.
$wgHooks['EditFormPreloadText'][] = 'addCategory'; function addCategory(&$text) { $cname = $_GET['category']; if ( ! empty($cname)) { $text=$text . "\n\n[[category:" . $cname . "]]"; return true; } return false; }
Nah, kini Templat:Kategori kita bisa dibuat lebih canggih:
{| |width="120px"| |[[Berkas:logo_{{PAGENAME}}.jpg]] |Menambah artikel baru: <createbox> align=left width=40 buttonlabel=Buat default=Artikel baru editintro=Judul artikel preload=Templat:Artikel_{{PAGENAME}} category={{PAGENAME}} </createbox> |} Isi kategori <categorytree>{{PAGENAME}}</categorytree>
Ini ekstensi yang memungkinkan beberapa berkas gambar dilihat bergantian pada satu kotak.
Oh ya, direktori extensions/common itu buatan sendiri, untuk menaruh file file java script (.js), maupun style (.css) pihak ketiga yang dipakai bersama-sama oleh berbagai extensi.
Edit file Slideshow.php, ubah posisi script sesuai pemasangan
if (!$SS_SCRIPT_INCLUDED) { $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/Slideshow/slideshow.js\"></script>\n"); $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/common/prototype.js\"></script>\n"); $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/common/scriptaculous.js\"></script>\n") $SS_SCRIPT_INCLUDED = true; }
Dari penelusur web, akses http://localhost/Mediawiki:Common.css . Tambahkan:
.slideshow div { _position: absolute; } .slideshow div div { _position: static; }
Lalu edit LocalSettings.php, tambahkan
require_once("extensions/Slideshow/Slideshow.php");
Pada artikel tambahkan:
<slideshow sequence="random" transition="fade" refresh="5000"> <div>[[Berkas:HPC-01.JPG|thumb|center|200px|Komponen Dozen 2008]]</div> <div>[[Berkas:HPC-02.JPG|thumb|center|200px|Modul Dozen 2008]]</div> <div>[[Berkas:HPC-03.JPG|thumb|center|200px|Dozen 2008 dalam lemari]]</div> </slideshow>
Ekstensi ini fungsinya mirip seperti Slideshow, namun ada beberapa fitur yang lebih hebat. Tentu saja memasangnya juga lebih ruwet, apalagi petunjuknya tidak begitu jelas.
Ubah nama tiga file di wiki/extensions/common/sg, hilangkan nomor versinya sbb.:
# ls HistoryManager.js jd.gallery.set.js mootools.v1.11.ext.js mootools.v1.11.uncompressed.js jd.gallery.js jd.gallery.transitions.js mootools.v1.11.js # rename .v1.11. . *.js # ls HistoryManager.js jd.gallery.set.js mootools.ext.js mootools.uncompressed.js jd.gallery.js jd.gallery.transitions.js mootools.js
Edit LocalSettings.php
$wgUseImageResize=true; $wgSmoothGalleryExtensionPath = "/wiki/extensions/common/sg"; $wgSmoothGalleryDelimiter = "\n"; require_once("extensions/SmoothGallery/SmoothGallery.php");
Setelah rada repot pasang, memakainya lebih mudah dibanding SlideShow
<sgallery> HPC-01.JPG HPC-02.JPG HPC-03.JPG </sgallery>
Ini extension keren, bisa menampilkan grafik interaktif di web memakai javascript yang ringan (bukan java applet).
Edit file JSXGraph.php, edit bagian ini agar script dan css termuat dengan benar:
// Load necessary stylesheet und scripts global $wgScriptPath; // tambah baris 1 $outputURI = $wgScriptPath . "/extensions/common"; // tambah baris 2 if ($markercount==0) { $output .= "<link rel='stylesheet' type='text/css' href='".$outputURI."/jsxgraph.css' />"; $output .= "<script src='".$outputURI."/prototype.js' type='text/javascript'></script>"; $output .= "<script src='".$outputURI."/jsxgraphcore.js' type='text/javascript'></script>"; }
Edit LocalSettings.php
$wgFileExtensions[] = 'gxt'; $wgVerifyMimeType = false; require_once("$IP/extensions/JSXGraph/JSXGraph.php");
Buat satu artikel, ketikkan contoh dari situs JSXGraph ini:
<jsxgraph height="500" width="600" board="board" box="jxgbox2"> board = JXG.JSXGraph.initBoard('jxgbox2', {originX: 250, originY: 250, unitX: 25, unitY: 25}); var a = board.createElement('slider', [[1,8],[5,8],[0,1,4]]); var b = board.createElement('slider', [[1,9],[5,9],[0,0.25,4]]); var c = board.createElement('curve', [function(phi){return a.Value()+b.Value()*phi; }, [0, 0], 0, 8*Math.PI], {curveType:'polar', strokewidth:4}); </jsxgraph>
Jmol adalah program berbasis Java untuk menampilkan molekul secara 3D, dan interaktif. Karena Java, tentu saja dia punya applet yang bisa dipadukan ke web. Paket ini ada di http://www.mediawiki.org/wiki/Extension:Jmol, petunjukkan cukup jelas, dan bisa diikuti dengan lancar.
Buat artikel dengan isi :
== Inlined MDL Molfile == <jmol> <jmolApplet> <size>150</size> <color>green</color> <inlineContents>chair.mol Conformational analysis 0 18 18 0 0 0 1 V2000 1.6881 2.1572 -3.0193 C 0 0 0 0 0 2.1484 3.6217 -2.9797 C 0 0 0 0 0 2.9361 3.9126 -1.6942 C 0 0 0 0 0 2.0927 3.5769 -0.4557 C 0 0 0 0 0 1.6329 2.1120 -0.4898 C 0 0 0 0 0 0.8532 1.8102 -1.7778 C 0 0 0 0 0 2.5807 1.4887 -3.0652 H 0 0 0 0 0 1.0897 1.9711 -3.9430 H 0 0 0 0 0 1.2578 4.2927 -3.0282 H 0 0 0 0 0 2.7791 3.8474 -3.8727 H 0 0 0 0 0 3.8725 3.3053 -1.6844 H 0 0 0 0 0 3.2413 4.9861 -1.6685 H 0 0 0 0 0 1.2005 4.2467 -0.4224 H 0 0 0 0 0 2.6835 3.7700 0.4714 H 0 0 0 0 0 0.9957 1.8928 0.4002 H 0 0 0 0 0 2.5240 1.4426 -0.4294 H 0 0 0 0 0 0.5642 0.7322 -1.8031 H 0 0 0 0 0 -0.0919 2.4039 -1.7878 H 0 0 0 0 0 1 2 1 0 0 0 1 6 1 1 0 0 1 7 1 0 0 0 1 8 1 6 0 0 2 3 1 1 0 0 2 9 1 0 0 0 2 10 1 6 0 0 3 4 1 1 0 0 3 11 1 0 0 0 3 12 1 0 0 0 4 5 1 0 0 0 4 13 1 0 0 0 4 14 1 1 0 0 5 6 1 6 0 0 5 15 1 1 0 0 5 16 1 0 0 0 6 17 1 0 0 0 6 18 1 0 0 0 M END </inlineContents> </jmolApplet> </jmol>
Mediawiki sudah menyediakan form pemuatan yang bisa meng-unggah (upload) satu file. Namun setekah mau upload banyak gambar, repot juga kalau satu-satu. Nah, extensi MultiUpload ini bisa menolong. (Benar-benar menolong, tidak sekedar memberitahu anda untuk mengubah nasib anda sendiri :)
Mengunduh dan memasang ekstensi ini ikut cara standar. Namun, waktu saya pasang di MW 1.14 ada error. Perlu setengah hari untuk mengopreknya :(
Pakai browser, akses ke halaman MediaWiki:Sidebar. Tambahkan menu
* navigation ** mainpage|mainpage-description ** portal-url|portal ** currentevents-url|currentevents ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * TOOLBOX ** Special:MultipleUpload|multipleupload ("upload files")
File SpecialMultipleUpload.body.php adalah asal error-nya, tepatnya di fungsi showSuccess(). Pada akhir oprekan, isi fungsi itu diubah total jadi:
function showSuccess() { global $wgUser, $wgOut, $wgContLang; wfLoadExtensionMessages( 'MultiUpload' ); $msg = wfMsgWikiHtml( 'multiupload-fileuploaded' ); $dname = $this->mLocalFile->getTitle(); $iname = $this->mLocalFile->getTitle()->getFullURL(); $wgOut->addWikiText( "[[{$dname->getFullText()}|left|thumb]]" ); $text = '</td><td>' . $msg . '<a href="' . $iname . '">' . $dname . '</a></td>'; $wgOut->addHTML( $text ); }
Karena isi showSuccess sudah komplit, maka pada file SpecialMultipleUpload.php, kita tutup saja hook-nya.
// Hooked functions // TUTUP saja // $wgHooks['UploadComplete'][] = 'wfMultiUploadShowSuccess';
Oprekan ini sebenarnya cuma niat membetulkan error. Mudah-mudahan versi yang lebih baru sudah tidak error, sehingga tak perlu lagi dioprek.
Klik saja menunya di side bar, lalu unggah beberapa file. Oh ya, extensi ini akan langsung menindis file lama (jika ada) tanpa peringatan. Hati-hati ;)
Extension ini buatan sendiri, berguna untuk menaikkan rangking di mbah Google (istilah kerennya untuk SEO, search engine optimization).
Standar, taruh paketnya di laci extension, lalu edit LocalSettings.php
require_once("$IP/extensions/Keywords/Keywords.php");
Tambahkan ini di LocalSettings.php
$wgKeywords="komputasi,kinerja,tinggi"; $wgGoogleVerification="xxxxxxxxxxxxxxxxx";
Pada halaman, definisikan kata kunci dengan
{{#keywords:key1,key2 }}
Periksa hasilnya browsing ke halaman tersebut, lalu lihat kode sumbernya. Seharusnya pada bagian head akan ada dua baris meta
<meta name="google-site-verification" content="xxxxxxxxxxxxxxxxxxxxx" /> <meta name="keywords" content="key1,key2,Judul Halaman,komputasi,kinerja,tinggi" />
Extension ini berguna untuk menuliskan kode sumber berbagai bahasa (C, Java, BASH, dan masih banyak lagi), dan akan ditampilkan dengan berwarna-warni. Paket ini bisa diunduh dari http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi.
Ekstrak paket ke laci extension, lalu edit LocalSettings.php, tambahkan
require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");
Contoh di atas diketik sebagai
<source lang="php"> require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php"); </source>
ASCIIMathML adalah penulisan rumus matematik yang mudah (relatif terhada LaTeX, atau MathML). Integrasinya ke mediawiki bisa memakai http://www.mediawiki.org/wiki/Extension:ASCIIMath4Wiki. Sayangnya extension ini memaksa penggunaan skin XML-compatible, yang setelah dicoba, tidak cocok dengan extension SlideShow. Karena itu dipakai jalan pintas saja, dengan memasangnya langsung ke theme.
Ambil file ASCIIMathML.js dari http://www1.chapman.edu/~jipsen/mathml/asciimath.html.
<head> ........ <script type="text/javascript" src="<?php $this->text('stylepath' ) ?>/common/ASCIIMathML.js"></script> ..... </head>
Lihat contohnya di ASCII MathML.
Fitur math sudah termasuk sediaan asli mediawiki, berguna untuk menulis rumus matematika dengan gaya penulisan latex. Hanya saja untuk mengaktifkannya perlu usaha cukup keras.
Di sistem operasi, harus disediakan paket LaTeX, dvips, ImageMagick, and Ghostscript, serta ocaml. Kalau di ubuntu, bisa dengan sekali pukul
apt-get install mediawiki-math apt-get install ocaml apt-get install make
Setelah itu perlu mengkompilasi texvc, ada di direktori instalasi mediawiki/math
cd /home/www/htdocs/wiki/math make
Lalu siapkan direktori untuk gambar
cd /home/www/htdocs/wiki mkdir -p images/math mkdir -p /images/tmp chmod 755 images/*
Langkah terakhir, edit LocalSettings dengan menambahkan
## If you have the appropriate support software installed ## you can enable inline LaTeX equations: $wgUseTeX = true; # Additional settings $wgUploadPath = "images"; $wgUploadDirectory = "images"; $wgMathPath = "{$wgUploadPath}/math"; $wgMathDirectory = "{$wgUploadDirectory}/math"; $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
Buat saja sebuah halaman dan, tuliskan
<math> C_{ij} = \sum_{k=1}^n (A_{ik} * B_{kj}) </math>
Mestinya akan nampak menjadi
Kontributor: Mursito