Pregunta

Creé algunas etiquetas personalizadas de mediawiki, usando la guía que se encuentra aquí.

http://www.mediawiki.org/wiki/Manual:Tag_extensions

Publicaré mi código a continuación, pero el problema es que después de llegar a la primera etiqueta personalizada en la página, la llama e imprime la respuesta, pero no obtiene nada que venga después en el wikitexto.Parece que simplemente deja de analizar la página.

¿Algunas ideas?

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";
}

Actualizar:@George Mauer: también lo he visto, pero esto no impide que la página se muestre, solo que el motor Mediawiki analiza el resto del wikitexto.Es como si presionar la función personalizada indicara a mediawiki que el procesamiento ha finalizado.Estoy en el proceso de sumergirme en la madriguera del conejo, pero esperaba que alguien más hubiera visto este comportamiento.

¿Fue útil?

Solución

Nunca usé Mediawiki, pero en mi experiencia ese tipo de problema es indicativo de un error de PHP que ocurrió pero que se suprimió con el operador @ o porque la salida de error de PHP a la pantalla está desactivada.

Odio recurrir a este método de depuración, pero cuando me siento total y absolutamente frustrado con PHP, simplemente empiezo a poner declaraciones de eco cada pocas líneas (siempre con un marcador para recordar eliminarlas más tarde), para descubrir exactamente de dónde viene el error. .Con el tiempo, llegarás al fondo de la madriguera del conejo y descubrirás exactamente cuál es la línea de código problemática.

Otros consejos

Tonto de mí.

Tuve que cerrar las etiquetas.

En lugar de<tag1> tuve que cambiarlo a <tag1 /> o <tag1></tag1>

¡Ahora todo funciona!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top