Jak podano w Propozycjach szablonów Drupal 7 , domyślną propozycją szablonów z Drupal 7 dla stron jest strona - [przód | wewnętrzny / ścieżka] .tpl.php.
W przypadku strony widocznej pod adresem http://www.example.com/node/1/edit Drupal szuka następujących plików szablonów:
- page - node - edit.tpl.php
- page - node - 1.tpl.php
- strona - node.tpl.php
- page.tpl.php
Aby dodać dodatkowe sugestie, twój motyw powinien implementować template_preprocess_page () i dodać nowe sugestie w $variables['theme_hook_suggestions']( $variablesjest to zmienna przekazywana przez odwołanie do funkcji).
Jeśli to zrobiłeś, jedynym powodem, dla którego sugerowany plik szablonu nie jest używany, jest to, że plik nie ma prawidłowej nazwy: w przypadku, gdy strona pokazuje stronę książki, na przykład plik szablonu powinien mieć postać page - book.tpl .php. Możesz zmienić kod swojej kompozycji i pozwolić jej używać szablonu strony - node-type.tpl.php, jeśli nie znajdzie szablonu takiego jak page - book.tpl.php.
Zauważ też, że w theme_get_suggestions () (która jest funkcją wywoływaną przez template_preprocess_page () ) łączniki są zastępowane przez _, a nie odwrotnie. Powód, dla którego to zostało zrobione, wyjaśniono w komentarzu zgłoszonym w kodzie funkcji.
// 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);