Вы можете добавить функцию 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
path и page/about
alias:
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
кскажем, 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
)
Самый высокий индекс - самый высокийПриоритет шаблона.