MediaWiki:Common.js
Tampilan
Catatan: Setelah menerbitkan, Anda mungkin perlu melewati tembolok peramban web Anda untuk melihat perubahan.
- Firefox/Safari: Tekan dan tahan Shift sembari mengeklik Reload, atau tekan Ctrl-F5 atau Ctrl-R (⌘-R di Mac)
- Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R di Mac)
- Edge: Tahan Ctrl sembari mengeklik Refresh, atau tekan Ctrl-F5
/* Script Injeksi RelatedArticles Otomatis ke Footer */
$(document).ready(function() {
if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view' && mw.config.get('wgNamespaceNumber') === 0) {
// 1. Cek dulu, apakah di halaman ini udah ada kode {{#related}} manual?
// Kita cek lewat elemen kelas bawaan ekstensi RelatedArticles
if ($('.ext-related-articles-card').length || $('div[id^="related"]').length > 0) {
return; // Kalau udah ada, berhenti biar gak numpuk
}
var categories = mw.config.get('wgCategories');
if (categories.length > 0) {
var targetCat = categories.filter(function(c){ return !c.match(/halaman|artikel|maintenance/i); })[0] || categories[0];
// 2. Ambil daftar artikel dalam kategori
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
list: 'categorymembers',
cmtitle: 'Category:' + targetCat,
cmlimit: 30,
format: 'json'
}, function(data) {
var members = data.query.categorymembers;
if (!members) return;
var currentTitle = mw.config.get('wgPageName').replace(/_/g, ' ');
var filtered = members.filter(function(m) { return m.title !== currentTitle; });
// Acak dan ambil 3
filtered.sort(function() { return 0.5 - Math.random(); });
var chosen = filtered.slice(0, 3);
if (chosen.length > 0) {
// 3. Bikin string perintah manual buat ekstensi RelatedArticles
var relatedWikiText = "";
chosen.forEach(function(item) {
relatedWikiText += '{{#related:' + item.title + '}}';
});
// 4. Perintah "Pinter": Nyuruh server ngerender wikitext jadi HTML asli ekstensi
$.getJSON(mw.util.wikiScript('api'), {
action: 'parse',
text: relatedWikiText,
contentmodel: 'wikitext',
prop: 'text',
disablelimitreport: 1,
format: 'json'
}, function(parseData) {
var finalHtml = parseData.parse.text['*'];
// 5. Tempel hasilnya di bawah artikel
var container = $('<div id="auto-related-wrapper" style="clear:both; margin-top:20px;"></div>').append(finalHtml);
// Target Minerva (HP) dan Vector (Desktop)
if ($('.minerva-footer').length) {
$('.minerva-footer').before(container);
} else if ($('#catlinks').length) {
$('#catlinks').after(container);
} else {
$('#mw-content-text').after(container);
}
});
}
});
}
}
});