Je veux créer un modèle MediaWiki comme
<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
{{{code}}}
</syntaxhighlight>
et l'utiliser dans les pages d'articles normales
{{SourceCode|source=public static void main() {...}}}
mais le problème est que les balises <syntaxhighlight></syntaxhighlight>
défont le paramètre {{{code}}}
et que le résultat formaté actuel est
<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
{{{code}}}
</syntaxhighlight>
au lieu de
<syntaxhighlight lang="Java" style="background-color:lightgray; border:1px dashed gray;">
public static void main() {...}
</syntaxhighlight>
Une idée?
Le problème est que le code à l'intérieur de "balises d'extension" comme <syntaxhighlight>
n'est pas analysé, c'est pourquoi le {{{code}}}
n'est pas remplacé par la valeur du paramètre code
.
Ce que vous devez utiliser est d'utiliser {{#tag}}
fonction d'analyse:
{{#tag:syntaxhighlight|{{{code}}}|lang=Java|style=background-color:lightgray; border:1px dashed gray;}}
Oui, vous pouvez le faire avec les balises <includeonly>
, comme ceci: (styles personnalisés supprimés pour plus de clarté)
<includeonly><syntaxhighlight lang="Java"></includeonly>
{{{code}}}
<includeonly></syntaxhighlight></includeonly>
De mediawiki.org :
Le balisage
<includeonly>...</includeonly>
signifie que le texte entre les balises ne sera utilisé que lorsque la page est incluse dans une autre page et n'apparaîtra pas sur la page elle-même.
Donc, fondamentalement, les balises <syntaxhighlight>
sont ignorées sur la page de modèle, trompant l’analyseur en mettant en surbrillance le paramètre de code lorsqu’il est inclus dans une autre page.