2013-07-17 33 views
1

如何编写将直接修改wiki文本的扩展,用于mediawiki 1.16? 免费的网络主机只有一个旧版本的PHP,所以我无法安装新版本的mediawiki。修改Mediawiki中的Wikitext,如preSaveTransform

preSaveTransform可以将签名(~~~~)更改为其他wiki文本。

当我写一个解析器扩展,到目前为止,我只知道让“{{#示例:你好|喜}}”来显示为“参数1你好,是和参数2”,但不能改变wikitext的直接的。我看到$ wikiPage-> doEditContent($ new_content,$ edit_summary,$ flags);我看到$ wikiPage-> doEditContent($ new_content,$ edit_summary,$ flags);我看到$ wikiPage-> doEditContent($ new_content,$ edit_summary,$ flags);似乎可以这样做,但不幸的是1.20版+

更新: 发现 “$物品─>的doEdit($ NEW_TEXT,$ edit_summary,$标志);” 在https://git.wikimedia.org/blob/mediawiki%2Fextensions%2FReplaceText/62ec35b6c0d16419e9893c3a78b4d04076024ea2/ReplaceTextJob.php

更新: 在编写解析器(或标记)扩展时找到文章标题的方法: $ article = new Article($ parser-> getTitle(),0); https://www.mediawiki.org/wiki/Manual:$ wgTitle

+0

你曾经弄清楚如何做到这一点? – user606723

回答

0

查看MediaWiki中的{{subst:}}魔术字。

http://www.mediawiki.org/wiki/Manual:Substitution

相反评估和显示wikitext的的,它会导致评价wikitext的直接代入制品。

我不知道这是否会解决您的问题:您似乎希望自己的解析器函数执行替换,而不是依赖像subst这样的外部事物。但至少,您可以查看wiki源代码中subst的实现,以了解它如何实现它的功能。