「Mediawiki 擴展標籤」修訂間的差異
跳至導覽
跳至搜尋
(新頁面: 分類:Mediawiki ==原理解說== ===一、設定=== 於 extension.json 中設定以下的勾子(hooks):<pre> ... "Hooks": { "ParserFirstCallInit": "ExampleExtension::onParse...) |
(→一、設定) |
||
| 第2行: | 第2行: | ||
==原理解說== | ==原理解說== | ||
===一、設定=== | ===一、設定=== | ||
| − | 於 extension.json 中設定以下的勾子(hooks) | + | 於 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 );
}
}
...