Пользовательский тег Mediawiki Останавливает синтаксический анализ страницы

StackOverflow https://stackoverflow.com/questions/49890

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top