Yourpedia:テンプレート

提供: Yourpedia
2008年2月2日 (土) 08:46時点における黄色のニクイ奴 (トーク | 投稿記録)による版 (ユアペディアにおけるテンプレートの歴史)

移動: 案内検索

テンプレート:HJ:h

この文書は、テンプレートの利用と作成ないしあるページを別のページに埋め込む方法に関して、ユアペディアの編集の仕方を説明する文書です。テンプレートについておおまかに知りたい方は、まずはHelp:テンプレート早わかりをご覧ください。

テンプレートとは

テンプレートとは、ユアペディアにおいて、定型文の入力を簡便にするなどのために用いられる仕組み、またこの仕組みを使って他のページに呼び出されているページのことです。ハイパーリンクを使って、テキストを直接コピーをせずに参照できる「トランスクルージョン (transclusion)」という手法を使っています。

個々のテンプレートの実体は、他のページと同じような独立した個々のページです。テンプレートは主に、複数のページにおいて同じ内容を表示するために使われます。テンプレートを変更すると、直ちにそれを使用している各ページに変更が反映されます。

トランスクルージョンはプロジェクト内のページであれば、基本的にどんなページにも使えます。Help:テンプレート早わかりなどでは説明を簡単にするために、「Template名前空間にあるページがテンプレートである」としていますが、実際にはどんなページも「テンプレート」として使うことができるのです。ただし、Template名前空間にページを置くことで、ユアテキスト中にただ{{テンプレート名}}とするだけで、あらゆる名前空間にこのテンプレートを呼び出すことができます(他の名前空間のページを読み込む方法については#Template名前空間以外のページの呼び出し方参照)。

なお、テンプレートを使う際には、読み込めるページサイズに制限があります。詳しくはHelp:テンプレートの制限を参照してください。

テンプレートを使う

テンプレートを呼び出す

テンプレートをページ内に呼び出すには、次のように記述します。

{{テンプレート名}}

この{{テンプレート名}}という書きかたを、「テンプレートタグ」と呼んでいます。

例えばTemplate:ネタバレというテンプレートについて考えてみましょう。ユアページに{{ネタバレ}}を挿入すると、このタグのあるすべての記事に以下のテキストが表示されます。


注意以降に核心部分が記述されています。

{{Reader toc ja}}のように、単語の間に空白のあるテンプレート名も可能です。最初の文字だけは大文字と小文字を区別しませんので、{{cleanup}}と{{Cleanup}}は同じテンプレートになりますが、{{cfd}}と{{CfD}}は区別されます。

テンプレートはまたテンプレートの生成時に代入されるテンプレートパラメーターを扱えます。

{{テンプレート名|引数1|引数2|.....}}

または

{{テンプレート名|テンプレート変数1=引数1|テンプレート変数2=引数2|.....}}

この場合、引数の部分はそれぞれ自由に変えることができます。各テンプレートでどのような引数に何を入れるかについては、各テンプレートページの説明を確認してください(説明がない場合は編集画面にして、ソースを覗いてください。ノートページに書いてある場合もあります。それでも分からないときはテンプレートを作った人に聞くとよいでしょう)。

なお、{{テンプレート名|引数1|引数2|.....}} の書き方は、引数の中に = が含まれているとうまく動作しません。この場合は、
{{テンプレート名|1=引数1|2=引数2|.....}}
のように、該当する引数の前に数字と = を入れてください。数字は、引数の「番目」の数です。

また、{{PAGENAME}} のような、システム変数と呼ばれるものも、テンプレートと同じ書き方ですが、テンプレートではありません。詳しくはHelp:マジックワードを参照してください。また、主としてテンプレート中で使われる {{#....}} のように、{{# で始まっているものも、条件文と呼ばれる別のものです。

スペースの無視

テンプレート名の前後の半角スペース、タブ、改行はないものとして扱われます。またテンプレート変数が = で指定されているとき、テンプレート変数や引数の前後の半角スペース、タブ、改行はないものとして扱われます。= で指定されていないとき、引数の前後のスペースは無視されません。

テンプレートの内容 読み込み方 表示
「Template:経路b」
{{{1|東京}}}から{{{2|博多}}}まで
{{経路b|1=名古屋|2=新大阪}}
名古屋から新大阪まで
{{ 経路b | 1 = 名古屋 | 2 = 新大阪 }}
名古屋から新大阪まで
{{経路b|名古屋|新大阪}}
名古屋から新大阪まで
{{経路b|名古屋 | 新大阪}}
名古屋 から 新大阪まで

自己リンク

通常、[[リンク先]] とするとリンクが作成されますが、このリンク先にそのページ名を入れると、自己リンクを避けるため、リンクではなくただの太字になります。テンプレートを呼び出した場合にも、テンプレート内に呼び出しした側のページへのリンクが含まれていると、自己リンクを防ぐため、リンクではなくただの太字になります。たとえば、「Template:C」に

[[D]] - [[E]] - [[F]]

とあったとき、ページ「D」から

{{C}}

として呼び出した場合には、

D - E - F

のように表示されます。ただし、リンク先がリダイレクトの場合には、自己リンクの解決は行われません。

テンプレート名をテンプレートやシステム変数で指定する

テンプレート名をテンプレートやシステム変数で指定することは可能です。たとえば、

テンプレート テンプレート 読み込み方 表示
「Template:おなまえ」
さいとう
「Template:欄」
おなまえ
{{ {{欄}} }}
さいとう
「Template:不思議」
あれよあれよ
「不思議」
{{ {{PAGENAME}} }}
あれよあれよ

このとき、4つの大括弧を左右とも {{{{欄}}}} のように連続してしまうと、うまく働きません。少なくともどちらかを2つずつに分けてください。

テンプレートの内容で置き換える

{{テンプレート名}}というテンプレートタグは、「テンプレートをそこで呼び出す」という指示ですので、閲覧のたびにその時点でのテンプレートの内容が埋め込まれます。テンプレートが更新されれば、そのテンプレートを呼び出しているページにも変更が反映されます。しかしそれでは不便なこともあります。そこで、テンプレートを挿入するときに、テンプレートの内容をそのままページ内にコピーする方法があります。代替 (substitution) と呼ばれる方法です。

{{subst:テンプレート名....}}

このように subst:{{ とテンプレート名の間に挟んで、「投稿する」をクリックすると、次に編集画面を開いたときにはもう上の {{subst:テンプレート名}} は消えてなくなり、テンプレートの内容に置き換わっています。subst: を使うかどうかはおおむねテンプレートごとに決まっていますから、それぞれのテンプレートの説明をお読みください。基本的には、テンプレートの内容を常に反映し続けたい場合は subst: せず、逆にその時点でのテンプレート内容のみが欲しい場合は subst: することになります。

なお、この方法では、読み込んだページに読み込まれたページがそのままコピーされます。そのため、subst: を用いるように最初から設計してあるテンプレート以外のページを subst: で読み込む場合には、著作権 (GFDL) に十分気をつける必要があります。

テンプレートのソースを表示する

通常あまり使うことはありませんが、テンプレートの説明をするようなとき、テンプレートのソースをそのまま(nowikiで)表示させたいことがあります。この場合には、

{{msgnw:テンプレート名}}

のように記入します。

テンプレート 読み込み方 表示
「Template:すけすけ」
たとえば[[メインページ]]で
{{すけすけ}}
たとえばメインページ
{{msgnw:すけすけ}}
たとえば[[メインページ]]で

Template名前空間以外のページの呼び出し方

定型文などのテンプレートはTemplate名前空間に作られるべきですが、議題を分割したサブページを読み込むなど、Template名前空間以外のページをトランスクルードしたいときがあります。ここでは、そのような場合の呼び出し方を一覧にしておきます。

名前空間 ページ名の例 呼び出し方
Template Template:固有名
{{固有名}}
標準名前空間 固有名
{{:固有名}}
その他 名前空間名:固有名
{{名前空間名:固有名}}

標準名前空間(普通の記事)を読み込む場合、{{ のあとに : が必要なことに気をつけてください。

またサブページは、

{{/サブページ名}}

のように相対リンクを用いて読み込むことができます。詳しくはHelp:サブページをご覧ください。

テンプレート本体を見る

テンプレートは、他のページと同じような独立した1つのページですから、他のページと同じように開いて閲覧することができます。あるページの中で使われているテンプレートは、編集画面を開き、プレビューをするとページの一番下に「このプレビューで使われているテンプレート:」としてリストされます。ここから各テンプレートページに行くことができます(保護中のページを除く)。

なお、ノートページなどから、あるテンプレートへとリンクするときは、Template:Tl を使うと便利です。{{Tl|テンプレート名}} とすることで、テンプレートにリンクして{{テンプレート名}} と表示されます。将来的にテンプレート名が変わる予定がない場合は {{subst:Tl|テンプレート名}} とすることも検討してください。

テンプレートの編集の仕方

テンプレートの編集は、通常のページと同じです。

新規作成

新しいテンプレートを作成するには、通常のページの作成と同じように未執筆リンク(いわゆる赤リンク)から行います。一般に未執筆リンクは [[Template:新規テンプレート]] のようにすると作成できますが、{{新規テンプレート}} のようにすることでも作ることもできます。この場合、新規テンプレート名にふさわしいページ名への未執筆リンクとなります。

基本的には、{{テンプレート名}}の代わりに表示される内容は、そのテンプレート名のページの中身全体と同じになります。たとえば、「Template:切符」の内容が

乗車券

であったならば、

{{切符}}

乗車券

のようになります。

加筆・変更

テンプレートページ本体へいって、内容を編集します。なお、既存のテンプレートを編集すると、そのテンプレートを呼び出しているすべてのページに影響が及ぶことになります。編集をする前に、リンク元をクリックして (参照読み込み) とあるページを見つけ、どのページからどのように呼ばれているかを確認してください。大きな変更を加えるときはノートページで事前に相談をした方がよいでしょう。また複雑なテンプレートの場合は、自分の利用者ページやサンドボックスで試し書きをした方がよいかもしれません。

テンプレート変数

テンプレート変数は、テンプレートの中で {{{テンプレート変数名}}} のように書き表します。すなわち、{{{テンプレート変数名}}} は、他のページから埋め込まれるとき、そのページに指定した引数に変化します。テンプレート変数のあるテンプレートの呼び出しは、

{{テンプレート名|テンプレート変数1=引数1|テンプレート変数2=引数2|.....}}

でした。ですから、たとえば「Template:経路a」というテンプレートが

{{{発駅}}}から{{{着駅}}}まで

のとき、このテンプレートを

{{経路a|発駅=名古屋|着駅=新大阪}}

のように呼び出すと、「名古屋」がテンプレート変数 {{{発駅}}} に、「新大阪」がテンプレート変数 {{{着駅名}}} にはいります。したがって、これは

名古屋から新大阪まで

のようになります。

また、「Template:経路b」というテンプレートが

{{{1}}}から{{{2}}}まで

のとき、このテンプレートを

{{経路b|名古屋|新大阪}}

のように呼び出すと、「名古屋」がテンプレート変数 {{{1}}} に、「新大阪」がテンプレート変数 {{{2}}} にはいります。つまり、

{{経路b|1=名古屋|2=新大阪}}

のように呼び出すのと全く同じです。したがってこれも

名古屋から新大阪まで

となります。

デフォルト値指定

埋め込んだページで引数が指定されていないときには、{{{テンプレート変数名}}}がそのまま表示されることになります。それをふせぐため、引数が指定されていない場合の動作を指定することができます (m:Help:Parameter default)。これには | を使い、

{{{テンプレート変数名|デフォルト}}}

のようにします。たとえば「Template:経路a」を

{{{発駅|東京}}}から{{{着駅|博多}}}まで

のように、「Template:経路b」を

{{{1|東京}}}から{{{2|博多}}}まで

に変更すると、次のようになります。

テンプレートの内容 読み込み方 表示
「Template:経路a」
{{{発駅|東京}}}から{{{着駅|博多}}}まで
{{経路a|発駅=名古屋|着駅=新大阪}}
名古屋から新大阪まで
{{経路a|発駅=名古屋}}
名古屋から博多まで
{{経路a|着駅=新大阪}}
東京から新大阪まで
{{経路a}}
東京から博多まで
「Template:経路b」
{{{1|東京}}}から{{{2|博多}}}まで
{{経路b|名古屋|新大阪}}
名古屋から新大阪まで
{{経路b|名古屋}}
名古屋から博多まで
{{経路b|新大阪}}
新大阪から博多まで
{{経路b}}
東京から博多まで

これを応用すれば、| の右側に何も書かないことで、引数が指定されなかった場合に、対応する変数自体を表示しないようにすることができます。たとえば、テンプレートのソースに {{{変数1}}} と書いた場合、呼び出すときに {{{変数1}}} に対応する引数を指定しないと、{{{変数1}}} と表示されてしまいますが、ソースを {{{変数1|}}} としておけば、この部分には何も表示されません。

省略された変数名への数字の割り当て方

テンプレート変数を呼び出し側で省略すると、順に1から番号が振られます。この番号は最初から順に振られますが、= のある部分には、番号を振る必要がありませんので、振られません。従って、

{{変数名|東=鳥海山|西=阿蘇山|秋田県|熊本県}}

{{変数名|東=鳥海山|西=阿蘇山|1=秋田県|2=熊本県}}

の意味となり、

{{変数名|秋田県|熊本県|東=鳥海山|西=阿蘇山}}

に等しくなります。

= のない引数があるとき、まずそこに数字名のテンプレート変数が 1 から順に振られます。一方、同じテンプレート変数が複数ある時には、位置的に後にあるものが有効になります。従って、

{{変数名|東=鳥海山|西=阿蘇山|1=北海道|秋田県|熊本県}}

は、

{{変数名|東=鳥海山|西=阿蘇山|1=北海道|1=秋田県|2=熊本県}}

とみなされ、1=北海道| の部分は無視されます。

特殊な変数名

テンプレート変数を指定するとき、= の前を空欄にすることもできます。これは長さ0の変数名と見なされ、{{{}}} とある部分に置き換えられます。たとえば、

{{変数名|=
|A|B|C|=
|D|E|F|=
|G|H|I|=
}}

のように省略された変数名の番号を調整するためのダミーとして用いられます。この例では、A{{{1}}} に、D{{{4}}} にはいります。もし、ここでの = がなければ、A{{{2}}} に、D{{{6}}} にはいることになります。

一部を無視させる

他のページから呼ばれたときに無視する部分を指定したり、他のページから呼ばれたとき以外は無視する部分を指定したりすることができます。

呼び出し先の表示内容の指定

<noinclude><onlyinclude> は、テンプレートが他のページから呼び出されたときに表示しない部分、もしくは表示する部分を指定します。次のような用途で使われます。

  • テンプレートの説明を書く。(テンプレートの説明は、他のページから呼び出されたときには伏せられます。)
  • テンプレートの カテゴリを書く。(テンプレートのページだけがカテゴリに加えられる。他の場合には、テンプレートを貼ったすべてのページが同じカテゴリに加えられることになります。)
  • 言語間リンクを書く。(カテゴリと同じ理由です。)

なお、テンプレートのソースを見やすくするなどの目的で不用意に <noinclude> の直前に改行を入れると、テンプレートを呼び出したページにおいて表示が崩れる原因となることがあります。また説明が長くなるときは説明専用のページを作ることも検討してください(詳しくはHelp:テンプレートの説明文参照)。

<noinclude>

テンプレートのある部分を <noinclude></noinclude> で挟むと、その部分は他のページから呼び出したときに取り除かれます。たとえば、「Template:内弁慶」が

彼は<noinclude>家ではいばっているが外では</noinclude>なよなよしている。

の場合、「Template:内弁慶」を開くと

彼は家ではいばっているが外ではなよなよしている。

と表示されますが、他のページから

{{内弁慶}}

のように呼び出された場合には、

彼はなよなよしている。

とだけ表示されます。

<onlyinclude>

<noinclude> と同じ目的ですが、逆に呼び出された時の表示部分を指定するものとして、<onlyinclude> があります。こちらは他のページから呼び出されたときに <onlyinclude></onlyinclude>の間だけ返して他は無視します。たとえば「Template:居留守」が

電話がかかってきたら<onlyinclude>いない</onlyinclude>って言って。

だったならば、「Template:居留守」を開くと、

電話がかかってきたらいないって言って。

と表示されますが、他のページから

{{居留守}}

のように呼び出された場合に、

いない

とだけ表示されます。

テンプレートページの表示内容の指定

先の2つと逆の用途のものが、<includeonly> です。これは、<includeonly></includeonly> に挟まれた部分が他のページから読み出されたときだけ有効で、そのページ(テンプレート)を直接表示した時には無視される、というものです。たとえば、「Template:へそくり」が

貯金は1万円<includeonly>だけどほかにスイスに1億フラン</includeonly>あります。

の場合、「Template:へそくり」を直接表示すると

貯金は1万円あります。

ですが、

{{へそくり}}

のように呼び出された場合には

貯金は1万円だけどほかにスイスに1億フランあります。

となります。

テンプレートを貼ったページをあるカテゴリに入れたいが、テンプレートそのものはそのカテゴリに入れたくない、というような場合によく使われます。たとえば、削除依頼テンプレートの削除カテゴリなどです。

一覧

以上3つを表にまとめると次のようになります。

空間 <noinclude> <onlyinclude> <includeonly>
ソース A<noinclude>B</noinclude>C A<onlyinclude>B</onlyinclude>C A<includeonly>B</includeonly>C
テンプレートを直接
表示したとき
ABC ABC AC
読み込んだページ
における表示
AC B ABC

システム変数

テンプレートの中に {{PAGENAME}} などのシステム変数を書いて、他のページから呼び出した場合には、呼び出している側のページにあるものとして認識されます。たとえば、「Template:子分」に

{{PAGENAME}}

と書いて保存し、このテンプレートをページ「親分」において

{{子分}}

のように呼び出した場合には、呼び出した側のページ名である「親分」が表示されます。

時刻などのシステム変数を、テンプレートに置くと、常に閲覧した時点のものが表示されます。テンプレートを貼った時点に固定するには、テンプレートの中で {{<includeonly>subst:</includeonly>CURRENTTIME}} のようにし、このテンプレートをさらに subst: で呼び出します。

システム変数について詳しくはHelp:マジックワードなどをご覧ください。

テンプレートの中で条件文を使う

テンプレートの中で条件文を使うことができます。詳細はHelp:条件文をご覧ください。

テンプレートの中でテンプレートを呼び出す

テンプレートの中でさらにテンプレートを呼び出すことができます。

テンプレート テンプレート 読み込み方 表示
単純な例 「Template:内々」
うえお
「Template:内」
い{{内々}}か
あ{{内}}き
あいうえおかき
引数を受け渡す 「Template:孫」
う{{{1}}}お
「Template:子」
い{{孫|{{{1}}}}}か
あ{{子|え}}き
あいうえおかき
引数でテンプレート変数
を指定する
「Template:部屋」
う{{{住所}}}お
「Template:家」
い{{部屋|{{{1}}}=え}}か
あ{{家|住所}}き
あいうえおかき
引数でテンプレート名
を指定する
「Template:皿」
うえお
「Template:盆」
い{{{{{1}}}}}か
あ{{盆|皿}}き
あいうえおかき

テンプレートとして読み込んだ中に {{読み込んだテンプレート自身の名前}} があるとさらには展開されず、そのまま文字として表示されます。たとえば「Template:ナルシスト」に

{{ナルシスト}}なの

として

{{ナルシスト}}です

と呼び出すと、

{{ナルシスト}}なのです

と表示されます。なお、「Template:ナルシスト」自身を表示すると、一回は「Template:ナルシスト」を展開するため、

{{ナルシスト}}なのなの

となります。

通常、このような自分自身の読み込みは、<noinclude>で囲まれるか<onlyinclude>の外に置かれた説明文の中で行われます。そのような時には、ここに挙げたような問題は生じません。

テンプレート冒頭の特殊文字

テンプレートが、: ; * # のいずれかで始まっているとき、それは行頭にあると見なされ、インデント箇条書きと見なされます。それを避けるためには、: ; * # などを <nowiki> </nowiki> で囲むか文字参照を使ってください。

ヒント

長いテンプレートのソースは、

{{テンプレート名
 |変数1={{{1}}}
 |変数2={{{2}}}
 |...
}}

のように書くと読みやすくなります。

テンプレート内の改行が呼び出している記事に無駄な空白を作ってしまうことがあります。一般的に、テンプレート内に改行を2つ以上続けて使わないようにしましょう。

リンク元とカテゴリ

テンプレートを書き換えれば、テンプレートを呼び出したページの表示が変化します。しかし、次の例外があります。

  1. テンプレート内に書かれたリンクは、テンプレートを呼び出したページにあるリンクと同じです。従って、リンク先ページの「リンク元」をクリックすると、そのテンプレートのページとテンプレートを呼び出したページの両方が表示されます。しかし、テンプレートのリンク先を追加、削除、変更しても、テンプレートを呼び出したページについては「リンク元」にすぐには反映しません。これについては、しばらく時間が経つとデータが更新されて正しいリンク元が反映されます。
  2. テンプレート内に書かれたカテゴリは、テンプレートを呼び出したページにあるカテゴリと同じです。従って、カテゴリページには、テンプレートのページとそのテンプレートを呼び出したページの両方が表示されます。しかし、テンプレートのカテゴリを追加、削除、変更しても、テンプレートを呼び出したページはカテゴリページにすぐには反映しません。カテゴリに反映させるためには、テンプレートを呼び出しているページをいったん編集状態とし、「投稿する」ボタンを押す「カラ編集」の必要があります。このとき、何も編集していなければ、テンプレートを呼び出したページの履歴にはなりませんが、それでもカテゴリの更新は反映されます。Wikipedia:ツール/ナビゲーション・ポップアップには、個々のページやその編集画面を開くことなくカラ編集を行なう機能があります。

テンプレートの目的と基本的ルール

  • 定型メッセージを記事内に一貫した形で挿入するため(スタブや曖昧さ回避ページであることなどを示す)
  • 簡単なショートカットを使って、著作権違反、中立性の問題などのさまざまな問題に関する定型文を挿入するため
  • 関連する記事をまとめたリンク集への誘導テンプレートやサイドバーを作成するため
  • Infoboxを作成するため
  • 多言語間でほとんど共有できるようなテキストの言語間流用性を提供するため。各言語毎に一部の用語だけが異なっている場合、その用語にテンプレートを使い、各言語のプロジェクトでそのテンプレートの中身を定義することで、簡単に共有を実現します。taxoboxesで採用されています。

記事の名前空間にあるテンプレートは読者の理解を促す情報を提供します。これらは関連するページへのリンクを支援したり、内容が不足していることを警告する情報を示すのに使います。編集者にのみ関係するテンプレートの情報は記事のノートページに使用します。

標準名前空間の記事の一部をテンプレート名前空間においてはいけません。これらは直接記事内に記入してください。

ユアメディアプロジェクト以外の外部サイトへのリンクを系統的に行うためのテンプレートを作ってはいけません。

Wikipedia:カテゴリWikipedia:関連項目で充分なときに、他の記事へのリンク集を作成するためにテンプレートを作らないでください。ユアペディアンの皆さんの主観にもよりますが、項目の数が数個程度なら関連項目だけでじゅうぶんであり、10個程度になってからカテゴリを作ると考えるとよいでしょう。カテゴリは一つあればかなりの項目をサポート出来るので、カテゴリを使っても見にくくなってきてから、テンプレートを作ることを検討しましょう。

他のプロジェクトのテンプレート

他のプロジェクト(他言語版や姉妹プロジェクト)のテンプレートをそのまま読み込むことはできません。


関連項目

ar:مساعدة:قالب ca:Ajuda:Plantilla cs:Nápověda:Šablony de:Hilfe:Vorlageneo:Helpo:Ŝablono es:Ayuda:Plantillas fr:Aide:Modèle he:עזרה:תבניות hsb:Pomoc:Předłohi it:Aiuto:Template nl:Help:Gebruik van sjablonen ru:Википедия:Механизм шаблонов yi:הילף:מוסטער zh:Help:模板