Như đã báo cáo trong Đề xuất mẫu Drupal 7 , đề xuất mẫu được sử dụng theo mặc định từ Drupal 7 cho các trang là trang - [front | Internal / path] .tpl.php.
Đối với một trang hiển thị tại http://www.example.com/node/1/edit , Drupal sẽ tìm các tệp mẫu sau:
- trang - nút - edit.tpl.php
- trang - nút - 1.tpl.php
- trang - node.tpl.php
- trang.tpl.php
Để thêm các đề xuất bổ sung, chủ đề của bạn nên triển khai template_pre process_page () và thêm các đề xuất mới trong $variables['theme_hook_suggestions']
( $variables
là biến được truyền bởi tham chiếu đến hàm).
Nếu bạn đã làm điều đó, thì lý do duy nhất mà tệp mẫu được đề xuất không được sử dụng là vì tệp không được đặt tên chính xác: trong trường hợp trang hiển thị trang sách, ví dụ: tệp mẫu phải là trang - book.tpl .php. Bạn có thể thay đổi mã cho chủ đề của mình và cho phép nó sử dụng trang - mẫu nút-type.tpl.php, nếu nó không tìm thấy một mẫu như trang - book.tpl.php.
Cũng lưu ý rằng, trong các dấu gạch ngang theme_get_suggestions () (là hàm được gọi bởi các dấu gạch ngang template_pre process_page ()) được thay thế bởi _
, chứ không phải ngược lại. Lý do được thực hiện được giải thích trong một bình luận được báo cáo trong mã chức năng.
// 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);