Vous pouvez ajouter theme_preprocess_page
à la fonction template.php
puis ajoutez le nom de votre modèle dans la liste des suggestions de modèles.
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;
// }
}
EDIT
Si vous voulez spécifier le nom du modèle par un alias de chemin, vous pouvez écrire un code comme celui-ci :
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;
}
}
}
}
Sans cette fonction, vous auriez les suggestions de modèles de nœuds suivantes par défaut :
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
)
Et cette fonction appliquerait à votre nœud les nouvelles suggestions de modèles suivantes. Exemple de nœud avec node/1
et page/about
alias :
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
)
Donc après cela, vous pouvez utiliser page--page-about.tpl.php
pour votre page.
Si vous voulez appliquer page--front.tpl.php
à votre, disons node/15
alors dans cette fonction vous pouvez ajouter l'instruction 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';
}
}
Vous obtiendrez ainsi les suggestions de modèles suivantes :
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
[5] => page__front
)
L'indice le plus élevé - la priorité la plus élevée du modèle.