テンプレート(MediaWiki) 単語

テンプレート

9.6千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

MediaWikiサイトにおけるテンプレートとは、他のページから読み込んで使える定文のことである。

概要

Wikipediaの記事では右側に情報ボックスが置いてあったり、記事最下部にナビゲーションボックスが置いてある記事をよく見かける。これらは大抵、テンプレート読み込んで表示している。

ネット用語における「テンプレ」のように「ソースコピーして書き換えて使ってください」というものではない。使用時にはテンプレートの中身を意識しなくても、記事中に「{{テンプレート名}}」のように記載するだけでよい。また、テンプレートの内容を更新すると、テンプレートを使っている各ページを書き換えなくても全てのページが自動的に新しい内容に更新される。

テンプレート内では条件分岐や計算が行え、スクリプト言語Luaモジュールとして組み込むこともできるので、「XXXXXXXXXX歳)」などの年齢計算をはじめとする豊富な表現力を持っている。(これらは厳密にはテンプレートとは別の拡張機能だが、条件文を記事に直書きする必要性はないので、実質的にテンプレートと不可分の存在である)

Wikiサイトでは記事執筆よりもテンプレート作成を戦力とする利用者が一定数存在し、「テンプレート職人」などと持て囃されることが多い。

使用例

テンプレートの威力を示すために、ニコニコ大百科の複数記事に貼られている一覧表をMediaWiki移植してみよう。

ここでは例として、単語記事ニコニコ動画」および各バージョン記事にあるニコニコ動画の変遷一覧表をテンプレート化してみる。

各記事内での記載方法

長々としたHTMLコピペする必要はなく、これだけの記載でよい。

{{ニコニコ変遷表}}

バージョン追加時には呼び出し先のテンプレートのみ更新すれば、各記事を修正しに回る必要はない。

[[Template:ニコニコ変遷表]]

続いて呼び出し先のテンプレートを作ってみる。

