Тег процесса Mediawiki после включения шаблонов - PullRequest
0 голосов
/ 20 апреля 2011

Есть ли способ сделать что-то подобное.У меня есть следующий текст вики:

{{template_open_tag}}
{{template_some_data}}
{{template_close_tag}}

И есть шаблоны:

{{template_open_tag}}

<my-tag>

{{template_some_data}}

bla-bla-bla...

{{template_close_tag}}

</my-tag>

Но тег '' уже обрабатывался, когда первый шаблон прошел, и вики отображают эту страницу следующим образом:

bla-bla-bla...
</my-tag>

Но я хочу видеть:

**bla-bla-bla...**

В моем добавлении:


$wgHooks['ParserFirstCallInit'][] = 'myTagInit';

function myTagInit( &$parser ) {
   $parser->setHook( 'my-tag', 'myTagRender' );
}

function myTagRender( $input, $args, $parser, $frame) {
   return "**".$input."**";
}

Спасибо.

PS И не спрашивайте меняпочему мне нужна эта странная разметка, и я не хочу использовать что-то вроде этого:

{{template_tag|{{template_some_data}}}}

и {{template_open_tag}} как:

<my-tag>{{{1}}}</my-tag>

Ответы [ 3 ]

2 голосов
/ 23 апреля 2011

Предупреждаю, что в будущих версиях MediaWiki такая структура, скорее всего, будет полностью исключена из-за ее непоследовательного поведения и трудностей, которые она вызывает со структурами, такими как теги и разделы.

Правильные испособ сделать это в будущем - это действительно включить начало и конец в один шаблон и передать середину в качестве параметра, например {{template_tag | {{template_some_data}}}}}

1 голос
/ 21 апреля 2011

Установите $ wgUseTidy на true, чтобы MediaWiki удаляла незамкнутые теги только после оценки всех шаблонов.В качестве альтернативы, вы можете использовать wikimarkup - как сказал Адриан - который не страдает от этого ограничения.

Обновление: Теги расширения в стиле XML AFAIK оцениваются до того, как произойдет шаблон, в том числе и по нимвместе из нескольких шаблонов это невозможно.(Событие <ext>{{{1}}}</ext> не работает до 1.16, хотя вы можете заставить его работать в 1.16 с recursiveTagParse.)

0 голосов
/ 21 апреля 2011

вместо <bold> используйте ''' в ваших {{template_open_tag}} и {{template_close_tag}}, и он должен отображаться как бла-бла-бла ...

Кроме того, вы не можете сделать:

{{template_open_tag}}
{{template_some_data}}
{{template_close_tag}}

Вы должны сделать

{{template_open_tag}}{{template_some_data}}{{template_close_tag}}
...