今回はSmartyのテンプレートファイルの変更をする方法を具体的に見ていきます。
準備
テンプレートファイル(以後templateファイル)は、テキストファイルです。ただ、文字コードがUTF-8で改行がLFであるため、Windowsのメモ帳では参照するにも更新するにも無理があります。
UTF-8対応のテキストエディタを準備してください。筆者はterapadをよく使用します。
Linuxの方は・・・アドバイス不要ですね。
ディレクトリ構成
最初に、ガルーンのディレクトリ構成を把握しておく必要があります。特に今回注目するのは「templateファイルが保存されている場所」と
「compiledファイルが保存されている場所」です。
これらを探すためにはまず、「CGIディレクトリ」を調べる必要があります。
CGIディレクトリ
Windows版なら「grn.exe」、Linux版なら「grn.cgi」が保存されている場所です。
Windows版ならデフォルトは「C:¥Program Files¥Cybozu¥Apache2.2¥cgi-bin\cbgrn」
Linux版ならデフォルトは「/var/www/cgi-bin/cbgrn」
この場所はインストール時に変更できるようになっています。
変更している場合はその場所を探してください。
templateディレクトリ
templateファイルが保存されているディレクトリです。
場所は [CGIディレクトリ]/page/ です。
この中に機能ごとのフォルダがあり、その中にある「~.tpl」という拡張子のファイルがtemplateファイルです。
compiledディレクトリ
templateファイルをPHPが実行できる形式にコンパイルしたファイルが保存されるディレクトリです。
場所は [CGIディレクトリ]/smarty/compiled/ です。
templateファイルを変更しても、このcompiledディレクトリ内のファイルを削除しないと有効になりません。
templateファイル1つに付きcompiledファイルも一つ生成されるのですが、対応したcompiledファイルを探すのは困難なので削除するときはcompiledディレクトリ内のすべてのファイル=%%~という名前のフォルダを削除します。
私がカスタマイズをするときは、削除するバッチファイルを作っておきます。
くれぐれも削除対象を間違わないよう注意してください。
templateファイルの変更
さてここからが本命です。カスタマイズでファイルの変更を行うときは、必ずバックアップを取りましょう。
変にいじりすぎて元に戻せなくなったときにバックアップから戻しましょう。
該当のtemplateファイルを探す
何かのカスタマイズを思いついたとして、その機能を提供しているtemplateファイルを探すのはかなり慣れが必要です。
フォルダ名やファイル名から推測して色々探したり、文字列検索をしてみてください。
HTMLの記述
テキストエディタで開くとHTMLのソースとところどころに{}で囲まれたソースが混在しています。
単純にHTML部の変更だけで済むカスタマイズなら簡単ですね。
JavaScriptの記述
当然JavaScriptの記述もできます。
ちなみにガルーン2,3ではデフォルトでprototype.jsが読み込まれます。
ガルーン3で確認したところ、prototype.jsのバージョンは1.6.0.3でした。
さらにガルーン3ではYUIも読み込まれています。
YUIのバージョンは2.7のようです。
もしjQueryを読み込んで使いたい場合は、「$」の競合を避ける工夫が必要です。
(こちらのサイトが参考になります。)
Smartyにassignされた変数を調べる
PHPからSmartyに変数を渡すことをassignと呼びます。
templateファイル上でassignされている変数を調べるには、templateファイルの中に
{debug}と書いて、compiledファイルを削除して表示を試します。
するとポップアップウィンドウ内に変数名と値の羅列がでます。
PHPを書くには
templateファイル内にPHPを書きたい場合は以下のタグを利用します。
{php} /* ここにPHPのコードを書く */ {/php}
assignされた変数をPHP上で取得したい場合は、以下のように記述します。
$this->get_template_vars('変数名');
PHPでSmartyの変数に値をassignしたい場合は、以下のように記述します。
$this->assign('変数名', 値);
Smarty独自タグ
templateファイル内でassignされた変数を使うには、{$変数名} と書きます。
配列の場合は {$変数名.キー名}と書きます。
オブジェクトの場合は{$変数名->プロパティ名}、{$変数名->メソッド名()}です。
注)Smarty2の仕様によりチェーンメソッドは使えません。×{$変数名->メソッド名()->メソッド名()}
コメントは {* と *}で囲みます。このコメントはPHPのコメント同様、クライアントには送られません。
その他、ループ処理や条件分岐などSmarty独自のタグがあります。
詳しくはSmartyのマニュアルを参照してください。
templateファイルを書き換えた後はcompiledファイルを削除するのを忘れずに。
最後に
・カスタマイズは自己責任で。(私は責任を負えません)・いじる前に必ずバックアップを取りましょう。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。