Qiqは、名前付きテンプレートを任意の数のディレクトリパスから検索します。Template::new()
にpaths
の配列を渡すことができます。
$tpl = Template::new(
paths: [
'/path/to/custom/templates',
'/path/to/default/templates',
],
);
あるいは、TemplateLocatorに直接指示することもできます。
$tpl->getTempLatelocator()->setPaths([
'/path/to/custom/templates',
'/path/to/default/templates',
]);
TemplateLocatorは、最初のディレクトリパスから最後のディレクトリパスまで、指定されたテンプレートを検索します。
/*
searches first for: /path/to/custom/templates/foo.php,
and then second for: /path/to/default/templates/foo.php
*/
$output = $tpl('foo');
もし必要なら、Templateのインスタンス化の後でパスを変更し、TemplateLocatorにディレクトリパスを追加または前置することができます。
$tpl->getTemplateLocator()->prependPath('/higher/precedence/templates');
$tpl->getTemplateLocator()->appendPath('/lower/precedence/templates');
サブディレクトリにあるテンプレートをレンダリングするには、テンプレート名にサブディレクトリを使用します。
// renders the "foo/bar/baz.php" template
$output = $tpl('foo/bar/baz');
デフォルトでは、TemplateLocatorはテンプレートファイル名に.php
を自動で付加します。もしテンプレートファイルの拡張子が違う場合は、setExtension()
メソッドで変更します。
$templateLocator = $tpl->getTempLatelocator();
$templateLocator->setExtension('.phtml');
あるいは、Template作成時に設定することもできます。
$tpl = Template::new(
extension: '.phtml'
);
メール用や管理者ページ用など、テンプレートのコレクションを識別するのが便利な場合があります。(他のシステムでは、これらを"グループ"、"フォルダ"、"名前空間"と呼ぶことがあります)。
ディレクトリパスとコレクションを関連付けるには、パスの前にコレクション名とコロンを付けます。
$tpl = new Template(
paths: [
'admin:/path/to/admin/templates',
'email:/path/to/email/templates',
]
);
コレクションからテンプレートをレンダリングするには、テンプレート名の前にコレクション名を付けます。
$output = $tpl('email:notify/subscribed');
コレクションパスの設定、追加、およびプリペンドは、接頭辞なしのテンプレートパスの"main"、または"default"コレクションと同じように行うことができます。