Предложения по шаблону Drupal 7 — Почему это не работает?

#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 вместо этого в файле должны быть дефисы.