theme_preprocess_page
テーマのファイルに関数を追加してからtemplate.php
、テンプレート名をテンプレート候補リストに追加できます。
function mytheme_preprocess_page(&$vars) {
// you can perform different if statements
// if () {...
$template = 'page__front'; // you should replace dash sign with underscore
$vars['theme_hook_suggestions'][] = $template;
// }
}
編集
テンプレート名をパス エイリアスで指定する場合は、次のようなコードを記述できます。
function phptemplate_preprocess_page(&$variables) {
if (module_exists('path')) {
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
$template = 'page_';
foreach (explode('/', $alias) as $part) {
$template.= "_{$part}";
$variables['theme_hook_suggestions'][] = $template;
}
}
}
}
この関数がないと、デフォルトで次のノード テンプレートの提案が表示されます。
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
)
この関数は、次の新しいテンプレートの提案をノードに適用します。node/1
パスとpage/about
エイリアスを持つノードの例:
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
)
その後page--page-about.tpl.php
、ページに使用できます。
page--front.tpl.php
let's sayに適用したい場合node/15
は、この関数に if ステートメントを追加できます。
function phptemplate_preprocess_page(&$variables) {
if (module_exists('path')) {
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
$template = 'page_';
foreach (explode('/', $alias) as $part) {
$template.= "_{$part}";
$variables['theme_hook_suggestions'][] = $template;
}
}
}
if ($_GET['q'] == 'node/15') {
$variables['theme_hook_suggestions'][] = 'page__front';
}
}
これにより、次のテンプレートの提案が得られます。
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
[5] => page__front
)
最高のインデックス - 最高のテンプレート優先度。