php - Mediawiki 标签扩展 - 链式标签不被处理

标签 php mediawiki

我正在尝试开发一个简单的 Tag Extension对于 Mediawiki。到目前为止,我基本上是在输出输入。当有链式标签时就会出现问题。例如,对于这个例子:

function efSampleParserInit( Parser &$parser ) {
        $parser->setHook( 'sample', 'efSampleRender' );
        return true;
}

function efSampleRender( $input, array $args, Parser $parser, PPFrame $frame ) {
    return "hello ->" .  $input . "<- hello";
}

如果我在文章中这样写:

This is the text <sample type="1">hello my <sample type="2">brother</sample> John</sample>

只有第一个 sample 标签被处理。另一个不是。我想我应该使用收到的 $parser 对象,以便返回解析后的输入,但我不知道该怎么做。

此外,Mediawiki 的引用资料几乎不存在,如果有 Doxygen 引用资料之类的东西会很棒。

最佳答案

使用$parser->recursiveTagParse(),如Manual:Tag_extensions#How do I render wikitext in my extension?所示.

这是一个笨拙的界面,而且没有很好的文档记录。这种看似自然的事情做起来如此棘手的根本原因是它有点违背了标签扩展的最初设计意图——它们最初被设想为低级过滤器,接收原始未解析的文本并吐出 HTML ,完全绕过正常的解析。因此,例如,如果您想包含一些用 Markdown 编写的内容(例如 StackOverflow 帖子)在维基页面上,想法是您可以安装合适的扩展然后编写

<markdown>
**Look,** here's some Markdown text!
</markdown>

在页面上,MediaWiki 解析器将保留 标记之间的所有内容,并将其交给扩展进行解析。

当然,大多数编写 MediaWiki 标签扩展的人并不是真的想替换解析器,而只是想对其进行一些调整。但是标签扩展接口(interface)的设置方式,唯一的方法是递归调用解析器。有时我认为向 MediaWiki 添加一个新的解析器扩展类型会很好,一些看起来像标签扩展但不会以如此激烈的方式中断正常解析。唉,到目前为止,我的动力和丰富的空闲时间还不足以实际做点什么。

关于php - Mediawiki 标签扩展 - 链式标签不被处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7639863/

相关文章:

javascript - 搜索媒体维基

python - 如何在Python中识别维基百科类别

javascript - Angular JS 和 Symfony2

javascript - 该 JSON 无效吗?

php - 数据库触发器更新列后如何进行查询?

MediaWiki 模板继承参数。

php - 重定向后立即出现 Paypal IPN 确认屏幕,无需重新加载

php - 查询结果错误

mediawiki - 如何在 MediaWiki 主页或其他页面中显示所有类别?

css - 根据 mediawiki 中页面的存在应用 css