2015-12-08 8 views
2

У меня есть шаблон, который принимает параметры под названием «имя» и «тип».В MediaWiki можно ли перевести содержимое страницы, которое будет использоваться в качестве параметров для шаблона?

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

name=Thing|type=Whatsit 

Я зову шаблон таким образом: {{TemplateName | {{: Input1 }}}}

Однако шаблон просто получает текст «name = Thing | type = Whatsit». Не разбирая текст в качестве параметров, как если бы я сослался это так:

{{TemplateName | имя = Thing | типа = Whatsit}}

Есть ли способ, чтобы задобрить MediaWiki, чтобы увидеть страницу Профиля содержимое как фактические параметры, устанавливая {{{name}}} и {{{type}}} на этой основе? У меня были большие планы по использованию другого шаблона Foreach, чтобы создать много вызовов шаблона таким образом, передавая его Input1, Input2 и т. Д.

+0

Я не думаю, что это невозможно без дополнительное расширение. Я думаю, что с расширением Scribunto это выполнимо. –

+0

Спасибо за комментарий @ sorawee-porncharoenwase, вы напомнили мне, что я хотел оставить комментарий здесь, когда я пришел к окончательному ответу на мою проблему. Моя цель состояла в том, чтобы иметь страницы, содержащие информацию, которая может быть подключена к различным шаблонам посредством пересылки, чтобы вы могли просматривать один и тот же набор данных в разных форматах или представлениях, предоставляемых каждым шаблоном. Я достиг этого, создав эти страницы как не просто голые данные, а как фактические вызовы шаблонов, а затем, вызывая сами страницы в качестве шаблонов, чтобы передать им параметр «переключения». [1/2] – user1134918

+1

Другими словами, содержимое страниц похоже на '{{SwitchingTemplate | mode = {{{mode | standard}}} | name = Thing | type = Whatsit}}'. Затем я вызываю эти страницы с других страниц с помощью разметки «{{: page1 | mode = table}}" или "{{: page1 | mode = printable}}". SwitchingTemplate смотрит в «режим», а затем передает соответствующие параметры, которые были переданы в него (в шаблоне, который «режим» ссылается на такие утверждения, есть гораздо больше, чем «имя» и «тип»): '{{# ifeq: {{{mode}}} | standard | {{StandardView | name = {{{name}}} | type = {{{type}}}}} ',' {{#ifeq: {{{mode} }} | table | {{TableView | name = {{{name}}}}}}} 'и т. д. – user1134918

ответ

1

Невозможно перевести содержимое страницы, используемые в качестве параметров для шаблона. MediaWiki сначала анализирует структуру шаблона, т. Е. '{{', '|' а также '}}'. Впоследствии он расширяет шаблоны внутри этого выражения, но если это расширение содержит '|' это interpreted as a literal '|', а не разделитель параметров. Следовательно, количество параметров больше не может измениться. Такое поведение было необходимо для работы {{!}} template, которая использовалась для вставки литерала '|' в параметре шаблона.

Однако, изменяя порядок переходов, вы все равно можете делать именно то, что хотите. Параметры шаблона могут использоваться для construct the name of another template. Таким образом, вы можете передать имя шаблона в качестве параметра страницы, содержащей ваши параметры: {{:Input1|TemplateName}}. Ваша страница «Input» будет затем записать в виде:

{{{{{1|Standard}}} 
|Name=Input1 
|Param1=Value1 
|Param2=Value2 
}} 

Так transcluding страницы, содержащие параметры, как {{:Input1|TableView}} даст желаемый результат:

{{TableView 
|Name=Input1 
|Param1=Value1 
|Param2=Value2 
}} 

 Смежные вопросы

  • Нет связанных вопросов^_^