Utworzyłem motyw i mam pliki szablonów w tej strukturze
- /templates/page/page.tpl.php
- /templates/page/page--node-type.tpl.php
Stworzyłem niestandardowy szablon strony, ale z jakiegoś powodu Drupal go nie odbiera. Wyczyściłem pamięć podręczną, a także próbowałem dodać tę funkcję preprocesora do pliku szablonu theme.php, ale nadal nie działa.
if (isset($vars['node']))
{
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
Każda pomoc będzie mile widziana.
Odpowiedzi:
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:
Aby dodać dodatkowe sugestie, twój motyw powinien implementować template_preprocess_page () i dodać nowe sugestie w
$variables['theme_hook_suggestions']
($variables
jest 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.źródło
Korzystam z Drupal 7.4 i miałem ten sam problem, a jedyną rzeczą, która pomogła, był ten post: Jak dodać niestandardowy page.tpl na podstawie typów treści
Z postu:
źródło
Spędziłem zbyt długo próbując podążać za powyższym przykładem przy użyciu metody zamiany ciągów w Drupal 7.22. Wydaje mi się, że to nie działa. Co ciekawe, niektóre typy treści wydają się sugerowane automatycznie, a inne nie. To jest kod, który w końcu zadziałał dla mnie.
więc propozycja szablonu dla typu zawartości front_page to:
strona - front_cover.tpl.php
Co ciekawe, sugestia szablonu kodu dla typu zawartości „problem” pojawia się jako strona - problem.tpl.php bez potrzeby korzystania ze skryptu preprocesora !? Wydaje mi się, że to zastępuje szablon widoku, który używa podobnej ścieżki.
to znaczy
wyświetl ścieżkę = / problem / # sugestia szablonu na podstawie typu zawartości, tj. / issue / # / front_cover
źródło