<table class="wikitable" style="border: none; background: transparent; margin: 1em auto; text-align: center;>
  <!-- MediaWikiでは<col>要素が使えないためtdで代用 -->
  <tr>
    <td style="width: 10em; min-width: 80px; border: none;">
    <td style="width: 45%; min-width: 6em; border: none;">
    <td style="width: 12.5em; font-size: 0.8em; border: none;">
  </tr>
  <tr>
    <th>- 一弾 -</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(仮) | background-color: #ecec97;}}">[[ニコニコ動画(仮)]]</td>
    <td style="font-size: 0.8em; border: none;">06/12/12 - 07/01/15</td>
  </tr>
  <tr>
    <th>- 第二-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(β) | background-color: #ecec97;}}">[[ニコニコ動画(β)]]</td>
    <td style="font-size: 0.8em; border: none;">07/01/15 - 07/02/24</td>
  </tr>
  <tr>
    <th>- 第三-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(γ) | background-color: #ecec97;}}">[[ニコニコ動画(γ)]]</td>
    <td style="font-size: 0.8em; border: none;">07/03/06 - 07/06/18</td>
  </tr>
  <tr>
    <th>- 第四-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(RC) | background-color: #ecec97;}}">[[ニコニコ動画(RC)]]</td>
    <td style="font-size: 0.8em; border: none;">07/06/18 - 07/10/10</td>
  </tr>
  <tr>
    <th>- 第五-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(RC2) | background-color: #ecec97;}}">[[ニコニコ動画(RC2)]]</td>
    <td style="font-size: 0.8em; border: none;">07/10/10 - 08/03/05</td>
  </tr>
  <tr>
  {{#switch: {{PAGENAME}} | ニコニコ動画(SP1) | ニコニコ動画2.0(笑) =
    <tr>
      <th rowspan="3">- 第六弾 -</th>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(SP1) | background-color: #ecec97;}}">[[ニコニコ動画(SP1)]]</td>
      <td style="font-size: 0.8em; border: none;">08/03/05 - 08/03/31</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画2.0(笑) | background-color: #ecec97;}}">[[ニコニコ動画2.0(笑)]]</td>
      <td style="font-size: 0.8em; border: none;">(乱入)</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(SP1) | background-color: #ecec97;}}">[[ニコニコ動画(SP1)]]</td>
      <td style="font-size: 0.8em; border: none;">08/04/02 - 08/07/05</td>
    </tr>
  | #default =
    <tr>
      <th>- 第六弾 -</th>
      <td>[[ニコニコ動画(SP1)]]</td>
      <td style="font-size: 0.8em; border: none;">08/03/05 - 08/07/05</td>
    </tr>
  }}
  </tr>
  <tr>
    <th>- 第七弾 -</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(夏) | background-color: #ecec97;}}">[[ニコニコ動画(夏)]]</td>
    <td style="font-size: 0.8em; border: none;">08/07/05 - 08/10/01</td>
  </tr>
  <tr>
    <th>- 第八-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(秋) | background-color: #ecec97;}}">[[ニコニコ動画(秋)]]</td>
    <td style="font-size: 0.8em; border: none;">08/10/01 - 08/12/05</td>
  </tr>
  <tr>
    <th>- 第九弾 -</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(冬) | background-color: #ecec97;}}">[[ニコニコ動画(冬)]]</td>
    <td style="font-size: 0.8em; border: none;">08/12/05 - 08/12/12</td>
  </tr>
  <tr>
  {{#switch: {{PAGENAME}} | ニコニコ動画(ββ) | ニコニコ動画(βββ) =
    <tr>
      <th rowspan="3">- 第十弾 -</th>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(ββ) | background-color: #ecec97;}}">[[ニコニコ動画(ββ)]]</td>
      <td style="font-size: 0.8em; border: none;">08/12/12 - 09/03/31</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(βββ) | background-color: #ecec97;}}">[[ニコニコ動画(βββ)]]</td>
      <td style="font-size: 0.8em; border: none;">(乱入)</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(ββ) | background-color: #ecec97;}}">[[ニコニコ動画(ββ)]]</td>
      <td style="font-size: 0.8em; border: none;">09/04/02 - 09/10/29</td>
    </tr>
  | #default =
    <tr>
      <th>- 第十弾 -</th>
      <td>[[ニコニコ動画(ββ)]]</td>
      <td style="font-size: 0.8em; border: none;">08/12/12 - 09/10/29</td>
    </tr>
  }}
  </tr>
  {{#switch: {{PAGENAME}} | ニコニコ動画(9) | ニコニコ動画 祝黒字化 =
    <tr>
      <th rowspan="3">- 第十一弾 -</th>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(9) | background-color: #ecec97;}}">[[ニコニコ動画(9)]]</td>
      <td style="font-size: 0.8em; border: none;">09/10/29 - 10/03/31</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画 祝黒字化 | background-color: #ecec97;}}">[[ニコニコ動画 祝黒字化]]</td>
      <td style="font-size: 0.8em; border: none;">(乱入)</td>
    </tr>
    <tr>
      <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(9) | background-color: #ecec97;}}">[[ニコニコ動画(9)]]</td>
      <td style="font-size: 0.8em; border: none;">10/04/02 - 10/10/29</td>
    </tr>
  | #default =
    <tr>
      <th>- 第十一弾 -</th>
      <td>[[ニコニコ動画(9)]]</td>
      <td style="font-size: 0.8em; border: none;">09/10/29 - 10/10/29</td>
    </tr>
  }}
  <tr>
    <th>- 第十二弾 -</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画(原宿) | background-color: #ecec97;}}">[[ニコニコ動画(原宿)]]</td>
    <td style="font-size: 0.8em; border: none;">10/10/29 - 12/04/30</td>
  </tr>
  <tr>
    <th>- 第十三弾 -</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画:Zero | background-color: #ecec97;}}">[[ニコニコ動画:Zero]]</td>
    <td style="font-size: 0.8em; border: none;">12/05/01 - 12/10/17</td>
  </tr>
  <tr>
    <th>- 第十四-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画:Q | background-color: #ecec97;}}">[[ニコニコ動画:Q]]</td>
    <td style="font-size: 0.8em; border: none;">12/10/18 - 13/10/07
  </tr>
  <tr>
    <th>- 第十五-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ動画:GINZA | background-color: #ecec97;}}">[[ニコニコ動画:GINZA]]</td>
    <td style="font-size: 0.8em; border: none;">13/10/08 - 18/06/27
  </tr>
  <tr>
    <th>- 第十六-</th>
    <td style="{{#ifeq: {{PAGENAME}} | niconico(く) | background-color: #ecec97;}}">[[niconico(く)]]</td>
    <td style="font-size: 0.8em; border: none;">18/06/28 - 20/08/09
  </tr>
  <tr>
    <th>- 第十七-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ(Re) | background-color: #ecec97;}}">[[ニコニコ(Re)|ニコニコ動画(Re)]]</td>
    <td style="font-size: 0.8em; border: none;">20/08/09 - 22/12/12
  </tr>
  <tr>
    <th>- 第十八-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ(eR) | background-color: #ecec97;}}">[[ニコニコ(eR)]]</td>
    <td style="font-size: 0.8em; border: none;">22/12/12 - 24/06/08
  </tr>
  <tr>
    <th>- 第十九-</th>
    <td style="{{#ifeq: {{PAGENAME}} | ニコニコ(Re:仮) | background-color: #ecec97;}}">[[ニコニコ(Re:仮)]]</td>
    <td style="font-size: 0.8em; border: none;">24/06/14 - 24/08/05
  </tr>
  <tr>
    <th>- 第二十-</th>
    <td style="{{#ifeq: {{PAGENAME}} | 帰ってきたニコニコ | background-color: #ecec97;}}">[[帰ってきたニコニコ]]</td>
    <td style="font-size: 0.8em; border: none;">←24/08/05 - 24/09/17
  </tr>
  <tr>
    <th>- 第二十一-</th>
    <td style="background-color: #11ee9a;">[[ニコニコ(Re:turn)]]</td>
    <td style="font-size: 0.8em; border: none;">←今これ(24/09/17 -)
  </tr>
