Help:Template/ja

From Meta, a Wikimedia project coordination wiki
MediaWiki ハンドブック: 目次読者編集者中間管理者システム管理者 +/-

「トランスクルージョン」(transclusion: リンクを使って参照することでコピーせずに引用することを指すコンピュータ用語)と呼ばれるプロセスを使って、あるページを他のページへ挿入することができます。そして、このようにして挿入するためだけに作られたページをテンプレート (template) と呼びます。

この手法は、ウィキのサブルーチン機能と考えることができ、#include文、またはページの表示時に展開されるマクロに相当します。代替(Substitution)を使えば、テンプレートはマクロとして使うこともできます。

このページと Help:Advanced templates は、メディアウィキでのテンプレートの使用説明書です。入門のためには、ヘルプ:テンプレート早わかりmw:Help:Templatesを参照してください。テンプレートでよく使われる文法については ja:Help:条件文 及び、このページ内で触れている各種ヘルプページを参照してください。

注: メタウィキメディアのm:Help:Templateページがこのページのマスタバージョンです。他のプロジェクト上のコピーの場合、テンプレートのデモがきちんと動作しない可能性があります。

基本[edit]

Template 名前空間とは、Template: プリフィクスをもった名前空間です(Templateというプリフィクスは全言語版で使用できますが、サイトによっては「正式名」は別の言葉になっています。例えば WikiFAQ では Snippet と呼んでいます)。

この名前空間内のページは、「テンプレート (template)」 と呼ばれています。各テンプレートの内容は、他のページへ挿入(トランスクルージョン)して、合成テキストを作るのに便利なように設計されています(固定テキストのものも、ja:引数変数依存しているものもあります)。テンプレートページは、「リンク元」のリスト内には、 MediaWiki:Istemplate の内容に応じて、 "inclusion" あるいは "transclusion" として表示されます。このプロジェクトの現在の設定は "transclusion" です。

"Template:テンプレート名" というページを挿入するためのシンタックス(構文)は{{テンプレート名}} です。この二重大括弧にはさんだ形を「テンプレートタグ」と呼んでいます。

例: abc{{tc}}def

(using Template:tc containing "in<noinclude>{{documentation}}</noinclude>")

は: abcindef となります。

ウィキテキスト内にこうした参照があると、参照しているページが生成される際に、テンプレートの内容が挿入されます。この動作について、いろいろな別な表現があります。

  • 包含 (inclusion) ・ ページをインクルードする - 「包含」という言いかた自体は曖昧さが残ります。トランスクルージョンをしていなくても、セクション等が「ページに包含されている」ということができるからです。ですが、この表現に基づいて、"noinclude" や "includeonly" タグが名付けられています(下記参照)。
  • トランスクルージョン (transclusion)・ページをトランスクルードする - この表現は「包含」よりも明確です。
  • ページの埋め込み (embedding)・ページを埋め込む

以下の表現は、「ページ」に対して使うには一般的すぎて不適切ですので、「テンプレート」に対してのみ使われます。

  • テンプレートの呼び出し・テンプレートを呼び出す - 生成結果よりもテンプレートタグについて言及しています。
  • テンプレートの使用・テンプレートを使う

To create a hyperlink to a template page, use the usual wikilink syntax [[Template:name]].

If name starts with a valid namespace prefix, or a colon, then it is not prefixed with "Template:". This way any page can be used as template (a colon at the start refers to the main namespace), except pages in namespaces specified in $wgNonincludableNamespaces.


文脈によっては、「包含」は「代替」 (substitution) に対立する概念として使うことがあります。

テンプレートページへのハイパーリンクを作成するために、通常のウィキリンク・シンタックスの[[Template:name]]を使ってください。

Templage名前空間にないページでも、 $wgNonincludableNamespaces で指定された名前空間以外にあるページは、テンプレートとして使用することができます。標準名前空間にあるページの場合は、ページ名の前にコロン (:) を付けてください。

同様に、変数名と競合する場合に、使うことができる、テンプレートを呼び出す別の方法がある。たとえば、Template:Ns:3Template:PAGENAMEである。

テンプレートとしてテンプレート名前空間以外のページを使うには、以下が便利である:

  • MediaWiki 名前空間で、インタフェースメッセージを引用する。
  • ある利用者ページのサブページにおいてテンプレートを試用してみる。
  • 同じ名前空間中で他のページ中のページの挿入を行なう。たとえば、各々のページに関連した特別なページがある場合、たとえば、TODOリストのようなものは、単純に名前に対応している。それは、{{{{NAMESPACE}}:{{PAGENAME}}/todo}}で作成と挿入ができる。

通常、テンプレート名は、最初の文字を除いて(ほとんどのプロジェクト上で)大文字小文字を区別し、空白は下線と同じとなる(パラメータ名に対して、以下を参照:それらは、最初の文字も含めて大文字小文字を区別し、空白と下線は別となる)。

もしもtranscludeされるページが存在しないならば、編集ページへのリンクが生成される。それゆえ、テンプレートを生成する1つの方法は、タグを最初に置き、次にリンクをたどる。例外は、MediaWiki名前空間中の"存在しない"ページのtransclusionはそのページの既定値の内容をtranscludeする。他の言い方では、ページをtranscludeすることは別として、指定した言語(既定値ではサイトの言語)中のsystem messageもtranscludeできる;結果は利用者が指定したインタフェース言語に依存しない。

他のテンプレートを呼び出すテンプレートを呼ぶことができる。もしもテンプレートが直接あるいは間接的に自分自身を呼ぶならば、各々のテンプレートのために挿入は1レベルのみ動作する。しかし、再帰的に呼び出しを行ないたいテンプレートへリダイレクトするテンプレートを使う場合、リダイレクトの回数によって制限されるレベルと共に、全てのテンプレートの内容をコピーすることなく、再帰を成し遂げることができる。Repetition within a pageTemplate:List of template calls [ talk edit history links ]を参照。

テンプレート中の変数は参照ページ中で、挿入後に評価される。すなわち、もしも、{{PAGENAME}}がテンプレートのwikitext中に現れるならば、それは描画されたページの名前として描画し、テンプレートの名前ではない。

