萌娘百科:魔改
跳至導覽
跳至搜尋
一些需要魔改的地方:
- MW自帶的
Sanitizer/StylePropertySanitizer.php
需要允許transform
屬性中使用perspective(...)
。Template:Hovers/hover.css和Template:原神/style.css會用到。完成
- ContributionScores插件的ContributionScores.php的第79行的
$parser->mStripState
改成$parser->getStripState()
。出錯原因是MW的parser的mStripState變成私有變量了,要用getter獲取。 - 高版本MW中,部分HTML源代碼的
<div>
標籤改為<nav>
,這導致了一部分萌百的全站CSS和小工具失效:- 短連接小工具出現樣式錯誤,原因在於Vector皮膚左側的工具欄應用了此更改,子項目標題也從
<h3></h3>
改為了<label><span></span></label>
。調整方法見Special:差異/217678/217682。 - Vector皮膚右上角用戶菜單背景顏色失效、且用戶名左側會出現一個「
」圖標,調整方法見Special:差異/200996/217766。
- 清除緩存按鈕小工具無法使用,原因是右上角用戶菜單的HTML源代碼中多嵌套了一級<div>,調整方法見Special:差異/150175/217742。
- 短連接小工具出現樣式錯誤,原因在於Vector皮膚左側的工具欄應用了此更改,子項目標題也從
- 1.38下小工具新增actions參數,可以判斷當前頁面的操作決定是否加載小工具。目前已經給5個小工具實裝了actions參數,MediaWiki:Gadget-edit.js由於對編輯摘要快速插入增加了新功能,action相關if判斷已經去除。
- Widget如果同時依賴jQuery和mw的庫,可以搬運至Gadget用
(大力出奇蹟)。- 把script標籤內的代碼轉移至MediaWiki:Gadget-xxx.js。但是Gadget只支持ES5,你可以在Widget里看見Promise異步和const、let,所以代碼需要經過以下處理:
- 修改MediaWiki:Gadgets-definition。添加新的小工具。默認開啟並隱藏。此外,之前的依賴要填進ResourceLoader。
如果js代碼包含$,說明jQuery也是一個依賴。 - 在Special:小工具中查看並創建對應的系統信息(「添加說明」)。
- style標籤無需遷移。如果想,也可以放進css。
- 無法關閉評論區。這是因為Flowthread和高版本MW不適配。見這個issue。
- 從mediawiki1.32開始,ResourceLoader.php中Widget常用的RLQ接口新增了一個方法,來調用需要在代碼執行前加載的js庫:
public static function makeInlineCodeWithModule( $modules, $script ) {
// Adds an array to lazy-created RLQ
return '(RLQ=window.RLQ||[]).push(['
. self::encodeJsonForScript( $modules ) . ','
. 'function(){' . trim( $script ) . '}'
. ']);';
}
對應的Widget代碼可以是:
window.RLQ = window.RLQ || [];
window.RLQ.push([module||["module1","module2",……"moduleN"],function(){
……
}]);
從1.34+開始,jQuery因為加載順序原因需要這種方法進行調用,使用mw.loader.using調用的不少模塊也需要寫入此處。