作成日:2006/08/07
4B Smartyの基本的な利用法
4B.1 基本例題
4B.2 テンプレートの作成
4B.3 プログラムの作成
4B.3.1 Smartyの派生クラスを作成する
4B.3.2 HTMLをブラウザに出力する
4B.4 デバッグについて
4B.A 付録 ソースコード
4B.1 基本例題
Smartyの基本的な利用法を説明するために、1つの例題を提供します。 この例題は非常に簡単なテンプレートシステムです。 Smartyを使えば、短時間で独自のテンプレートシステムを構築できます。 また、じっくり育てていけば独自のCMSを作るのも夢ではありません。 本章では、その入り口となるSmartyの基本的な使い方について説明します。
本章で作成する例題プログラムの名称を
ss-tpl : Smartyを使った簡単なテンプレートシステムと呼ぶ事にします。
例題プログラムの概観
ss-tplの仕様
- ss-tplはコンテンツにテーマ(テンプレート)を適用したページを作成します。
- コンテンツはコンテンツファイルに保存し、コンテンツファイルは以下のネーミングルールに従います。
{コンテンツ名}.html ※コンテンツ名は英数半角とハイフン( - ),アンダースコア( _ ),ピリオド( . ) からなる文字列です - コンテンツファイルの第1行にはメーニューで使用するタイトル文字列を格納します。書式は以下のとおりです。
<!-- タイトル文字列 -->
- ページの呼び出しは以下のURL書式で行います。
http://domain/path/index.php?p={コンテンツ名}
例題プログラムの構成
ディレクトリ構成
- ss-tpl/ --- トップディレクトリ
- contents ------ コンテンツファイルを保存
- templates ----- テーマファイルを保存
- templates_c --- コンパイルされたテンプレートを保存
- configs ------- テンプレートの設定ファイルを保存
ファイル構成
- プログラム:
- 全てのコンテンツはプログラムを通して呼び出されます。
- index.php --- メインプログラム
- utils.php --- メインプログラムからインクルートするユーティリティ
- MySmarty.class.php --- テンプレートクラスの定義
- テンプレート:
- サイトのテーマファイルです。全てのコンテンツはテーマによってラップされるので、
統一された概観をユーザに提供できます。
- templates/theme.html --- テーマファイル
- templates/style.css ---- CSSファイル
- 設定ファイル:
- テンプレートに静的な設定値を与えるためのファイルです。
本例題では、htmlのメタタグに対する設定を行います。
- configs/meta.conf --- メタタグの設定ファイル
- コンテンツ:
- 例題では以下のテスト用コンテンツを準備します。
- contents/index.html --- トップページ
- contents/news.html ---- ニュース
- contents/links.html --- リンク集
例題プログラムの設定について
ss-tplでは、サイト情報とコンテンツ情報に関する設定をindex.phpの中で行います。 また、HTMLのメタタグについての設定はconfigs/meta.confの中で行います。以下に設定例を示します。
| 設定項目/ファイル | 設定例 |
|---|---|
| サイト情報 index.php |
// サイト情報 $site_lang = 'ja'; // 使用言語 $site_charset = 'EUC-JP'; // 使用文字セット $site_title = 'Smarty Sample Program'; // サイトタイトル |
| コンテンツ名 index.php |
// コンテンツ名 $contents[] = 'index'; // トップページ $contents[] = 'news'; // ニュース $contents[] = 'links'; // リンク集 |
| メタタグの設定 configs/meta.conf |
meta_robots = "index,follow" meta_keywords = "キーワード1,キーワード2,キーワード3" meta_description = "サイトの説明" meta_rating = "general" meta_author = "Y2Sunlight Office (www.y2sunlight.com)" meta_copyright = "Copyright (C) 2006 Y2Sunlight Office." |
