#drupal #themes #preprocessor #drupal-7 #theming
#drupal #темы #препроцессор #drupal-7 #тематизация
Вопрос:
Я создал свою собственную тему. В template.php файл, у меня есть следующий код:
function mytheme_preprocess_page(amp;$variables) {
if(isset($variables['node'])){
if($variables['node']->type === 'sports'){
$variables['theme_hook_suggestions'][] = 'page__node__sports';
}
}
}
И у меня есть узел page__sports.tpl.php файл в каталоге шаблонов моей темы, и я очистил кэш. Однако узел страницы_sports.tpl.php шаблон не используется. Выполняя некоторую отладку, я вставил оператор echo в начало функции preprocess_page, и это действительно появилось на экране, поэтому я знаю, что функция запущена. Но предложение по шаблону просто не работает. Я даже удалил операторы if внутри функции, оставив только $variables[‘theme_hook_suggestions’] = … строка, но все равно нада.
Есть идеи, что происходит не так?
Ответ №1:
Вы также добавили page.tpl.php в вашу папку с темами? Предложения работают, только если исходный шаблон тоже существует.
Смотрите также http://adaptivethemes.com/page-template-suggestions-per-node-type
Комментарии:
1. Да, у меня есть page.tpl.php файл там.
2. И я взглянул на ссылку, которую вы опубликовали, и скопировал ее непосредственно в версию D7, но по-прежнему безуспешно.
Ответ №2:
Разобрался. Хотя имя шаблона в строке:
$variables['theme_hook_suggestions'][] = 'page__node__sports';
должны быть подчеркивания, фактические .tpl.php вместо этого в файле должны быть дефисы.