設定項目
設定項目 –
HTML_Template_Flexy の初期設定
設定
HTML_Template_Flexy には、サイト全体に有効な設定方法と、連想配列を用いたインスタンスごとの設定方法の二通りが用意されています。
ini ファイル使った設定が一番簡単です (PEAR::Config クラスや、自分で用意した設定方法を使いたい場合は、それも可能です) 。
HTML_Template_Flexy の一般的な設定
[HTML_Template_Flexy]
templateDir = /home/me/Projects/myapplication/templates
compileDir = /home/me/Projects/myapplication/compiled_templates
forceCompile = 0
debug = 0
locale = en
compiler = Standard
上記 ini ファイルの設定を HTML_Template_Flexy
(そして同様の設定方法を使用するその他のクラス)
に適用するには、次のようにします。
<?php
$config = parse_ini_file('example.ini',TRUE);
foreach($config as $class=>$values) {
$options = &PEAR::getStaticProperty($class,'options');
$options = $values;
}
?>
他に、インスタンス生成時に設定を行う (または既存の設定を上書きする) 方法もあります。
<?php
$options = array(
'templateDir' => '/home/me/Projects/myapplication/templates',
'compileDir' => '/home/me/Projects/myapplication/compiled_templates',
'forceCompile' => 0,
'debug' => 0,
'locale' => 'en',
'compiler' => 'Standard',
);
$template = new HTML_Template_Flexy($options);
?>
設定オプション
-
templateDir
directory
-
テンプレートファイルが格納されたディレクトリ。
-
compileDir
directory
-
コンパイル済みのテンプレートが保存されるディレクトリ。
このディレクトリは、web サーバによって書き込み可能でなければなりません。
-
forceCompile
boolean
-
通常は 0 に設定され、テンプレートは初回 (または変更があった場合) にのみコンパイルされます。
フィルターの開発をしており、結果のテストが必要な場合にのみ、このオプションが役立ちます。
-
debug
integer
-
デバッグレベル。初期値は 0 で無効を意味し、1 に設定した場合はデバッグ用の情報を表示します。
-
locale
string
-
初期値は 'en' で英語を示します。
テンプレートの読み書きにどの言語が使われているかを表しますが、
現状ではコンパイルされたファイル名の決定にしか使用されません。
コンパイルされたファイル名は、たとえば originalname.html.en.php のようになります。
Flexy は get_text() がインストールされている場合、内部処理で get_text() を用いて全ての文字列を get_text() の戻り値に置き換えます。
- これにより最小の労力で複数言語対応のサイトが作成可能です。
パースされたファイルごとに {templatename}.strings.serial と名付けられたファイルが作成されます。
PHP 関数 unserialize を用いてファイル内の全ての文字列が格納された配列を (翻訳用に) ここから取得したり、
xgettext を使用したりする事が出来ます。
-
compiler
string
-
初期値は 'Flexy' で、これは Flexy トークナイザドライバエンジンを表します。
それ以外に使用可能なものは、
regex (Xipe のエンジンと似ています)、Raw (標準的な PHP ファイルで、
置換やコンパイルを行いません) そして Standard (非推奨) があります。
コアコードとは無縁の独自に開発したエンジンや、
完全に分離されたような全くのオリジナルなエンジンも、このフィールドに設定できます。
-
multiSource
boolean
-
初期値は false で、同じテンプレートが複数の場所に存在することを許します
(たとえば「テーマ」機能を実装する際に、もしそのテーマに特定のテンプレートが存在しなければ
デフォルトのテーマのテンプレートを使うといった処理ができるようになります)。
-
templateDirOrder
string
-
初期値は '' で、複数のパスがある場合に
最初にマッチしたテンプレートが使用されます。
もし最後に見つかったものを使用したいなら、これを
'reverse' に設定します。
-
filters
array|string
-
配列、あるいはカンマ区切り文字列で指定するフィルタ。
Regex バックエンドでのみ使用されます。使用できるフィルタは
BodyOnly (body タグの前後をすべて消去する)、
Mail (php タグの後に改行をもうひとつ追加する)、
Php (php コードを取り除く。信頼性はあまり高くない)、
SimpleTags (変数やメソッドなどを置換する)、
XML (XML の開始タグを echo に置換する) です。
-
nonHTML
boolean
-
初期値は false です。Flexy コンパイラを使用している際にこれを指定すると、
HTML のパースを中止します (あまりテストされていません)。
-
allowPHP
boolean|string
-
初期値は false です。テンプレート内で php コードを使用できるようにします。
通常はオフにしておきましょう。そうすることで、
出力をエスケープし忘れて自爆してしまうといったことを防げます。
(複雑なループ処理には便利なのですが) 通常はお勧めしません。
true を指定すると PHP コードを有効にし、'delete' を指定すると
php コードを削除します (XSS 攻撃から身を守ることができないので、
信頼できるユーザに対してのみ使用するようにしましょう)。
-
flexyIgnore
boolean
-
初期値は false です。true を指定すると、html の form 要素を
HTML_Template_Flexy_Element に変換しなくなります。
-
numberFormat
string
-
初期値は ",2,'.',','" です。このコード片が、
出力エンジンで :n 修正子を使用する際に付加されます。例えば、{xxxx:n}
は number_format($t->xxxx,2,'.',','); となります。php マニュアルの
number_format のところを見ると、この出力が 1,200.00 となることがわかります。
-
url_rewrite
string
-
テンプレートをコンパイルする際に、flexy は
<img src、
<script src、
<a href および
xul スタイルシートの url を書き換えることができます。書式は
"match/original:new/url, match/another/original:new/url"
となります。それぞれのかたまりはカンマで区切られ、
コロンで区切って組み合わせを指定します。これにより、
エンジンを使用せずにテンプレートをプレビューできるようになります。
-
compileToString
boolean
-
初期値は false です。true に設定すると、
コンパイルした結果を文字列で返し、キャッシュファイルには書き込みません。
例: {object._myvar}
-
privates
boolean
-
初期値は false です。true に設定すると、
先頭にアンダースコアをつけた名前で変数にアクセスできるようになります
(PEAR のコーディング規約では、通常これはprivate となります)。
例: {someobject._myprivatevar} および {_myprivate}
-
globals
boolean
-
初期値は false です。true に設定すると、
PHP のグローバル変数およびスーパーグローバル変数にアクセスできるようになります。
例: {_POST[myvar]}、{GLOBALS[somevalue]}
-
globalfunctions
boolean
-
初期値は false です。true に設定すると、先頭に GLOBALS をつけることで
任意のネイティブ php 関数にアクセスできるようになります。
例: {GLOBALS.date(#d/m/Y#)} テンプレートの作者が信頼できる人でないと、
これを使用してはいけません。というのも、これを有効にすると簡単に
exec() が実行できてしまうからです。
-
locale
string
-
初期値は 'en' です。言語固有のテンプレートを
{filename}.{locale}.{extension} という名前で探す際に使用されます。
また、Translation2 翻訳ツールキットとともに使用する場合に、
コンパイル時に使用する翻訳テンプレートの言語を設定する際にも使用されます。
-
Translation2
mixed
-
初期値は false です。ここには配列、あるいは既存の Translation2 オブジェクトを指定することができます。
例: Translation2 => array('driver'=>'dataobjectsimple', options=>array()));
-
strict
boolean
-
初期値は false で、未定義の変数に関する警告は隠されます。
これは、outputObject のコール中の PHP の警告を有効にします。
メソッドのコールバックに隠されたバグを見つける際に有用です。
-
fatalError
int
-
初期値は HTML_TEMPLATE_FLEXY_ERROR_DIE で、テンプレートのコンパイルに失敗すると
flexy の処理を終了し、エラーを画面に表示します。compile() メソッドの結果として
PEAR_Object オブジェクトを取得したい場合は、これを
HTML_TEMPLATE_FLEXY_ERROR_RETURN に変更します。
-
plugins
string|array
-
プラグインのクラスを (初期値では Plugin フォルダから) 読み込みます。
これは {plugin.nameofmethod} や修正子 {outputstring:dateformat}
から使用されます。デフォルトの書式は、通常は
設定オプション plugin.dateformat、
plugin.numberformat.decimals、plugin.numberformat.point、plugin.numberformat.thousands
から取得されます。