ページに埋め込まれているページのリスト(templatelinks table中に記録されているものとして)、全てのリンクは編集ページ上で得られる。注意:

  • 最初にセクション編集ページ上で、全てのリストは得られる、すなわち、他のセクション中で使われるテンプレートもである;プレビューを押した後のみそれらはセクション中にあり、もしも可能ならば、編集が行なわれたために更新される;最初の編集のプレビューは完全なリストを得る;
  • 同様に、古いバージョンのページを編集中、挿入されるために使われるテンプレートが表示される、プレビューを押した後の間、現在のバージョンのためにリストは最初に得られ、もしも可能ならば、現在のセクション中で作られた古いバージョン上での編集のために更新される;
  • もしもページが#if、#ifeq、#ifexist、#ifexpr、又は#switchを通して条件付きで埋め込まれているならば、たとえ条件が満たされなくても、それは埋め込みとしてカウントされる
  • もしも埋め込まれたページの名前が式の場合すなわち、{{abc{{CURRENTDAY}}}}ならば、現在はTemplate:Abc19が与えられるか、又は、{{{{#ifexist:Template:A|A|x1}}|テンプレートが存在しない}}ならば、現在
テンプレートが存在しないが与えられ、現在のテンプレート名が表示される。

それゆえ、自動的に埋め込まれたテンプレートのページを探すために"リンク元"を使うために、以下を代りに使う。すなわち、

{{#if:..|{{a|pa1}}|{{b|pb1}}}}

これは代替を使わなければならない。すなわち、重複した条件:

{{{{#if:..|a|b}}|{{#if:..|pa1|pb1}}}}

あるいはTemplate:echo [ talk edit history links ]の使用:

{{{{#if:..|a|echo}}|1=pa1|echo={{b|pb1}}}}

2つの代替の最初のもののみ、"リンク元"はテンプレートBに実際に埋め込まれているページを見つけることもできる。2番目の代替はページはいつでも埋め込みと解釈される。もしも"b"を"{{if:1|b}}" で置き換えるならば、ページは埋め込みとは絶対に解釈されない。

(第1.4版以降でのサポート)

最後に改行を伴わないでページを保存したときと編集ページに再度行った場合、改行が最後に付く。しかしながら、これは効果があるようには見えず、上記と以下の例を参照:

{{Numbered list demo}}{{Numbered list demo}}
{{Numbered list demo}}

Template:Numbered list demoを使うと、

  1. India
  2. Beverungen
  3. Prague
  4. India
  5. Beverungen
  6. Prague
  7. India
  8. Beverungen
  9. Prague

が得られる。

テンプレート名中で、文字"#"とその後に続く任意の文字は無視される:{{tc#abc}}はinとなる。これはw:Template:hif [ talk edit history links ]中で使われる。

二重開始括弧で始まり閉じ括弧で終わるwikitextは3つの括弧を伴うテンプレートパラメータタグとして解釈される。これを防ぐには、少なくとも空白をその中に2つを4倍に使う。例をあげると、{{{{tc}}}} は、{{{{tc}}}}となり、{{ {{tc}}}}はTemplate:Inとなる。

Special:ExpandTemplatesを伴うと、描画に向かった中間として、テンプレート呼び出し手順でwikitextの拡張を見ることができる。同じことは//meta.wikimedia.org/w/index.php?title=Help:Template/ja&action=raw&templates=expandというURLでも生成できる。

プロジェクト間をまたがったテンプレートの使い方[edit]

テンプレートは同じプロジェクト内のページから参照されたときのみ動作する。他のプロジェクト内で使うには、それをコピーしなければならない。Bugzilla:1126はその制限を取り除く要望であり、すなわち、テンプレートのwiki間での利用を認めるというものである。

コピー中で、他のプロジェクト上で動作するために、調整が必要であり、それは、{{SERVER}}、ローカルなURLと一般的な名前空間の名前と、複数のプロジェクト上で動作するリンク記法、たとえばm:Help:Tableで、軽減できる。複数のテンプレートをコピーするために、exportimport は便利である。もしもテンプレート名が他のプロジェクト上で同じにできるならば、それも便利である。それゆえ、テンプレートの名前を選ぶときは、他のプロジェクト上で使う時に、テンプレートをコピーしたいと希望する名前かどうかをチェックする。もしもテンプレートが abc{{NAMESPACE}}のような形で参照されていたならば、異なった名前空間の名前を使うプロジェクトは異なったテンプレート名を要求するかリダイレクトを要求する。

プロジェクト間のtransclusionは、それゆえ、中心の位置から内容を変更し、以下のもののみが可能である:

  • Commons上の画像の形式中の内容のため、任意のページに、
  • Commons上の他のページからのtranscludeされた内容を含む、Commons上の画像ページ上の内容の編集のため、もしも同じ名前でローカルな画像がない場合、ローカルな画像ページに関連して、

分離されたWikiaプロジェクト上の、"wikia:"プロフィックスで提供される、中央のWikia上のテンプレートは利用される、shared templates on wikiaを参照。(それらの外部WikiaプロジェクトはWikimedia財団によってホスティングも管理もされていないことに注意。)

時々、複数のプロジェクトは、部分的に同じで、部分的に異なるページを要求する。例をあげると、いくつかのプロジェクト上で、"m:"はMetaへのwiki間リンクとして使われ、いくつかのプロジェクトでは、"MetaWikipedia:"である。この場合、共通のwikitextは、プロジェクト固有のテンプレートを呼び出すことによって使うことができる。例中で、ページのwikitextは{{meta}}を含み、Template:Metaは、要求されたプレフィックスを含む、各々のwiki上で持つことができる。

パラメータ[edit]

テンプレートのパラメータは、値渡しで、それゆえ、入力パラメータのみである(以下の"テンプレートの拡張"も参照)。それらは名前か暗黙の1、2、3のような番号かが付けられる。それぞれ利点欠点がある。暗黙の番号付けを使うと、呼び出しは短くてすむが、名前パラメータを使うと任意の順で呼び出せる。もしもパラメータ値が"="を含むならば、もしもそれが番号であったとしても(以下も参照)、明示的に名前を書かなければならない。

テンプレートの定義中で、フォーマルパラメータ(パラメータ値のためのplaceholder)は3つの括弧のペアを伴うパラメータ名である。そのため、例をあげると、myVariableNameを呼びたいと思うテンプレートパラメータのために、{{{myVariableName}}} を書くことができる。


MediaWiki version: 1.6 (パラメータの定義のために)

テンプレートの呼び出し中で、文法は以下のどれかである

  • {{テンプレート名|パラメータ名1=パラメータ値1|パラメータ名2=パラメータ値2}}{{{パラメータ名1|既定値}}}, {{{パラメータ名2|既定値}}}、などのタグがあるとする。テンプレート中では、あるいは
  • {{テンプレート名|パラメータ値1|パラメータ値2}}{{{1|既定値}}}, {{{2|既定値}}}, などのタグがテンプレート中にあるものとする。

既定値は(オプションで、先頭にパイプ文字が一緒にある)、全ての事象のために異なることができ、テンプレートを呼び出すとき、なんの価も指定しない場合、適用され、空白の価が指定された場合と混同することはない。

パラメータが定義されたかどうかを決定する方法は、異なった既定値を伴う2つの場合の結果を比較することによって定義される。すなわち、{{#ifeq: {{{a|+}}}|{{{a|-}}}|1|0}}である。

未定義のパラメータがあるページの置き換えで、既定値ではないが、パラメータそれ自身が既定値を伴う場合、wikitext中に置き換えられる。

例: 名前付きパラメータの置き換え[edit]

Name-exampleと呼ばれるテンプレートを作るとし(これは、Template:名前の例というテンプレート)、firstNameと呼ばれる最初の名前のためのパラメータと、lastNameと呼ばれる最後の名前のためのパラメータを伴う。

以下を新しいTemplate:名前の例中に入力する:

:これはテンプレートの例で、最初の名前は '''{{{firstName}}}''' で最後の名前は '''{{{lastName}}}'''である。
:
:このページは[[{{{lastName}}}, {{{firstName}}}]]で参照できる。

次のページ上では以下を入力する: {{名前の例}}

結果は:

これはテンプレートの例で、最初の名前は {{{firstName}}} で最後の名前は {{{lastName}}}である。
このページは[[{{{lastName}}}, {{{firstName}}}]]で参照できる。 である。

なぜならば、テンプレートにはパラメータがないからである。

しかし、もしも2番目のページに{{名前の例 | firstName=John | lastName=Smith}}と入力したならば、

結果はこのようになる:

これはテンプレートの例で、最初の名前は John で最後の名前は Smithである。
このページはSmith, Johnで参照できる。

To analyse the working, one can apply Special:ExpandTemplates to see the expanded wikitext as intermediate result: 動くことを分析するために、中間結果として拡張されたwikitextを見るために、Special:ExpandTemplatesを適用することができる:

:これはテンプレートの例で、最初の名前は '''John''' で最後の名前は '''Smith'''である。
:
:このページは[[Smith, John]]で参照できる。

このwikitextが直接適用されたとき、結果の描画は同じになる。

例: 数字パラメータの置き換え[edit]

どのようにパラメータ機能が置き換えるかの例である。

最も簡単な例[edit]

最初に名前がt0であるテンプレートを定義し、それは以下のようなものとする。

  • 1つの引数があると考える
  • その引数のテキストを帰し、その前後に空白はなく、"start-" と "-end"の間にはさまる:
start-{{{1}}}-end

定義はもちろんページTemplate:t0で始まる。

  1. テンプレートt0をパラメータ"a"で呼び出すと、すなわち、
    {{t0|a}}
    "start-a-end" を得る。
  2. テンプレートt0をパラメータ" "(空白)で呼び出すと、すなわち、
    {{t0| }}
    "start- -end" を得る。
  3. テンプレートt0をパラメータ""(空の文字列)で呼び出すと、すなわち、
    {{t0|}}
    "start--end"を得る。
  4. テンプレートt0をパラメータ無しで呼び出すと、すなわち、
    {{t0}}
    "start-{{{1}}}-end"を得る。

もしも、{{{1}}}のようなものか、あるいは、実際、任意の{{{name}}}は、普通のページ上で見ることができ、それは、このページ上で使われたテンプレートが定義されていないものの義務的なパラメータを通常示す。

テンプレートt0を2つの改行からなるパラメータで呼び出すと、すなわち、

 {{t0|     }}

start-     -endを得る。

{{t0|

}}

start-

-endを得る。

それゆえ、パラメータ機能の場合と違って、空白と改行には複雑さはない。conditional whitespaceと比較するとよい。

既定値の定義[edit]

tという名前の同様なテンプレートを定義し、それには既定値がpqrである、単一の番号付けられたパラメータ1がある。tとt0の間の効果の違いは、それらがパラメータ無しで呼ばれた(そして"|"が無い)場合にのみ現れる:

start-{{{1|pqr}}}-end

定義はもちろんTemplate:tページ上で行なわれる。

  1. テンプレートtをパラメータ値"a"で呼び出すと、すなわち、
    {{t|a}}
    "start-a-end"を得る。
  2. テンプレートtをパラメータ値" "で呼び出すと、すなわち、
    {{t| }}
    "start- -end"を得る。
  3. テンプレートtをパラメータ値""で呼び出すと、すなわち、
    {{t|}}
    "start--end"を得る。
  4. テンプレートtをパラメータ値1=で呼び出すと、すなわち、
    {{t|1=no surprise}}
    "start-no surprise-end"を得る。
  5. テンプレートtを名前が付いていないパラメータの後にパラメータ値1=で呼び出すと、すなわち、
    {{t|no|1=surprise}}
    "start-surprise-end"を得る。
  6. テンプレートtを名前が付いていないパラメータの前にパラメータ値1=で呼び出すと、すなわち、
    {{t|1=no|surprise}}
    "start-surprise-end"を得る。
  7. テンプレートtをパラメータ無しで呼び出すと、すなわち、
    {{t}}
    "start-pqr-end"を得る。
  8. テンプレートtを名前がない、あるいは名前が付いていないパラメータ1で呼び出すと、すなわち、
    {{t|2=two}}
    "start-pqr-end"を得る。

パラメータ値の制限[edit]

  • もしも、パラメータ値が等号("=")を含むのであれば、パラメータ名は、たとえそれが 1、2、3などだとしても、明示的に書かなければならない、
  • もしも、パラメータ値のための式が、変数又はパラメータタグの一部でない、2つの連続した閉じた括弧を含むならば、それらはnowikiタグ中に置かれなければならない。
  • パラメータ値のための式は、パイプ文字列に起因して、問い合せ文字列を含むlocalurl変数を含むことは出来ない。
  • パラメータ値は大括弧のペアかリンク内で使われるテキストを含んでもよいが、リンクの終了部分と他のリンクの開始部分を含んではいけない:{{tlis|abc]]def[[ghi}} のためにTemplate:tlis containing "[[a{{{1}}}b]]" は {{tlis|abc]]def[[ghi}}を得、期待した aabc]]def[[ghib ではない。

パイプ文字を含むパラメータ値[edit]

テンプレート呼び出し、関数呼び出しのパーサ、パイプされたリンク、あるいはイメージタグの一部でない、パイプ文字(|) を含むパラメータ値を定義するためには、|"を含むTemplate:! を使う。Template:t0 containing "start-{{{1}}}-end"を使うことで、{{t0|a{{!}}b}} がstart-a|b-endとなるものと、{{t0|a&#124;b}} がstart-a|b-endと{{t0|a|b}}がstart-a-endとなるものを比較せよ。1番目と2番目の違いは、最初の場合、拡張されたwikitextがstart-a|b-endで、2番目はstart-a&#124;b-endである。最終出力中では同じように描画されるが、テーブル文法中で使うときには異なってくる。この時には"真の"パイプ文字が必要である。

{{x2|{{{!}} 
{{!}} A 
{{!}} B
{{!}}- 
{{!}} C
{{!}} D
{{!}}}
}}

A B
C D
A B
C D


となり、また

{{x2|{&#124; 
&#124; A 
&#124; B
&#124;- 
&#124; C
&#124; D
&#124;}

}}

{| | A | B |- | C | D |} {| | A | B |- | C | D |}


となり、

{{x2|{| 
| A 
| B
|- 
| C
| D
|}
}}

{{

となる。 同様の構成は、二重の閉じた括弧を含むためのパラメータ値を認めることができる。パラメータがこの方法で"|"と"}}"を含むことができても、それはごくまれにしか使われない。しかしながら、ページ名は"|"または括弧を含んではいけない。

パラメータ値中での等号[edit]

パラメータ値が等号を含んでいるとき、パラメータ名は明示的に開始されなければならず、それ以外は、等号の前のパラメータ値の部分はパラメータ名として扱われる。もしも問題が発生した場合、このパラメータは使われていない可能性があり、それゆえ無害であるが、暗黙で使うことを期待するパラメータ 1、2、3、などは何の価も得ない。

例: {{TTT|a=b|c}} (using Template:TTT containing "{{{1}}}{{{2}}}") はc{{{2}}} (未定義のパラメータ a には値 b が割り当てられ、パラメータ名が指定されていないもののための最初のパラメータ値には 暗黙の名前 "1" パラメータが割り当てられる—それは次のように読める: テンプレート TTT を使い、"b"をパラメータ"a"に割り当て、値 "c" を最初の暗黙のパラメータ {{{1}}}のために使う。)を得、 {{TTT|1=a=b|2=c}} は a=bcを得る(最初のパラメータは値 "a=b" を割り当てる — それは以下のように読める: テンプレートTTTを使い、展開された パラメータ "1" に"a=b" を割り当て、展開されたパラメータ "2" に"c"を割り当てる)。 {{TTT|1=a=b|2=c|d}}はdcを得、 "d" は最初の暗黙のパラメータとして"1"に割り当て、"a=b"を上書きする。

パラメータの定義(パイプ文字またはパイプ文字とテンプレート終了タグ)はテンプレート、パーサ機能、変数、あるいはパラメータに依存してもよい。明示的/暗黙のパラメータの名前は展開の後に決定される。例をあげると、もしもその変数が等号を含んでいないならば、テンプレートの呼び出し {{t2|{{{a}}}}} は{{{a}}}の値を暗黙のパラメータ 1 に割り当てるが、もしもそれが値 "b=c" ならば、Cはbに割り当てられる。もしも{{{a}}}の値を 1 に何らかの方法で割り当てたいならば、明示的なパラメータ 1 {{t2|1={{{a}}}}}を使う必要がある。

比較:

  • {{t2a1|1=x=y}} (Template:t2a1 containing "{{t2demo|a|{{{1}}}}}")は start-a-middle-x=y-endを得る。
  • {{t2a2|1=x=y}} (Template:t2a2 containing "{{t2demo|a|2={{{1}}}}}")は start-a-middle-x=y-endを得る。

同様に、{{{a}}} が値 "c=d" を持つとき、パラメータの定義 {{{a}}}=b の結果は "d=b" で cに割り当てられ、例をあげると:

  • {{t5|a=2=d}} (Template:t5 containing "{{t2demo|{{{a}}}=b}}")はstart-{{{1}}}-middle-{{{2}}}-endとなる。

名前のないパラメータと名前のあるパラメータの混合[edit]

名前があるものとないもののパラメータをテンプレートタグ中で混合する場合、名前のないパラメータは1、2、3、...と番号付けられ、それゆえ、それらは混合リストの全体として、位置にそって番号付けられない

例をあげると、{{t sup|3=1|2|1=3|4|5|6|7}} でTemplate:t sup containing "{{{1}}}-{{{2}}}-{{{3}}}<noinclude> [[Category:templates|T sup]]</noinclude>" を使うと、3-4-5を得る。

パラメータが展開されないとき[edit]

MediaWiki version: 1.6 (for parameters defaults)

タグの中(HTML、wiki、又は拡張)か、<html></html>タグの間にある時、パラメータは展開されない。

以下は、パラメータが展開されないため、テンプレート内では動作しない。

 <myextension xparam={{{tparam}}}> ... </myextension>
 <html><span onmouseover="return escape('foobar')"> {{{1}}} </span></html>
 

これは、Template:Hidden がパズルのような例外を提供するとしても、バージョン1.8.2 まで真である。他に説明は必要か?

テンプレートのメカニズム[edit]

テンプレートのメカニズムは以下のステップを含む:

  • テンプレートの呼び出し中のパイプ文字はテンプレート名とパラメータ定義の分離を決定する。この分離はテンプレートの開始/終了括弧の間のテキストの展開された形式中で可能なパイプ文字に依存しない。例をあげると、 {{ {{t6}} }} で、Template:t6 containing "t2demo|a"は{{ t2demo|a }}を得るが、start-a -middle-{{{2}}}-endは{{ t2demo|a }}の結果ではない。これは、"t2demo|a"は有効なテンプレート名ではない(存在しない有効な名前を使うテンプレート名と混同しない)ことにより、テンプレート呼び出しは展開されない。
このケースの場合、部分的又は連続する置換は、置換を伴わないものと同じ結果を与えない:

{{ {{subst:t6}} }}は{{ t2demo|a }}というwikitextを得、start-a -middle-{{{2}}}-endと描画される。

  • テンプレート名と各々のパラメータの定義は評価される。それぞれのパラメータ定義中の最も左側の等号は、もしもあれば、パラメータ値からパラメータ名を分離する。
  • 値は左から右に、パラメータに割り当てられ(結果は直接見ることは出来ない)、名前がある、あるいは番号のパラメータは、時々指定することをしてもよく、最後のものは、以下のテンプレートの最後のインスタンスかを行なっている最中にパラメータを渡すときに保存される実際の価である。
  • テンプレートの呼び出しは、名前に一致するパラメータタグがそれらの値か既定値によって置き換えられる、テンプレートの内容によって置き換えられる(このステップの結果はsubstを再度か、直接テンプレートと変数に適用することにより見ることが出来る)。

プロセスは置き換えられるテンプレート呼び出しがなくなるまで再帰的に適用される。

全てのパラメータ値の前後の空白は、もしも"="が使われると無視される。

"{{t|1= a}}" は "start-a-end"を得る。
"{{t|1=a }}" は "start-a-end"を得る。
"{{t| a}}" は "start- a-end"を得る。
"{{t|a }}" は "start-a -end"を得る。

パラメータ値はパイプリンクを含むことが出来る;そのようなリンクの中の"|"はパラメータセパレータとしては使われない。

例: "{{t|[[a|b]]}}" は "start-b-end"を得る。
例: "{{t|[[a|b]] }}" は "start-b -end"を得る。

(この場合、空白は意味を持つ。)

描画上で、残りのパラメータ値(テンプレート中に現われない名前付きのパラメータを含む)は無視される:{{t|a|b}} は start-a-endを得る。

名前がないパラメータ(すなわち、等号を持たないもの)は暗黙的に、左から右に、1から始まる番号がつけられる。

例: "{{t|a|b|c}}" は"{{t|1=a|2=b|3=c}}"と等価である。

番号付けられたパラメータは、無視およびそれらを明示的に番号付けることによって、別の順番中で指定することが出来る。

例: "{{t|3=c|2=b|1=a}}"は "{{t|1=a|2=b|3=c}}"と等価である。
例: "{{t|a|b|c|10=j}}" は"{{t|1=a|2=b|3=c|10=j}}"と等価である。

これは、パラメータ 2のための値を指定する間、パラメータ 1 のための既定値を適用することを可能にもする:

{{t2d|2=a}}で、Template:t2d containing "start-{{{1|p}}}-middle-{{{2|q}}}-end"はstart-p-middle-a-endを得る。

テンプレートの呼び出しは同じ名前のパラメータの複数回存在でき、番号のパラメータは、明示的にその番号を使うことによって複数回指定できる。パラメータの有効な値は、同じ名前でのパラメータで最後に存在するものであり(左から右に)、パラメータ名は1回だけ評価される。

例: "{{t|a|b|c|2=B}}"は"{{t|a|B|c}}"と等価である。

インスタンス化されたテンプレートそれ自身の前のフォーマルパラメータの最後のリストは、次に、評価されたパラメータによって名付けられたものによってリストは索引付けられるという理由のために、順番が解除される(このリストはassociative arrayである)。

ParserFunctions がまだ有効でないとき、同じ名前のパラメータの複数の割り当て(と、それゆえパラメータの上書きを認める)は巧妙に、分岐を実行するのに使われ、すなわち、現在en:Template:If definedが検出された。

Help:Parameter defaultも参照。

テンプレートタグレイアウト[edit]

望ましいテンプレートタグレイアウトを持つために、特に、沢山のパラメータの場合は、追加のダミーパラメータは改行、空白、あるいはコメントと共に使うことが出来る。名前がないパラメータの場合、これは、いくつかのパラメータの番号はテンプレート内容で使われないことを意味し、そのため、テンプレートタグ中にあるそれらの価はテンプレートの描画には影響しない。例をあげると、 Template:t3d containing "{{{1}}} {{{2}}} {{{3}}}<br /> {{{5}}} {{{6}}} {{{7}}}<br /> {{{9}}} {{{10}}} {{{11}}}"を使う場合、

{{t3d |a|b|c| 1
      |d|e|f| 2
      |g|h|i| 3
}}

は:

a b c
d e f
g h i となる。

もしも、パラメータに名前があるならば、ダミーパラメータは簡単にいつでも挿入することが出来る。もしも、それらに名前がないならば、再番号付けを防ぐために、名前付きのパラメータを挿入することが出来る:もしも左の上のテキストがパラメータ番号の1つでないならば、任意の等号を含むテキストはそれを行なう:このテキストは使われていないパラメータの名前として解釈され、それゆえ無視される。

例:

Template:Chess position [ talk edit history links ]を使うと、

{{chess position|=

 8 |rd|nd|bd|qd|kd|bd|nd|rd|=
 7 |  |pd|pd|pd|pd|pd|pd|pd|=
 6 |pd|  |  |  |  |  |  |  |=
 5 |  |  |  |  |  |  |  |  |=
 4 |  |pl|  |  |  |  |pl|  |=
 3 |  |  |  |  |  |  |  |bl|=
 2 |pl|  |pl|pl|pl|pl|  |pl|=
 1 |rl|nl|bl|ql|kl|  |nl|rl|=
    a  b  c  d  e  f  g  h

|30}}

8 rd nd bd qd kd bd nd rd
7 pd pd pd pd pd pd pd
6 pd
5
4 pl pl
3 bl
2 pl pl pl pl pl pl
1 rl nl bl ql kl nl rl
a b c d e f g h

となる。

この例中で、パラメータリスト中の、1から8番目の行番号とaからhまでの列番号(空白と改行で囲まれている)はダミーパラメータ内に隠されている(等号の前の空白の名前があるので)。

テンプレートは、各々のセルが64の最初に自動的に番号付けられたパラメータから動的に生成される名前のイメージを含むHTMLを生成する(番号付けられたリスト中で中間のパラメータがあるが、それらのダミーパラメータは明示的に名前が付いていていて、既定値のパラメータ名を生成するために使われるパラメータ番号を増やさない。そのため、自動的に生成された名前のパラメータ"1"は実効的に"rd"の値を含む)。

テンプレートは以下を含むパラメータリストを伴って呼び出しを行なう:

  • 65のパラメータは自動的に"1"から"65"に番号付けられ(64番まではセルの内容用で、65番目はイメージの幅用)、
  • かつ、内部のテンプレートの内容中で使われない、ダミーの名前付きのパラメータ(その名前が空白の文字で、チェス盤のカラム名 aからhとそのまわりの空白と改行をともなう最後の割り当てからの、その実行値の結果)

パラメータはトリムされ、そのため、自動的に生成された名前"9"(上記のチェス盤のa7の位置)は空白の文字値に割り当てられる。

テンプレートページ[edit]

noincludeとincludeonly部分を伴わない、以下は同一である:

  • テンプレートのwikitextの描画(これはテンプレートページ上と、ページ依存の変数を除く、wikitextを伴う他のページ上で同じである)
  • パラメータを持たないテンプレートページ上の呼び出しの描画

それゆえ、既定値は以下のとおりである、すなわち、Template:T 1 containing "abc{{{1|def}}}ghi{{{1|jkl}}}mno"は {{t 1}}: "abcdefghijklmno"と同じ結果になる。

既定値が定義されていない場合のテンプレートページ[edit]

単純な場合で、これは普通のテキストとしてパラメータタグを取り扱うことと相当する。例は:

"{{t2demo}}" (Template:t2demoを使い、<!--t2-->start-{{{1}}}-middle-{{{2}}}-end<noinclude>[[Category:Demo template]]</noinclude>)は start-{{{1}}}-middle-{{{2}}}-endを得る。

同様に、もしも、パラメータの一部が未定義ならば、{{{parameter number or name}}}のように表示される。

しかしながら、いくつかのテンプレートは、パラメーター無しで呼び出したときにエラーメッセージを出すので、includeonlyに使われない限り(以下を参照)、添付レとページはこのメッセージも表示し、テンプレートに何か間違いがあるということを示唆する。例としては、wikitext{{#expr:2*{{{1}}}}} を伴う二重のパラメータ {{{1}}} は、Expression error: Unrecognized punctuation character "{".となる。そのケースの場合、includeonly はテンプレートページ上の情報価値が無くて不必要な描画を防ぐために使うことが出来るが、どちらにしても、テンプレート開発の間の不利は、noincludeタグの外側のページの部分中で(すなわち、挿入された部分)、プレビューが意味有りげに変更を反映しないということである。それゆえ、たとえ、それがテンプレートの開発中に一時的に完了するとしても、既定値を表示することを提供するのに便利に使える。

変数タグは表示されないが評価されることにも注意。

noincludeと共に、1つの既定値セットのみよりは沢山のデモとテストケースを含む、有用なテンプレートページは作成できる。一般的に、テンプレートページの非include部分は、テンプレートを包含又は置換する例を含む。テンプレートの動作の変更(すなわち、非include部分の外側の変更)は、プレビュー中のそれらの例中でまだ有効ではなく、 置換の場合、"変更を表示"中である。しかしながら、セーブの後に描画されたページ中でそれらは反映される。

いくつかの整形している外観は、どちらが、編集ボックスから容易に見られないか、見せるだろう。

パラメータ上で依存しているパラメータの値[edit]

上記で説明していたように、もしもパラメータが未定義で残っているならば、結果中の3重の括弧パラメータ名は、ページが他のページからテンプレートとして呼ばれたとしても機能しない;もしもそれをしたいならば、パラメータ値を省略せず、ページを呼び出すパラメータの観点で指定する;以下は比較である:

  • {{t2ademo|b}} (Template:t2ademoを使い、{{t2demo|a}})を含むものはstart-a-middle-{{{2}}}-endを得る
  • {{t2a1|b}} (Template:t2a1を使い、{{t2demo|a|{{{1}}}}})を含むものは start-a-middle-b-endを得る。
  • 同様に、 {{t2a2|b}} (Template:t2a2を使い、{{t2demo|a|2={{{1}}}}})を含むものはstart-a-middle-b-endを得る。以下も参照。

パラメータの観点でパラメータ値の最も簡単な説明は、同じ名前を使い、それを同じにすることである。すなわち、 Template:Lan is mr中の{{Lan is|lr=af|le={{{le}}}}}である。

空白対未定義[edit]

{{t2demo||a}}は、最初のパラメータを、それが未定義で残すというよりは空白の文字列と等しくなるようにする:それはstart--middle-a-endを得る。名前"2"として使う、2番目の名前のないパラメータを扱うことにより、最初の名前のないパラメータは未定義のままとなる。

例: {{t2demo|2=a}} はstart-{{{1}}}-middle-a-endを得る。

もしもパラメータが、<font size> のようなタグ中で使われるならば、既定値のテキストは、ひどいコードとして描画されるかもしれない結果というよりは、好都合なことに無視される不正なコードとして提供される(しかし、この方法はブラウザ依存である)。すなわち、Template talk:Fontsizeも参照。

パラメータ名(テンプレート名と対照的に)は、最初の文字と空白が架線と区別されるのとは対照的に、大文字小文字依存である。からの文字列も、有効なパラメータ名であり、 Template:T empty string as parameter nameを参照。

パラメータ 02 はパラメータ 2とは区別される:Template:t pl0 containing "{{{1}}}{{{2}}}{{{02}}}"を使い、 {{t pl0|5|6|7}}は56{{{02}}}を得る。

MediaWiki namespace (インタフェースメッセージ)中のパラメータは異なって書かれる: $1, $2, etc.のように。Meta-Wikimedia:MediaWiki namespace textも参照。

テンプレート内容を調べる[edit]

テンプレート内容を知るには、ページ自体を見るだけでは済まず、編集ボックスを覗かねばならない。何故なら、テンプレートページには:

  • 変数自体ではなく、変数の値が示されているからである。例: ページ en:Template:In Wikipedia にあっては
内容は :''See [[Wikipedia:{{PAGENAME}}]] for the usage of "{{PAGENAME}}" in Wikipedia.'' であるが
見えるのは
See Wikipedia:In Wikipedia for the usage of "In Wikipedia" in Wikipedia. となる。

実際、ウィキテキストのテンプレートページがレンダリングされる際には、更に一層の変換がなされることがあり、そのため混乱が起こって、検討しにくくなりうる。


msgnw[edit]

プレフィックスmsgnw ("message, nowiki"の短縮版)は、他のページ上の、テンプレートの未解釈のwikitextを表示するために使われる(同じことは、もしもページを編集する時に見ることが出来る)。例外は、番号がついた/ついていないリストは、#または*記号を表示するかわりのように描画される。パラメータ値は無視される。

noincludeとincludeonlyタグの導入部分で、表示する情報と同じように定義の面倒を見るためのテンプレートページを認めるために、msgnwは、includeされた時にテンプレートが何を珠琉河についての技術的な情報をモハや表示しないが、タグ付きで、テンプレートページそれ自身を描画するためのwikitextを伴う混合である。これはこれを適用する便利さを制限する。

例:

Template:en

  • {{msgnw:en}} は{{Languageicon|en|{{#language:en|{{Pagelang}}}}}}<noinclude>[[Category:Language icons|en]]</noinclude> を得る。
  • {{en}}は (英語) を得る。

Template:t [ talk edit history links ]

{{msgnw:t|a}} は

  • <includeonly><!--t-->start-{{{1|pqr}}}-end</includeonly><noinclude><nowiki>start-{{{1|pqr}}}-end</nowiki>

== Examples == {| class = "wikitable" ! Code ! Result |- style="vertical-align:top;" | <pre> {{T}} </pre> ||{{T}} |- style="vertical-align:top;" | <pre> {{T|}} </pre> ||{{T|}} |- style="vertical-align:top;" | <pre> {{T|abc}} </pre> ||{{T|abc}} |- style="vertical-align:top;" | <pre> {{T|abc|def}} </pre> ||{{T|abc|def}} |- style="vertical-align:top;" | <pre> {{T|1=abc|1=def}} </pre> ||{{T|1=abc|1=def}} |- style="vertical-align:top;" | <pre> {{T|abc|1=def}} </pre> ||{{T|abc|1=def}} |- style="vertical-align:top;" | <pre> {{T|1=abc|def}} </pre> ||{{T|1=abc|def}} |- style="vertical-align:top;" | <pre> {{T|{{T}}}} </pre> ||{{T|{{T}}}} |- style="vertical-align:top;" | <pre> {{T|{{T|{{T}}}}}} </pre> ||{{T|{{T|{{T}}}}}} |- style="vertical-align:top;" | <pre> {{T|{{T|{{T|{{T}}}}}}}} </pre> ||{{T|{{T|{{T|{{T}}}}}}}} |- style="vertical-align:top;" | <pre> {{T|a{{T|b}}}} </pre> ||{{T|a{{t|b}}}} |- style="vertical-align:top;" | <pre> {{T|{{T|a<nowiki>=</nowiki>b}}}} </pre> ||{{T|{{T|a=b}}}} |- style="vertical-align:top;" | <pre> {{T|<nowiki>a=b</nowiki>}} </pre> ||{{T|a=b}} |- style="vertical-align:top;" | <pre> {{T|1<nowiki>=a=b</nowiki>}} </pre> ||{{T|1=a=b}} |} <!-- customize to illustrate parameter use; remove space in subst to activate it; {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} {{sub st:nwrt|{{T|}}}} --> [[Category:Demo template]]</noinclude>
...これは、includeされたときにテンプレートが何を行なうかについてのフォーマルな情報よりもとても多い:

  • start-{{{1|pqr}}}-endを得る。

Template:Numbered list demo

{{msgnw:Numbered list demo}} は: #India #Beverungen #Prague を得る。

{{Numbered list demo}} は:

  1. India
  2. Beverungen
  3. Pragueを得る。

Template:Numbered list demoのための編集ボックスは:

#Amsterdam
#Rotterdam
#Little Rock

を表示する。

利用法[edit]

テンプレートが有用になるテキストとは、複数ページにコピーが必要であるが、各コピーにおいては、そのページに適合させるため別々に編集する必要がないような種類のもの全てである。パラメータが利用できるので、限定的ではあるが、ヴァージョンさえ色々にできるし、パラメータ値は個々のコピーに対して別々に編集可能である。テンプレートは便利なだけではなく、有用な均一性を"強制"するのにも使うことが出来る。advantages of subprogramsも参照。

典型的な応用としては:


色々な組み合わせが可能である。例えば、上記のうち最後の2例を組み合わせて、全ての言語のウィキペディアにおいて、同一の「国についてのインフォボックス」テンプレートがあるようにすることができる(各プロジェクトごとに一つのコピーを作るようにする。テンプレート機能は、プロジェクトを越えてインポートされないからである)。これは、データに対するパラメータを作って、標準用語の翻訳でもってテンプレートを参照するのである。

Help:Advanced templatesも参照。

合成ページ[edit]

ページのwikitextは(部分あるいは全体で)構成要素ページを含むためのタグから構成されていてもよい。"テンプレート"はテンプレート名前空間に居る必要は無く、それら自身によって、多かれ少なかれ、完全独立のページであってもよい。構成要素をテンプレート名前空間に置くことによる不便な点は、構成要素ページはそれ自身によって、それが単独で存在しているのが自然になってもよく、たとえば、プレフィックスが一方を指示している間、メインの名前空間の中である;また、プレフィックスはページ名を混乱させるだろう。

例は以下の通り:

これは、構成要素ページをばらばらか、合成して見るかの選択を利用者に認める。もしも遅い接続環境の時、ページをばらばらにして見たいと思うだろう;同様に、時々話題について分離したページを持ちたいと思う感情的な理由を持っている時もあり、たとえば、村である。結合したページを見ることは、もしも沢山の小さな構成ページがあるときにはとても便利である;もし何らかがあったとして、かつ、それにリンクしていて、内容を表示するのに便利で(全体の内容が表示されることが明解になり)、それがリンクを辿ることによって内容をチェックするトラブルを押さえる、副の話題ページが追加の情報を提供しないとしてもである。

後者の場合、ブラウザの検索機能は結合したページ内で検索するために使うことが出来る。画面編集機能と同様に、構成要素ページの編集が出来るが、編集ボックス中に結合したwikitextを持つことは出来ない。

編集履歴、最近更新したページ、ウォッチリストと"リンク元"は構成要素ページと合成ページ(composition page)のために分割して動作し、合成されたページ(composite page)ではない。構成要素ページと合成されたページ(composite page)のために、リンク先の更新状況は動作する。ページの保護は選択された構成要素ページと合成されたページ(composition page)のために設定できるが、合成ページ(composite page)には直接設定できない。

合成されたページ(composition page)は一般のページ中の合成(composition)について議論するために使われ、構成要素ページの会話ページの合成したページ(composite page)に追加できる。

合成ページ(composite page)は統合された目次とセクションの番号付けを持つ;番号付けは各々の構成要素ページのためにリセットされない。

構成要素ページの編集は、合成されたページ(composite page)から直接終わることが出来る。 editing sections of included templatesを参照。保存後、セクションの後に続く構成要素ページのためのページで終わる。

interlanguage link feature を使うプロジェクト上で、合成されたページ(composite page)は全ての構成要素ページの結合した言語間リンクを表示し、それゆえ、1つのページのためか、1つの言語のための複数のリンクが可能となる。

構成要素ページへの簡単なアクセスのため、合成ページ(composite page)上のそれらへのリンク(例は、構成要素ページ上のセルフリンク)は便利である。代替として、アクセスはセクション編集を通してであり、あるいは、もしも構成要素ページがテンプレート名前空間にあるならば、合成ページ(composite page)から呼び出したテンプレートのリストを通してであり、その編集ページである。

逆に、構成要素ページから、(もしもそれらがとてもたくさんなければ)それを呼び出す合成されたページ(composite page)への簡単なアクセスのために、構成要素ページからそれらへリンクするのは便利である(セルフリンクとなる合成されたページ上で(composite page)。

w:Wikipedia talk:Template namespace#transcluding proseも参照。

共通セクションを伴うページ[edit]

題名AとBの関係上のセクションまたはBのためのものがAのためのものとなる、サブトピックの等しい関連性は、AとBからのテンプレートとしての呼び出しで分離したページCとして作成することで、ページAとページB中の両方に置くことが出来る。

留意点:

  • AとBの両方を読む読者のために、重複を、メッセージ又は特別なレイアウトを表示させることは便利である;それ以外は、混乱と不自由である。たとえば、Template:common section [ talk edit history links ]を使うと
    (This section appears in several articles.)
    となる。
  • セーブ後、テンプレートページの閲覧を終わりにする。呼び出したページへの簡単なアクセスのために、呼び出したページをそれらにリンクすることは便利である(呼び出したページ上で、セルフリンクとなる)。これは、重複についてのメッセージ中で統合されるだろう。上記で示したような2ステップのリンクよりもこれはもっと便利である。
  • 埋め込まれたセクションのセクションレベルは各々の埋め込まれているページ中で同じでなければならない。同じことはレイアウトとスタイルについても適用される。
  • Cのようなページは以下のものの中に置くことが出来る
    • AとBで同じ名前空間;利点:
      • Cの内容の修理はAとBのそれと同じである
    • テンプレート名前空間;利点:
      • その編集ページにおいて、CはAとBから呼ばれるテンプレートのリスト中に現われる
      • それ自身によってCはAとBの名前空間中で、提供する内容のような、ページのための標準を満足しないだろう(しかしながら、重複についてのメッセージはそれを説明する)。

例::

ここで適用される多くの見解のために、以前のセクションも参照。

ページ内での反復[edit]

リストの場合のように、内容の類似した部分の継承のために、コンピュータプログラムはループを使う。MediaWiki中で最も近くなるものは、テンプレート中にループ本体をおくことであり、繰り返しテンプレートを呼び出すことであり、通常、それはパラメータ値を変化させることを伴う。これはいくぶん原始的なループである:

  • "for i=1 to 5"の代りに、値1、2、3、4、5を列挙する必要がある:他方、これは、as、de、frのような、より少ない通常の価を簡単に使うための融通性を与える(collection-controlled loop)。
  • コードの反復はテンプレートによって最小化されるが、テンプレートそれ自身の呼び出しは、毎回繰り返さなければならない(しかし、次のセクションも参照)

例:

  • Template:List of Languages - "ループ本体" はTemplate:Lang def中にある; 直接リスト中に後者の内容を入れることを比較した利点は、それが2回使われたとしても、可変部分("コード"の値)がコード中で各々1回起こると言うことである。これはリストの項目のコードの固定部分が、可変部分が通常手動で挿入される間は、コピーできるという理由で重要である。

同じテキストの繰り返しのために、ループ本体はパラメータに出来る、すなわち、 Template:X5 (listを参照)。

二重のループは最初に呼ぶものが繰り返し呼ぶ2番目のテンプレートによって達成される。同様に3重ループなどもできる。たとえば、w:Template:Ldw:Template:L2d、と w:Template:L3dを参照。

同じテンプレートが異なったループレベルのために使われている例は、Template:Loop 2である。無限のネスティングに対する組み込み保護機能をソフトウェアが持つため(もしもそれがあれば、たとえば、Fatal error: Maximum execution time of 30 seconds exceeded in /w/includes/Parser.php on line 775というエラーメッセージが生成される)、各々のレベルのためにリダイレクトが使われる。テンプレートが扱うことが出来るレベルの数は、それが構成される2つのテンプレートの呼び出し中で指定されるパラメータの数(レベルをあげるためには特別なパラメータを必要とするため)と、存在するリダイレクトの数によって決定される。

同様に、Template:Lanlp 1は二重ループのうちと外側両方に使われる。アイテムの追加(ここでは言語)は、各々の行に追加し、追加の行にもである。

wikitext中での同様なテンプレート呼び出しの繰り返し無しに効果的な繰り返しの提供

wikitext中でこのリストを実際に置かないで、同様なテンプレートの呼び出しの繰り返しのためのテクニックはTemplate:for [ talk edit history links ]にデモがあり、より原始的な方法は以下で説明される。

例 (using Template:t2 containing "Parameter 1 is "{{{1}}}", parameter 2 is "{{{2}}}"<noinclude>[[Category:Demo template]]</noinclude>"):

{{for|call=t2|pc1=constant|abc|def|ghi}} は:

Parameter 1 is "def", parameter 2 is "{{{2}}}"abcParameter 1 is "ghi", parameter 2 is "{{{2}}}"

を得る。

古いTemplate:List of template calls [ talk edit history links ] についての説明:

3つまでの名前のないパラメータを持つ、気ままなテンプレートのために、最初のパラメータを変化させ、可能な他のパラメータを固定させ、テンプレートを繰り返し呼び出すことそれは同じである:名前を指定し、固定のパラメータの値と最初のパラメータの値のリストは、各々順番の番号があり、最後に"end"で終わる、テンプレートの連続した呼び出し中で持つ。テクニックは、繰り返しの最大数と同じだけの、Template:List of template calls 3のようなリダイレクトを要求する。

もしも、たとえば、2番目のパラメータか、2つのパラメータが変化する場合、同様なテンプレートは作成できるが、各々のバージョンはその固有のリダイレクトのセットを必要とする。

例 (using Template:t2 containing "Parameter 1 is "{{{1}}}", parameter 2 is "{{{2}}}"<noinclude>[[Category:Demo template]]</noinclude>"):

{{List of template calls|t2|constant||abc|1|def|2|ghi|end|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}

は:

Template:List of template calls

を得る。

空白のパラメータがパラメータの最大数に合致するのに必要である繰り返したテンプレートは(現在は3つ)持つかとができ、それは繰り返しの最大数である。終わり部分で必要であるよりもより多い空白のパラメータを置くことは意味がないが、リストの始めに空白のパラメータをいくつか置くことで修正すべきである。

"このページ"への参照の曖昧性[edit]

もしもページが他のページ中に含まれるならば、含まれたページ上の”このページ”への参照は曖昧になる。何を意味しているかに依存するnoinclde又はincludeonlyタグを使うこと。代替としては、{{ページ名}}を使わないで明示的にページ名を説明する。

内部リンク[edit]

目標リンク先がパラメータに依存するテンプレート内の内部リンクの場合や、目標リンク先がテンプレートに依存するリンクの場合でも、存在検出は通常通り動作する。

例:

訳注
  • Template:tli のソースは、[[a{{{1}}}b|c{{{2}}}d]] であり、Template:tciit のソースは、文字列 insert in target であり、Template:tciil のソースは、文字列 insert in label であり、Template:La のソースは、 [[{{{1}}}a|{{{2}}}a]] [[{{{1}}}b|{{{2}}}b]] [[{{{1}}}c|{{{2}}}c]] [[{{{1}}}d|{{{2}}}d]] [[{{{1}}}e|{{{2}}}e]] である。

外部リンク[edit]

外部リンクの形で、多くのことが可能である。URL 内において置き換えられるパラメータ値又はテンプレート内容での空白は、URL 終端として理解されるのではなく、%20 に変換される。

例:

訳注
  • Template:tle のソースは [http://a{{{1}}}b c{{{2}}}d] である。従って、テンプレートタグ {{tle|insert in target|insert in label}} は、[http://ainsert in targetb cinsert in labeld] というリンクテキストを貼り付ける。つまり、ラベルが "in targetb cinsert in labeld" のリンク http://ainsert が出来る。
  • Template:tle2 のソースは http://a{{{1}}}b である。従って {{tle2|insert in target}} は "http://ainsert in targetb" となる。これに応じて:
    • [{{tle2|insert in target}} label] は [http://ainsert in targetb label]
    • [{{tle2|insert in target}}] は [http://ainsert in targetb]
「http:// から離れたブラケットは協動するとは認識されないことに注意」("note that brackets separated from the http:// are not recognized as belonging together:")の文意は不明確だが、"http://ainsert in targetb" において、"in target" がラベルとならないことを指すか?
  • Template:tle3 のソースは [http://a{{{1}}}b] である。従って {{tle3|insert in target}} は [http://ainsert in targetb] となる。
  • セクション「内部リンク」での訳注で言及した如く Template:tciit のソースは、文字列 insert in target であり、Template:tciil のソースは、文字列 insert in label である。従って [http://a{{tciit}}b c{{tciil}}d] は [http://ainsert in targetb cinsert in labeld] となる。
  • Template:tciit のソースは、文字列 insert in target だから、http://a{{tciit}}b は "http://ainsert in targetb" となり、[http://a{{tciit}}b] は [http://ainsert in targetb] となる。

しかし、URL は次のような形にはなりえない:

  • 初めの部分はパラメータにあり、次の部分がテンプレートにより付加されたもの(上記に見られるように、その逆--初めの部分はテンプレートにより予め決められており、次の部分がパラメータにある--は、うまくいく)。
  • 初めの部分はテンプレートにあり、次の部分がテンプレートの後にある(上記に見られるように、その逆--初めの部分はテンプレートの前にあり、次の部分はそのテンプレートにある--は、うまくいく)。

最初の制限の例:

訳注: Template:tae のソースは {{{1}}}add at the end である。従って {{tae|http://www.}} は "http://www.add at the end" となり、"at the end" は URL の中に入らない。

2番目の制限の例:

  • Template:th を使った [{{th}}add at the end] は [(タイ語)add at the end] となる。
  • "{{th}}add at the end" は "(タイ語)add at the end" となる。
訳注: Template:th のソースは http://www. である。従って [{{th}}add at the end] は [http://www.add at the end] となり、"{{th}}add at the end" は "http://www.add at the end" となって、ともに"at the end" は URL の中に入らない。

Noinclude、includeonlyとonlyinclude[edit]

この機能は、バージョン1.6以前では実装されていない。これらの機能はネストされたペア、あるいは'ブロック'として、それらがものを取り囲むという宣言であるので、wikitext(コード)のブロックの開始と終了を宣言することが出来るものとして適用される。

noinclude ブロック

<noinclude>と</noinclude>の間のすべては、ページが直接表示されるときのみ処理され表示される;これらはインクルードも、置き換えもされない。 可能なアプリケーションは以下の通り:

  1. テンプレートのカテゴライズ、テンプレートのドキュメントを参照。
  2. 他の言語中の同様なテンプレートへの言語間リンク
  3. MediaWiki名前空間中のページ。
includeonlyブロック

逆は<includeonly>である。<includeonly>と </includeonly>の間のテキストは、ページがインクルードされるときにのみ処理され表示される。インクルードされるアプリケーションは以下の通り:

  1. カテゴリへの与えられたテンプレートを含む全てのページの追加、しかし、テンプレートそれ自身ではない。
  2. テンプレートページ上で混乱した描画を防ぐ、例えば、{{#expr:{{{1}}}}} gives Expression error: Unrecognized punctuation character "{". [2]

一般的な内容とタグの部分の間の空白と改行は、一般的な内容に続くことに注意。もしも、それらが要求されないならば、インクルードタグは同じ行上の内容に直接続くべきである:

<noinclude>this is </noinclude>fine<includeonly>, closing tags are
</includeonly><noinclude>
less critical, but must be specified.</noinclude>
onlyinclude ブロック

ページ上で<onlyinclude>wikitext</onlyinclude>を使うとき、wikitextの表示は囲まれ、ページの残り(includeonly部分を除く)はそれ自身通常通りページ上で描画される。以下のデモページはテキストとコードの完全な画面表示を保持していて、デモンストレーションのように1つのonlyincludeブロックのように、いくつかのincludeonlyブロックを含む。 edit mode中のそのページを見ることは得策である。

しかしながら、transclusion中で、ページはonlyincludeブロック中でその部分のみを得る。テスト行は以下の通り:

Using [[Help:Template/onlyinclude demo]], 
     <nowiki>{{Help:Template/onlyinclude demo}}</nowiki> 
          は'''{{Help:Template/onlyinclude demo}}'''を得る。 

下を繰り返すとき: Using Help:Template/onlyinclude demoを得、 {{Help:Template/onlyinclude demo}} は defを得る。 もしも、そのページが含まれるならば、それがonlyincludeブロック内にあったとしても、includeonly部分として定義された、その他のブロックのtranscludeはしない。そのため、onlyincludeタグがあるページ上で、includeonly内のテキストは決して描画されない、すなわち、それはwikitextのコメントになる。 See also Help:Template/onlyinclude demo 2its talk pageも参照。

分割とinterworkingsに付いての警告

それらのタグの分割されたペアの入れ子か、同様な<nowiki></nowiki>の試みは来たい通りには動かない。

もしも、通常のページの内容内で<nowiki>が始まるか、"noinclude" 部分中か、1つの"includeonly"部分中でいうならば、それは同じ部分中で閉じなければならない

コード~<includeonly>~</includeonly>~~は、テンプレートがインクルードされたときに、~~~と表示され、テンプレートが置換されたときに~~~~と表示されるが、テンプレートがもう一度同じブロック内で結合される時にいわれるために有効となるようにそれのみ拡張されるだろう

テンプレートの始まりにおけるWikiマークアップ[edit]

もしもテンプレートの最初のインクルードされた文字が、:;*#というWikiのマークアップ文字の1つであるならば、行の最初に文字があるように解釈される(テンプレート呼び出しがされないとしても)。

この効果を防ぐためには、<nowiki>#</nowiki>NCRを、コロンのために &#58;のように使い、このNCRはlist定義を伴う結合中でも便利である。


置換[edit]

メインの記事: Help:Substitution

2つの開いた大括弧の後に"subst:"をおくことで、参照しているページを保存するときにwikitextの自動変換が引き起こる:substタグは、パラメータのために置き換えられるパラメータ値を伴う、テンプレートのwikitextによって置き換えられる。

リダイレクト[edit]

組み込むために呼び出されたページがリダイレクトページであった場合は、そのリダイレクトの目標ページが代わりに組み込まれる。通常、二重のリダイレクトは動作しない。

テンプレートとして他のページの組み込み以外のことをしないページは、他のページへのリダイレクトページに似てくるが、多くの相違点もある:

  • その結果のページ冒頭には、参照側ページの名前が示される。
  • リダイレクトメッセージはない
  • 編集(ページ全体のための)、ウォッチ、会話、履歴、"リンク元"、と"編集履歴"などのようなボタンは参照しているページに関するものになる(その全体のページにアクセス可能な所から、ターゲットページに行くために、セクション編集を使うことが出来る)。
  • 参照しているページはターゲットページの同じカテゴリ中にあるが、includeonlyとnoincludeタグが使われているときは例外である。
  • "二重ダイレクト"(一方又は両方が上記のような「擬似ダイレクト」になる)が起こる。

Help:Template namespaceHelp:Template namespace - demo of alternative for redirectを比較すること。

そのような参照しているページを順番に含むページ中ではなんの違いもない。

redirectingが動作する所にある全てのページのための埋め込みは動作し、リダイレクトが動かないところにあるすべてのページのためには失敗する。

リンクと埋め込みの比較[edit]

リンクと埋め込みは以下を共通で持つ:

  • もしもページが存在しなければ、編集ページへのリンクが表示される;もしもパイプされたリンクでなければ、リンクは同一である;リンクはパラメータは表示せず、新しいページがリンクされるか埋め込まれるかどうかを、作成後に表示しない。
  • 名前は変数とパラメータに依存することが出来る。

あらかじめ作成済みのテンプレート[edit]

Variableparser functionはあらかじめ作成済みのテンプレートとして考えることが出来る。それらの動作が、より基本的なwikitextの機能から考えることが出来ない何らかの拡張であるため、それらはそれが何をするかというwikitextに関して定義するページがない。

いくつかの追加の違いは以下の通り:

  • 構文解析機能は、最初の"|"の代りに":"を使う。
  • 編集ページはページ上で使われたあらかじめ定義されたテンプレートをリストしない。
  • それらが使われたページを探すための、あらかじめ定義されたテンプレートのための、"リンク元"は無効である。
  • #switchは別として、あらかじめ定義されたテンプレートは名前付けられたパラメータの定義を認めず、それゆえ、等号は通常特別な効果を生じない。以下を比較:
    {{ #if: not blank | 2=abc }}2=abcを得る
    {{ ifdef | not blank | 2=abc }}abcを得る
  • しかし、既定値を持たない未定義パラメータのための表示された値をこわすことは可能であり、より詳細な例はTemplate:ifeq demo [ talk edit history links ]を参照:
    {{ #if: {{ns:0}} | 2=xy | {{{2|blank}}} }}blankを得る
    {{ #if: {{ns:0}} | 2=xy | {{{2 }}} }}{{{2 }}}を得る
    {{ #if: {{ns:0}} | oops | {{{1|blank}}} }}blankを得る
    {{ #if: {{ns:0}} | oops | {{{1 }}} }}{{{1 }}}を得る

普通のおよびあらかじめ定義され戸テンプレートは、それらのパラメータ値が普通の及びあらかじめ定義されたテンプレート上で依存することは共通である。名前付きのパラメータの場合、テンプレート呼び出し中で使われる名前は普通の及びあらかじめ定義されたテンプレートに依存もする。これは#switchの名前が付いたパラメータのためにも適用される。

テンプレートの拡張[edit]

まず第一に、内部でテンプレート呼び出しの拡張を行なうことは、パラメータの名前部分を識別することと、セパレータ "|"に基づく、二重および三重の中カッコと二重の大括弧を含まない、各々のパラメータ定義部分を識別することを伴う(wikitext中の外部のテンプレート呼び出しで可能な限り明確で、それゆえ、"|"をカウントせず、すなわち、内部テンプレートのコンテンツ)。各々のパートは、その各々のパラメータ定義部分が分離された後に、もしも適用されるならば、最も左の"="に基づいて、パラメータ名とパラメータ値に分離される。左から右にそれらのパラメータ定義を実行すると、関連する(名前、値)のペアの配列は、名前のないパラメータのための番号を含み、固有の名前で構築される。

あらかじめ定義されたテンプレートの拡張と拡張したテンプレートパラメータタグは、適用できるものと同じくらい遠く、同じものを伴う。

パラメータの値又はパラメータの既定値のための式の中にある"|"は、上記から伴うことは、二重および三重の中カッコと二重大括弧のペア内にのみ存在できる。"|"を含むwikitextに拡張するパラメータ定義を得るために、この文字はテンプレート内部の内容中に存在し鳴けければならず、構文解析機能又はパラメータ値などである。Template:! [ talk edit history links ]..を参照。

then-partかelse-partと、使われていないテンプレートパラメータの場合のための#ifexprその他の場合の場合のように、これらの副次的な評価がwikitext全体に影響出来ないとしても、wikitextの拡張は関連する:

  • 副評価は、あらかじめ拡張したインクルードサイズ(w:Wikipedia:Template limitsを参照)に追加するテンプレートの呼び出しに関連する。
  • 副作用
    • 副評価は、たとえ、結果のページ上にリンクがないとしても、pagelinks tableに基づき、入ってくるリンクのリストへのターゲットページ上に追加するリンクを生成する。
    • 副評価は、"リンク元"とtemplatelinks tableに基づく、含まれる項目にかかわるページの編集ページ上に追加することにかかわる。
    • いくつかの拡張は副評価中にいくつかの動作を実行してもよい、すなわち、VariablesExtension を伴う副評価は変数への阿多の割り当てにかかわってもよい。

それゆえ{{ #ifexpr:.. | {{a|パラメータ}} | {{b |パラメータ}} }}は 条件に関係なく{{a|パラメータ}} {{b|パラメータ}}を評価する。別の点で、{{ {{#ifexpr:..|a|b}} | パラメータ }}はテンプレートのための式とパラメータと実際にインクルードされるものを評価する(条件評価と、a または b 中の結果によって)。

ParserFunctions#Code_executionも参照。

Mediawikiのバージョン間でのテンプレートの違い[edit]

Version 1.6[edit]

  • より多くのマジックワードとparameter default 機能が追加された。
  • <noinclude><includeonly> (上記参照)が追加された。

Version 1.5[edit]

Version 1.4[edit]

  • 同じページ内で5個以上の同じテンプレートを含むことは、バージョン1.4から動くようになり、現在全てのWikimediaサイト上で動作する。また、新しいことは、substがパラメータ付きで動作する夜になったということである。

Version 1.3[edit]

  • とりわけ、default values of parametersを参照。バージョン1.3で始めるとプレフィックス"msg:"は一本的にオプションである。

Version 1.2.6[edit]

  • MediaWiki バージョン 1.2.6 では、ページ MediaWiki:mytemplate を作成したら、それへの参照を {{msg:mytemplate}} で行うようにすること。
  • Template:mytemplate の内容を保持すると云う意味で、バージョン 1.3 との互換性は、MediaWiki:mytemplate から 1.2.6 プロジェクトにおける Template:mytemplate へのリダイレクトにより保たれる。バージョン 1.3 でのプリフィックス "msg:" はオプショナルであって無視される。

テンプレートを含むページの改定履歴[edit]

保存されているヘルプ:ページ履歴 (Help:Page history) 中のページは、テンプレート及び画像への可能な範囲での参照を伴ったウィキテキストからなる。旧版のページを見る場合、(まだ存在する場合には)テンプレート及び画像への参照は現行版に対し行なわれる。従って、以前そのままのテンプレート・画像結果を含むページは再構成されない。

参考[edit]

メディアウィキ・ユーザーズガイド - ヘルプ・ページ全部

一般的な利用法: 表示 | 検索 | URL | 名前空間 | ページ名 | セクション | リンク | リンク元 | パイプ付きリンク | 言語間リンク | リダイレクト | 変数 | カテゴリ | 画像ページ | 特別ページ
ログイン及びユーザー設定: ログイン | オプション | 外装の詳細設定
起稿・編集: ページの編集 | 新規ページの作成 | 画像/ファイル | 特殊文字 | 数式の書き方 | 表の作り方 | EasyTimeline | テンプレート | リダイレクト | ページの移動 | 編集用ショートカット | トークページ | 公開前のテスト | Help/ja 関連ページの更新状況
改定追跡: 最近更新したページ | 拡張された最近更新したページ | リンク先の更新状況 | ウォッチリスト | 差分 | 履歴 | 要約欄 | ユーザの投稿記録 | 細部の編集 | 編集の巡回

他プロジェクト: Wikibooks | Wikicommons | Wikinews | Wikipedia | Wikiquote | Wikisource | Wiktionary - このテンプレートを編集


[edit]

(各テンプレートページで、「リンク元」をクリックすると、そのテンプレートを利用するページのリストを見ることができる。)

  • en:Template:Stub (英文版 Wikipedia のスタブメッセージ)
  • en:Template:Europe (英文版 Wikipedia のテンプレート「ヨーロッパ」)
  • en:Template:JuneCalendar(英文版 Wikipedia のテンプレート「6月のカレンダー」)
  • {{PAGENAME}} に依存する多数のパラメータ及び画像を有するテンプレート:
    • en:Template:Infobox Countries(英文版 Wikipedia のテンプレート「国のインフォボックス」)
      • {{PAGENAME}}_flag_large.png
      • {{PAGENAME}}_coat_of_arms_large.png
      • Location{{PAGENAME}}.png
    • fr:Modèle:Tableau pays (仏文版ウィキペディアのテンプレート「国のインフォボックス」)
      • {{PAGENAME}}_flag_medium.png
      • {{PAGENAME}}_armoirie.png
      • Location{{PAGENAME}}.png
    • cy:Template:Dosbarthiad_biolegol (ウェールズ語版ウィキペディアのテンプレート。生物学上の分類のインフォボックス?)
  • eo:Ŝablono:El (エスペラント語版ウィキペディアのテンプレート。しばしば使われる小さい画像: 地球。)
  • fr:Modèle:Familia (仏文版ウィキペディアのテンプレート。単語の置き換え。)
  • http://wikibooks.org/wiki/Template:GeneralChemTOC (ウィキブックスのテンプレート「化学に就いての総目次」)
  • http://wikibooks.org/wiki/Template:New (ウィキブックスのテンプレート「新規記事」)
  • Quote of the day (ウィキクォートのテンプレート「今日の引用」)
メディアウィキ・ユーザーズガイド - ヘルプ・ページ全部

一般的な利用法: 表示 | 検索 | URL | 名前空間 | ページ名 | セクション | リンク | リンク元 | パイプ付きリンク | 言語間リンク | リダイレクト | 変数 | カテゴリ | 画像ページ | 特別ページ
ログイン及びユーザー設定: ログイン | オプション | 外装の詳細設定
起稿・編集: ページの編集 | 新規ページの作成 | 画像/ファイル | 特殊文字 | 数式の書き方 | 表の作り方 | EasyTimeline | テンプレート | リダイレクト | ページの移動 | 編集用ショートカット | トークページ | 公開前のテスト | Help/ja 関連ページの更新状況
改定追跡: 最近更新したページ | 拡張された最近更新したページ | リンク先の更新状況 | ウォッチリスト | 差分 | 履歴 | 要約欄 | ユーザの投稿記録 | 細部の編集 | 編集の巡回

他プロジェクト: Wikibooks | Wikicommons | Wikinews | Wikipedia | Wikiquote | Wikisource | Wiktionary - このテンプレートを編集