</table>

繰り返しになるが、新バージョン追加時には呼び出し先のテンプレートのみ更新すれば、各記事を修正しに回る必要はない。

使用例その2

テンプレートの内部でテンプレートを呼び出せる」という特徴を使って、上記テンプレートブラッシュアップしてみよう。

各記事内での記載方法

{{ニコニコ変遷表}}

各記事からの呼び出し方は上記と変わらない。

[[Template:ニコニコ変遷表]]

ニコニコ変遷表/row」という内部テンプレートを作り、面倒な条件分岐を共通化する。

<table class="wikitable" style="border: none; background: transparent; margin: 1em auto; text-align: center;>
{{ニコニコ変遷表/row|2006/12/12|2007/01/15|第一弾|ニコニコ動画(仮)}}
{{ニコニコ変遷表/row|2007/01/15|2007/02/24|第二弾|ニコニコ動画(β)}}
{{ニコニコ変遷表/row|2007/03/06|2007/06/18|第三弾|ニコニコ動画(γ)}}
{{ニコニコ変遷表/row|2007/06/18|2007/10/10|第四弾|ニコニコ動画(RC)}}
{{ニコニコ変遷表/row|2007/10/10|2008/03/05|第五弾|ニコニコ動画(RC2)}}
{{ニコニコ変遷表/row|2008/03/05|2008/07/05|第六弾|ニコニコ動画(SP1)|aprildate=2008/04/01|aprilname=ニコニコ動画2.0(笑)}}
{{ニコニコ変遷表/row|2008/07/05|2008/10/01|第七弾|ニコニコ動画(夏)}}
{{ニコニコ変遷表/row|2008/10/01|2008/12/05|第八弾|ニコニコ動画(秋)}}
{{ニコニコ変遷表/row|2008/12/05|2008/12/12|第九弾|ニコニコ動画(冬)}}
{{ニコニコ変遷表/row|2008/12/12|2009/10/29|第十弾|ニコニコ動画(ββ)|aprildate=2009/04/01|aprilname=ニコニコ動画(βββ)}}
{{ニコニコ変遷表/row|2009/10/29|2010/10/29|第十一弾|ニコニコ動画(9)|aprildate=2010/04/01|aprilname=ニコニコ動画 祝黒字化}}
{{ニコニコ変遷表/row|2010/10/29|2012/04/30|第十二弾|ニコニコ動画(原宿)}}
{{ニコニコ変遷表/row|2012/05/01|2012/10/17|第十三弾|ニコニコ動画:Zero}}
{{ニコニコ変遷表/row|2012/10/18|2013/10/07|第十四弾|ニコニコ動画:Q}}
{{ニコニコ変遷表/row|2013/10/08|2018/06/27|第十五弾|ニコニコ動画:GINZA}}
{{ニコニコ変遷表/row|2018/06/28|2020/08/09|第十六弾|niconico(く)}}
{{ニコニコ変遷表/row|2020/08/09|2022/12/12|第十七弾|ニコニコ動画(Re)|link=ニコニコ(Re)}}
{{ニコニコ変遷表/row|2022/12/12|2024/06/08|第十八弾|ニコニコ(eR)}}
{{ニコニコ変遷表/row|2024/06/14|2024/08/05|第十九弾|ニコニコ(Re:仮)}}
{{ニコニコ変遷表/row|2024/08/05|2024/09/17|第二十弾|帰ってきたニコニコ}}
{{ニコニコ変遷表/row|2024/09/17||第二十一弾|ニコニコ(Re:turn)}}
</table>

