跳至內容

「使用笔记/杂项篇」:修訂間差異

新增的內容 刪去的內容
第34行: 第34行:
如果你使用的是宝塔面板,那么很遗憾宝塔面板的PHP不支持自动安装这个扩展程序。你需要查阅官网的资料手动编译然后安装到宝塔安装的PHP的对应目录里面去,然后再启用。如果不是面板的话按照文档来即可。
如果你使用的是宝塔面板,那么很遗憾宝塔面板的PHP不支持自动安装这个扩展程序。你需要查阅官网的资料手动编译然后安装到宝塔安装的PHP的对应目录里面去,然后再启用。如果不是面板的话按照文档来即可。


== 修改扩展程序生成的HTML结构 ==
如果你有基础的英文能力,那么把代码当作英文去读,就能找到生成HTML的地方。

比如扩展[[mw:Extension:AdminLinks|管理员链接]],自带的页面[[Special:AdminLinks]]实在是太丑了,我就想着写一个[[MediaWiki:Gadget-adminlinks.css|CSS]]和[[MediaWiki:Gadget-adminlinks.js|JS]]对其做一个彻底改造!

但是原本生成的页面一个class都没有写什么CSS啊……(直接按次序选择元素是不好的。)

所以我就想着,我让这个扩展生成的元素带上class,不就好做了!于是我就去几个php文件里面找了找,发现生成HTML的地方还算良心,有好几处是简单的字符串拼接。我就直接拼上去了class。

但是有一个class有点难啃,用了一个MediaWiki自带的申必玩意儿。我就这么改了。
<syntaxhighlight lang="php" line start="137" highlight="154-155">
/**
* Helper function for backward compatibility.
*
* @param LinkTarget|Title $title
* @param string|null $msg Must be HTML escaped already
* @param array $attrs
* @param array $params Query parameters
* @return string
*/
public static function makeLink( $title, $msg = null, $attrs = array(), $params = array() ) {
$linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
if ( $msg !== null ) {
$html = new HtmlArmor( $msg );
} else {
// null
$html = $msg;
}
$attrs['class'] = 'adminlinks adminlinks-' . $title;
return $linkRenderer->makeKnownLink( $title, $html, $attrs, $params );
}
</syntaxhighlight>

事情瞬间好了起来,我写了一些CSS和JS之后,这个特殊页面就能和Fandom的管理员控制面板相媲美了,真棒!

我修改的也包括[[mw:Extension:SimpleBlogPage|SimpleBlogPage]]的一些结构。
{{使用笔记}}
{{使用笔记}}

於 2021年5月4日 (二) 16:41 的修訂

該頁面的編輯正在進行中。 討論

請幫助我們擴充或改進這篇文章。

這篇介紹一些沒有具體主題的小點。

郵件傳送 

如果你沒有一個正經的付過費的域名和企業郵箱,那麼事情會變得異常麻煩。你要自己搭建郵件伺服器,如果是免費域名和其他特定域名還得遭受被拒收的痛苦。自己搭建的郵件伺服器也會出現被他人不當利用的問題,實在是很難辦。

因此,還是建議你去搞一個企業郵箱和一個正經域名,然後按照手冊填寫參數。

如果你沒有企業郵箱,那麼其實解決方案也很簡單(但不靠譜)——用你的個人郵箱。像你登入你自己郵箱的時候要填寫的參數一樣,把這些參數填上,然後郵件就會神奇地透過你的郵箱傳送出去——前提是你在帳戶設置裏面「允許本次異地登入」。除了你的個人郵箱會被不當利用的風險以外,好像也沒啥。比如我站被100多位垃圾用戶註冊

SVG 

總之SVG縮圖會出問題,不知道為什麼。有的時候這和PHP停用函數有關,有的時候和shell語言有關,有的時候和你上載的SVG有問題有關。這類問題需要具體問題具體分析去解決。

好用的Gadget

從各大wiki上搬。維基百科有很多。我站的Special:Gadgets也可以看着搬。

Gadget有時會依賴其他Gadget。有的Gadget的dependencies裏面會指定類似於ext.gadget.<小工具名>的,這個時候要注意搬運完全。

好懶我不想搬運模板怎麼辦

首先wiki不能懶,不然不會有長進。

然後呢,這裏有一個$wgEnableScaryTranscluding。這是幹什麼的呢?沒錯,只要你的Interwiki設置的iw_trans有設置,那麼就可以透過跨wiki連結的方式呼叫頁面了!

聽上去好棒哦。但是首先並不是能呼叫模板這麼簡單,其次你的伺服器會爆炸(高開銷)。所以別想着偷懶啦。

LuaSandbox

LuaSandbox是一個PHP擴充程式。簡單來説,模組引擎切換到它會變快。

如果你使用的是寶塔面板,那麼很遺憾寶塔面板的PHP不支援自動安裝這個擴充程式。你需要查閱官網的資料手動編譯然後安裝到寶塔安裝的PHP的對應目錄裏面去,然後再啟用。如果不是面板的話按照文件來即可。

修改擴充程式生成的HTML結構

如果你有基礎的英文能力,那麼把代碼當作英文去讀,就能找到生成HTML的地方。

比如擴充管理員連結,內建的頁面Special:AdminLinks實在是太醜了,我就想着寫一個CSSJS對其做一個徹底改造!

但是原本生成的頁面一個class都沒有寫什麼CSS啊……(直接按次序選擇元素是不好的。)

所以我就想着,我讓這個擴充生成的元素帶上class,不就好做了!於是我就去幾個php檔案裏面找了找,發現生成HTML的地方還算良心,有好幾處是簡單的字串拼接。我就直接拼上去了class。

但是有一個class有點難啃,用了一個MediaWiki內建的申必玩意兒。我就這麼改了。

/**
  * Helper function for backward compatibility.
  *
  * @param LinkTarget|Title $title
  * @param string|null $msg Must be HTML escaped already
  * @param array $attrs
  * @param array $params Query parameters
  * @return string
  */
public static function makeLink( $title, $msg = null, $attrs = array(), $params = array() ) {
	$linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
	if ( $msg !== null ) {
		$html = new HtmlArmor( $msg );
	} else {
		// null
		$html = $msg;
	}
	$attrs['class'] = 'adminlinks adminlinks-' . $title;
	return $linkRenderer->makeKnownLink( $title, $html, $attrs, $params );
}

事情瞬間好了起來,我寫了一些CSS和JS之後,這個特殊頁面就能和Fandom的管理員控制面板相媲美了,真棒!

我修改的也包括SimpleBlogPage的一些結構。

Cookies 幫助我們給予服務內容。依您有使用我們的服務,代表您同意我們使用 cookies。