2

「名前」と「タイプ」というパラメーターを取るテンプレートがあります。

私は現在、そのテンプレートを呼び出して、Input1 というページのトランスクルージョンされたコンテンツを渡そうとしています。

name=Thing|type=Whatsit

この方法でテンプレートを呼び出しています: {{TemplateName|{{:Input1}}}}

ただし、テンプレートは単に「name=Thing|type=Whatsit」というテキストを受け取っています。このように呼び出したかのように、テキストをパラメーターとして解析していません。

{{TemplateName|name=Thing|type=Whatsit}}

ページのコンテンツを実際のパラメータとして表示するように MediaWiki を誘導し、それに基づいて {{{name}}} と {{{type}}} を設定する方法はありますか? 別のテンプレートである Foreach を使用して、この方法でテンプレートへの多くの呼び出しを作成し、Input1、Input2 などを渡すことができるようにするという大きな計画がありました。

4

1 に答える 1

2

パラメータとして使用されるページのコンテンツをテンプレートにトランスクルージョンすることはできません。 MediaWiki は最初にテンプレート式の構造、つまり '{{', '|' を解析します。と '}}'。その後、その式内のテンプレートを展開しますが、この展開に「|」が含まれている場合 これはリテラル '|' として解釈されます パラメータセパレータではありません。したがって、パラメーターの数は変更できなくなります。この動作は、リテラル '|' を挿入するために使用された{{!}}テンプレートを機能させるために必要でした。テンプレートパラメータで。

ただし、トランスクルージョンの順序を変更することで、必要なことを正確に行うことができます。 テンプレート パラメータを使用して、別のテンプレートの名前を作成できます。したがって、テンプレートの名前をパラメーターとして、パラメーターを含むページに渡すことができます: {{:Input1|TemplateName}}. 「入力」ページは次のように記述されます。

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

したがって、パラメーターを含むページをトランスクルージョンする{{:Input1|TableView}}と、次のような結果が得られます。

{{TableView
|Name=Input1
|Param1=Value1
|Param2=Value2
}}
于 2017-01-06T06:14:37.857 に答える