Comme indiqué dans Drupal 7 Template Suggestions , la suggestion de modèle utilisée par défaut depuis Drupal 7 pour les pages est page - [front | internal / path] .tpl.php.
Pour une page visible sur http://www.example.com/node/1/edit , Drupal rechercherait les fichiers de modèle suivants:
- page - nœud - edit.tpl.php
- page - nœud - 1.tpl.php
- page - node.tpl.php
- page.tpl.php
Pour ajouter des suggestions supplémentaires, votre thème doit implémenter template_preprocess_page () et ajouter de nouvelles suggestions dans $variables['theme_hook_suggestions']
( $variables
est la variable transmise par référence à la fonction).
Si vous avez fait cela, la seule raison pour laquelle le fichier de modèle suggéré n'est pas utilisé est que le fichier n'est pas correctement nommé: dans le cas où la page affiche une page de livre, par exemple, le fichier de modèle doit être page - book.tpl .php. Vous pouvez modifier le code de votre thème et le laisser utiliser le modèle page - node-type.tpl.php, s'il ne trouve pas de modèle comme page - book.tpl.php.
A noter également que, dans theme_get_suggestions () (qui est la fonction appelée par template_preprocess_page () ), les tirets sont remplacés par _
, et non l'inverse. La raison de cette opération est expliquée dans un commentaire rapporté dans le code de fonction.
// When we discover templates in drupal_find_theme_templates(),
// hyphens (-) are converted to underscores (_) before the theme hook
// is registered. We do this because the hyphens used for delimiters
// in hook suggestions cannot be used in the function names of the
// associated preprocess functions. Any page templates designed to be used
// on paths that contain a hyphen are also registered with these hyphens
// converted to underscores so here we must convert any hyphens in path
// arguments to underscores here before fetching theme hook suggestions
// to ensure the templates are appropriately recognized.
$arg = str_replace(array("/", "\\", "\0", '-'), array('', '', '', '_'), $arg);