Mediawiki 擴展標籤:修訂版本之間的差異

出自六年制學程
跳轉到: 導覽搜尋
(新頁面: 分類:Mediawiki ==原理解說== ===一、設定=== 於 extension.json 中設定以下的勾子(hooks):<pre> ... "Hooks": { "ParserFirstCallInit": "ExampleExtension::onParse...)
 
一、設定
第 2 行: 第 2 行:
 
==原理解說==
 
==原理解說==
 
===一、設定===
 
===一、設定===
於 extension.json 中設定以下的勾子(hooks):<pre>
+
於 extension.json 中設定以下的勾子(hooks)<pre>
 
...
 
...
 
   "Hooks": {
 
   "Hooks": {
 
     "ParserFirstCallInit": "ExampleExtension::onParserFirstCallInit"
 
     "ParserFirstCallInit": "ExampleExtension::onParserFirstCallInit"
 
   },
 
   },
 +
...</pre>
 +
 +
新增程式:<pre>
 +
<?php
 +
class ExampleExtension {
 +
// 註冊實體化回傳外掛
 +
public static function onParserFirstCallInit( Parser $parser ) {
 +
// 當解析器看到<sample>標記時,它會執行renderTagSample(見下文)
 +
$parser->setHook( 'sample', [ self::class, 'renderTagSample' ] );
 +
}
 +
 +
// 實體化 <sample> 的函式定義
 +
public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {
 +
// 在本例中這個函數只是將用戶輸入中的轉義字符解析為原來的樣子並再次輸出它
 +
return htmlspecialchars( $input );
 +
}
 +
}
 
...</pre>
 
...</pre>

2020年10月19日 (一) 11:14的修訂版本

原理解說

一、設定

於 extension.json 中設定以下的勾子(hooks):
...
  "Hooks": {
    "ParserFirstCallInit": "ExampleExtension::onParserFirstCallInit"
   },
...
新增程式:
<?php
class ExampleExtension {
	// 註冊實體化回傳外掛
	public static function onParserFirstCallInit( Parser $parser ) {
		// 當解析器看到<sample>標記時,它會執行renderTagSample(見下文)
		$parser->setHook( 'sample', [ self::class, 'renderTagSample' ] );
	}

	// 實體化 <sample> 的函式定義
	public static function renderTagSample( $input, array $args, Parser $parser, PPFrame $frame ) {
		// 在本例中這個函數只是將用戶輸入中的轉義字符解析為原來的樣子並再次輸出它
		return htmlspecialchars( $input );
	}
}
...