Questa mattina ho scoperto che Drupal 7 ha modificato il modo di gestire il nome dei template files. Tempo fa, in un progetto con Drupal 6, avevo modificato la funzione mytheme_preprocess_page(&$vars)
presente nel file template.php
per poter gestire template diversi su pagine differenti basandomi sul URL alias della pagina stessa.
Il codice per D6
// Different page templates depending on URL aliases
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$template_filename = 'page';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '-' . $path_part;
$vars['template_files'][] = $template_filename;
}
}
}
In Drupal 7 questo codice non funziona perché è stata modificata la variabile che gestisce il nome del template. Non è più $vars[‘template_files’]
, ma bensì $vars['theme_hook_suggestions’]
e al posto del separatore -
, viene utilizzato il doppio underscore __
.
Il codice per D7
// Different page templates depending on URL aliases
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$template_filename = 'page';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '__' . $path_part;
$vars['theme_hook_suggestions'][] = $template_filename;
}
}
}
Dimenticavo il nome del template file ora dev'essere page–