正如here所述,mediawiki解析器允许预先保存转换,该转换将自动将wikitext替换为其他内容。
如何创建自己的?
我确实找到了这个,但我甚至无法确定它的相关性。 http://mediawiki.sourcearchive.com/documentation/1.13.3/classArticle_a0d27b9b92f688ea124b1f1c4c0b60018.html
答案 0 :(得分:2)
在现代MediaWiki版本(v1.21 +)中,一种方法可以是:
撰写您自己的ContentHandler课程,展开WikiTextContent和WikitextContentHandler。这些可以很简单:
class MyContentHandler extends WikitextContentHandler {
protected function getContentClass() {
return 'MyContent';
}
}
class MyContent extends WikitextContent {
// TODO: override preSaveTransform() here
}
在内容子类中,覆盖preSaveTransform()方法,例如像这样(如果你想在正常的PST通过后修改wikitext):
public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
$content = parent::preSaveTransform( $title, $user, $popts );
$orig = $text = $content->getNativeData();
// ...modify $text here...
return ( $orig === $text ) ? $content : new static( $text );
}
使用LocalSettings.php中的$wgContentHandlers将新的ContentHandler注册为普通维基页面的处理程序:
$wgContentHandlers[CONTENT_MODEL_WIKITEXT] = 'MyContentHandler';
(警告:我相信这种方法应该可行,但我实际上没有测试过!请自行承担风险。欢迎改进和错误报告。)
答案 1 :(得分:1)
签名的替换为hard-coded in mediawiki/core。
我不知道如何在不改变核心文件的情况下做同样的事情(顺便说一下,这不是一个好主意)。您可以使用parser function或创建tag extension来以类似的方式实现您想要的目标。