Php 尝试将parserHook添加到mediawiki时出错
我正在运行Mediawiki 1.23并使用Syntaxhighlight插件。90%的情况下,我们使用SQL作为指定语言。例如:Php 尝试将parserHook添加到mediawiki时出错,php,mediawiki,Php,Mediawiki,我正在运行Mediawiki 1.23并使用Syntaxhighlight插件。90%的情况下,我们使用SQL作为指定语言。例如: <syntaxhighlight lang="sql"> select 'foo'; </syntaxhighlight> 在SyntaxHighlight_SeSHi.php中,我添加了第三个setHook: function efSyntaxHighlight_GeSHiSetup( &$parser ) { $p
<syntaxhighlight lang="sql">
select 'foo';
</syntaxhighlight>
在SyntaxHighlight_SeSHi.php中,我添加了第三个setHook:
function efSyntaxHighlight_GeSHiSetup( &$parser ) {
$parser->setHook( 'source', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) );
$parser->setHook( 'syntaxhighlight', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) );
$parser->setHook( 'sql', array( 'SyntaxHighlight_GeSHi', 'parserHookSql' ) );
return true;
}
最后,在SyntaxHighlight_SeSHi.class.php中,我尝试保留来自解析器的所有值,但添加(或替换)了“lang”值,然后调用原始的parserHook:
class SyntaxHighlight_GeSHi {
private static $initialised = false;
private static $languages = null;
public static function parserHookSql( $text, $args = array(), $parser ) {
$args['lang']='sql';
self::parserHook($text,$args,$parser);
}
public static function parserHook( $text, $args = array(), $parser ) {
global $wgSyntaxHighlightDefaultLang, $wgUseSiteCss, $wgUseTidy;
wfProfileIn( __METHOD__ );
self::initialise();
...
...
当我这样做时,页面呈现,但是sql
标记中呈现的文本是“UNIQ088c1443c530026e-sql-0000000 7-QINU”,所以我显然做错了什么
所以我的PHP有任何帮助,或者我扩展mediawiki的方式不对。。。无论哪种情况,请提前感谢 哇,您正在使用来自未来的MediaWiki?;)这可以解释很多。但是没有,只有1.23。更新了问题。是的。非常感谢。真不敢相信我错过了!
return self::parserHook($text,$args,$parser);
class SyntaxHighlight_GeSHi {
private static $initialised = false;
private static $languages = null;
public static function parserHookSql( $text, $args = array(), $parser ) {
$args['lang']='sql';
self::parserHook($text,$args,$parser);
}
public static function parserHook( $text, $args = array(), $parser ) {
global $wgSyntaxHighlightDefaultLang, $wgUseSiteCss, $wgUseTidy;
wfProfileIn( __METHOD__ );
self::initialise();
...
...
return self::parserHook($text,$args,$parser);