Пользовательский тег Mediawiki Останавливает синтаксический анализ страницы
Вопрос
Я создал несколько пользовательских тегов mediawiki, используя руководство, найденное здесь
http://www.mediawiki.org/wiki/Manual:Tag_extensions
Я опубликую свой код ниже, но проблема в том, что после того, как он попадает на первый пользовательский тег на странице, он вызывает его и печатает ответ, но не получает ничего, что следует за ним в викитексте.Кажется, он просто перестает разбирать страницу.
Есть какие-нибудь идеи?
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
$wgHooks['ParserFirstCallInit'][] = 'tagregister';
} else { // Otherwise do things the old fashioned way
$wgExtensionFunctions[] = 'tagregister';
}
function tagregister(){
global $wgParser;
$wgParser->setHook('tag1','tag1func');
$wgParser->setHook('tag2','tag2func');
return true;
}
function tag1func($input,$params)
{
return "It called me";
}
function tag2func($input,$params)
{
return "It called me -- 2";
}
Обновить:@George Mauer - я тоже это видел, но это не останавливает рендеринг страницы, просто движок Mediawiki не обрабатывает остальной викитекст.Это как если бы нажатие на пользовательскую функцию сигнализировало mediawiki о том, что обработка завершена.Я нахожусь в процессе погружения в кроличью нору, но надеялся, что кто-то еще видел такое поведение.
Решение
Никогда не пользовался Mediawiki, но, по моему опыту, такого рода проблемы указывают на ошибку PHP, которая произошла, но была подавлена либо с помощью оператора @, либо потому, что вывод ошибки PHP на экран отключен.
Я ненавижу прибегать к этому методу отладки, но когда я буду абсолютно и бесповоротно разочарован в PHP, я просто начну вставлять операторы echo каждые несколько строк (всегда с маркером, чтобы не забыть удалить их позже), чтобы точно выяснить, откуда исходит ошибка.В конце концов, вы доберетесь до сути кроличьей норы и точно поймете, в чем заключается проблемная строка кода.
Другие советы
Глупый я.
Пришлось закрыть теги.
Вместо того, чтобы<tag1>
Мне пришлось изменить его на <tag1 />
или <tag1></tag1>
Теперь все работает!