行や数千行単位になったときでもソースの見通しが立ちやすくなっただろう。

[[Template:ニコニコ変遷表/row]]

ここで各バージョンの行を生成する……と行きたいところだが、エイプリルフールまわりの分岐処理が面倒だったので「第○弾」の列のみ生成し、残り2列は内部テンプレートをもう1段階かませることにする。

現在バージョンに「←今これ」を表示するための条件判定もここで行う。

{{#switch: {{#if: {{{aprilname|}}} | {{PAGENAME}} }} | {{{4}}} | {{{aprilname}}} =
  <tr>
    <th style="width: 10em; min-width: 80px;" rowspan="3">- {{{3}}} -</th>
    {{ニコニコ変遷表/cells
    | name = {{{4}}}
    | link = {{{link|{{{4}}}}}}
    | period = {{#timel:y/m/d|{{{1}}}}} - {{#timel:y/m/d|{{{aprildate}}} -1 day}}
    | current_flg = {{#ifexpr: ({{#timel:Ymd|{{{1}}}}} <= {{#timel:Ymd}}) and ({{#timel:Ymd}} < {{#timel:Ymd|{{{aprildate}}}}}) | true }}
    }}
  </tr>
  <tr>
    {{ニコニコ変遷表/cells
    | name = {{{aprilname}}}
    | link = {{{aprillink|{{{aprilname}}}}}}
    | period = (乱入)
    | current_flg = {{#ifexpr: {{#timel:Ymd}} = {{#timel:Ymd|{{{aprildate}}}}} | true }}
    }}
  </tr>
  <tr>
    {{ニコニコ変遷表/cells
    | name = {{{4}}}
    | link = {{{link|{{{4}}}}}}
    | period = {{#timel:y/m/d|{{{aprildate}}} +1 day}} - {{#if: {{{2|}}} | {{#timel:y/m/d|{{{2}}}}}}}
    | current_flg = {{#ifexpr: ({{#timel:Ymd|{{{aprildate}}}}} < {{#timel:Ymd}}) and ({{#timel:Ymd}} <= {{#timel:Ymd|{{{2|}}}}}) | true }}
    }}
  </tr>
| #default =
  <tr>
    <th style="width: 10em; min-width: 80px;">- {{{3}}} -</th>
    {{ニコニコ変遷表/cells
    | name = {{{4}}}
    | link = {{{link|{{{4}}}}}}
    | period = {{#timel:y/m/d|{{{1}}}}} - {{#if: {{{2|}}} | {{#timel:y/m/d|{{{2}}}}}}}
    | current_flg = {{#ifexpr: ({{#timel:Ymd|{{{1}}}}} < {{#timel:Ymd}}) and ({{#timel:Ymd}} <= {{#timel:Ymd|{{{2|}}}}}) | true }}
    }}
  </tr>
}}

[[Template:ニコニコ変遷表/cells]]

最後に残った中列と右列を生成する。

<td style="width: 45%; min-width: 6em; {{
    #if: {{{current_flg|}}} | background-color: #11ee9a; | {{
    #ifeq: {{PAGENAME}} | {{{link}}} | background-color: #ecec97;
  }} }}">[[{{{link}}}|{{{name}}}]]</td>
<td style="width: 12.5em; font-size: 0.8em; font-size: 0.8em; border: none;">{{
  #if: {{{current_flg|}}} | ←今これ({{{period}}}) | {{{period}}}
}}</td>

関連リンク

関連項目

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/05/16(金) 10:00

ほめられた記事

最終更新:2025/05/16(金) 10:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP