wiki:pne-openpne3-develop/specification/customize-template
 ここの情報は古いです。ご理解頂いた上でお取り扱いください。

OpenPNE3 機能・仕様解説 / テンプレートへの拡張機能

TOC(inline,heading=目次,depth=3)?

導入

OpenPNE3 のテンプレートは、複数のテンプレート部品(パーツ)が組み合わせていくことで成り立ちます。

パーツは、自身のなかに拡張可能な領域を持っています。これらの領域に対し、プラグインから記述を追加することが可能です。

OpenPNE3 では、この仕組みを使ってプラグインから自在にテンプレートを拡張していきます。

パーツの基本的な構造

各パーツは少なくとも以下の構造によって構成されます。

  • Before : パーツの直前の領域を指します
  • Top : パーツの冒頭の領域を指します
  • パーツ本体
  • Bottom : パーツの末尾の領域を指します
  • After : パーツの直後の領域を指します

これらの領域のうち、「パーツ本体」を除いたすべての部分はプラグインから拡張可能です。

ここで挙げた以外にも、パーツによっては独自の拡張可能な領域を備えている場合があります。

テンプレート上でパーツを読み込む

テンプレートの任意の場所で、以下のように記述することでパーツを読み込むことができます。

<?php include_login_parts($id, $form, $link_to); ?>

この例では、 _partsLogin.php という、ログインフォームを表示するためのテンプレートファイルを読み込んでいます。パーツはそのパーツを読み込むためのヘルパー関数を用意しており、それをコールすることで任意のパーツをテンプレートに読み込むことができます。

パーツには必ず「パーツID」と呼ばれるものを指定します(上の例の $id)。このパーツIDを使って、プラグインから拡張したいテンプレートを特定します。

パーツIDの他にも、パーツを読み込むための関数はいくつかの引数を受け付けます(上の例の $form, $link_to)。どのような引数を受け付けるかどうかは読み込むパーツによって異なります。

拡張可能な領域にテンプレートの記述を追加する

モジュール内の templates など、テンプレートファイルを設置可能なディレクトリに、 _[パーツID][領域名].php というファイル名のテンプレートファイルを設置することで、指定したパーツの任意の拡張可能な領域にそのファイルが読み込まれます。

テンプレート上で以下のようにして読み込まれたパーツを拡張する場合、

<?php
$id = 'example';
$form = new sfForm();
$link_to = 'member/login';
include_login_parts($id, $form, $link_to);
?>

以下のようなファイルを設置すると、

plugins/[プラグイン名]/apps/pc_frontend/modules/example/templates/_exampleBottom.php

<div>拡張部分</div>

最終的には以下のように出力されます。

<div id="example">

<form action="./pc_frontend/member/login" method="post">
<table>
<tr>
<td colspan="2"><input type="submit" value="ログイン" /></td>
</tr>
</table>
</form>

<div>拡張部分</div>

</div>

この例はパーツ内の一番下(Bottom)にテンプレートを挿入していますが、ファイル名を _exampleBefore に変更することで、パーツの直前にテンプレートを挿入することができます。同様に、_exampleTop とすると、パーツ内の一番上にテンプレートを挿入できます。

Last modified 9 years ago Last modified on Sep 12, 2008, 6:55:16 PM

Attachments (2)

Download all attachments as: .zip