Domanda

Ho creato alcuni tag personalizzati mediawiki, utilizzando la guida trovata qui

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

Pubblicherò il mio codice qui sotto, ma il problema è che dopo aver raggiunto il primo tag personalizzato nella pagina, lo chiama e stampa la risposta, ma non ottiene nulla che venga dopo nel wikitesto.Sembra che smetta semplicemente di analizzare la pagina.

Qualche idea?

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

Aggiornamento:@George Mauer - L'ho visto anche io, ma questo non impedisce il rendering della pagina, ma solo il motore Mediawiki dall'analizzare il resto del wikitesto.È come se premere la funzione personalizzata segnalasse a mediawiki che l'elaborazione è stata completata.Sto per tuffarmi nella tana del coniglio, ma speravo che qualcun altro avesse visto questo comportamento.

È stato utile?

Soluzione

Non ho mai usato Mediawiki ma questo tipo di problema nella mia esperienza è indicativo di un errore PHP che si è verificato ma è stato eliminato con l'operatore @ o perché l'output dell'errore PHP sullo schermo è disattivato.

Odio ricorrere a questo metodo di debug, ma quando sono assolutamente e totalmente frustrato in PHP inizierò semplicemente a inserire istruzioni echo ogni poche righe (sempre con un indicatore in modo da ricordarmi di rimuoverle in seguito), per capire esattamente da dove proviene l'errore .Alla fine, arriverai al fondo della tana del coniglio e scoprirai esattamente qual è la riga di codice problematica.

Altri suggerimenti

Sciocco io.

Ho dovuto chiudere i tag.

Invece di<tag1> Ho dovuto cambiarlo in <tag1 /> O <tag1></tag1>

Adesso funziona tutto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top