デジットさんの生活便利サイトトップへ デジットさんの2階層テンプレート(Smarty)

トップページ > ホームページ作成 > 2階層テンプレート

Smartyのテンプレートは、テンプレートの中に他のテンプレートをインクルードできます。これは、時々使うようなテンプレートを使用したい時にも便利です。

テンプレートに他のテンプレートをインクルード

Smartyは、テンプレートに他のテンプレートをインクルードできます。インクルードしたテンプレートの変数も、直接読んだテンプレートと同じように利用できます。
初心者には、何に使うか解からない人も多いかと思いますが、テンプレートの部品化やいつもは表示しないが時々表示する内容を別テンプレートにして、表示する変数が来た時のみ表示するような使い方が可能かと思います。

Sテンプレートに他のテンプレートをインクルードするサンプル

今回のサンプルファイルは、次の通りです。

  1. テンプレートの実行ファイル「smpl_rank2_tpl.php」
  2. 実行ファイルから直接呼ぶテンプレートファイル「test_tpl1.tpl」
  3. 「test_tpl1.tpl」にインクルードする「test_tpl2.tpl」

テンプレートファイルは、「templates」という名前で、実行ファイル「smpl_rank2_tpl.php」を置くディレクトリの下に作った「templates」という名前のディレクトリの中に置きます。

テンプレートファイル「test_tpl1.tpl」の例

テンプレートファイルの例です。
ここでは、変数「$rank1」の表示と、他のテンプレートファイル「test_tpl2.tpl」をインクルードしているだけです。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>2階層テンプレートテスト</title>
</head>
<body>
<p>
<h3>直接呼ばれるテンプレート</h3>
{$rank1}<br/>
{include file="test_tpl2.tpl"}
</p>
</body>
</html>

テンプレートファイル「test_tpl2.tpl」の例

インクルードされる他のテンプレートファイルの例です。
ここでは、変数「$rank2」の表示を行います。

<h3>テンプレートから呼ばれたテンプレート</h3>
{$rank2}<br/>

テンプレートの実行ファイル「smpl_rank2_tpl.php」の例

テンプレートファイルを実行する「phpファイル」の例です。
テンプレートファイル「test_tpl1.tpl」を呼びます。テンプレートに表示する変数は、「test_tpl1.tpl」で利用する「$rank1」と「test_tpl1.tpl」にインクルードする「test_tpl2.tpl」で利用する「$rank2」を両方指定しました。

<?php
//2階層テンプレートテスト
$rank1 = "これは、直接呼ばれるテンプレートです。";
$rank2 = "これは、テンプレートから呼ばれたテンプレートです。";
require_once("/usr/local/lib/php/Smarty/Smarty.class.php");
$smarty = new Smarty();
//個別コンテンツ
$smarty -> assign("rank1",$rank1);
$smarty -> assign("rank2",$rank2);
$smarty -> display("test_tpl1.tpl");
?>

上記のサンプルは、2階層テンプレートで確認してください。ちゃんと「test_tpl2.tpl」用に指定した変数「$rank2」も表示されています。
この動作は、レンタルサーバーの「ロリポップ」では、動作確認しております。

ホームページを公開するレンタルサーバーは、 ロリポップ! がお薦め、 PHP5を使うならPHP5から選ぼう。

Amazon.co.jpアソシエイト:PHP&プログラミング

売れている順 新刊順

:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_  :3

関連ページ

ホームページ作成

PHP5を使う

アフィリエイトをする

PHPの使い方

デジットさんのホームページ入門に移行中

スポンサード リンク

とことん!ホームページホームページ入門役立つサイトデジットさんのリストラ日記仮福真琴の精神科医はうそだらけ

2005-2010 Copyright © Digit-01 All Rights Reserved.