Пользовательский тег Mediawiki Останавливает анализ страницы - PullRequest
1 голос
/ 08 сентября 2008

Я создал несколько пользовательских тегов 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";
}

Обновление: @ Джордж Мауэр - я тоже это видел, но это не останавливает рендеринг страницы, просто движок Mediawiki анализирует остальную часть викитекста. Как будто нажатие пользовательской функции сигнализирует MediaWiki, что обработка завершена. Я нахожусь в процессе погружения в кроличью нору, но надеялся, что кто-то еще видел это поведение.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2008

Глупый я.

Пришлось закрывать теги.

Вместо <tag1> мне пришлось изменить его на <tag1 /> или <tag1></tag1>

Теперь все работает!

0 голосов
/ 08 сентября 2008

Никогда не использовал Mediawiki, но такого рода проблемы в моем опыте указывают на ошибку PHP, которая произошла, но была подавлена ​​либо с помощью оператора @, либо из-за того, что вывод ошибки PHP на экран отключен.

Я не хочу прибегать к этому методу отладки, но когда я полностью и полностью расстроен в PHP, я просто начну помещать операторы echo каждые несколько строк (всегда с маркером, поэтому я не забуду их удалить позже), чтобы выяснить, где именно ошибка идет от. В конце концов, вы доберетесь до дна кроличьей норы и точно выясните, в чем заключается проблемная строка кода.

...