Drupal7: Попытка создать тему для конкретной страницы с помощью функции предварительной обработки, но ... вместо этого я получаю пустой экран - PullRequest
0 голосов
/ 27 сентября 2011

Я только что обнаружил, что если вы хотите изменить определенную страницу (или группу страниц), все, что вам нужно, это добавить файл шаблонов в основные шаблоны. Например, мне нужно создать тему моей страницы / helloword, используя файлы шаблонов page - helloworld.tpl.php и node - helloworld.tpl.php.

Теперь все, что я получаю, это пустой экран, поэтому я попытался написать функцию предварительной обработки, которая добавляет поддержку пользовательских файлов тем, таких как:

<?php
/**
* Adding or modifying variables before page render.
*/
function phptemplate_preprocess_page(&$vars) {

  // Page change based on node->type
  // Add a new page-TYPE template to the list of templates used
  if (isset($vars['node'])) {
    // Add template naming suggestion. It should alway use doublehyphens in Drupal7.
    $vars['template_files'][] = 'page--'. str_replace('_', '-', $vars['node']->type);   
  }
}
?>

Я не вижу синтаксической ошибки, но я все еще получаю пустой экран. Все еще не повезло

Может ли кто-нибудь выяснить, что не так в коде / рутине?

Drupal7 + Омега подтема

С уважением

1 Ответ

0 голосов
/ 27 сентября 2011

Я думаю, что здесь есть небольшая путаница: файл шаблона с именем node--type.tpl.php будет автоматически вызываться для любого узла, имеющего тип type ... вам не нужно добавлять предложения шаблонов в себя.

На это есть одно предупреждение: вы должны скопировать оригинал node.tpl.php в папку вашей темы и очистить кеши, иначе Drupal не поднимет его.

Также вы не хотите использовать префикс phptemplate_ ... скорее, вы хотите, чтобы ваша функция вызывалась MYTHEMENAME_preprocess_page.

Ваш код для добавления шаблона страницы, основанный на типе узла, выглядит точным, посмотрите, не возникла ли у вас проблема после изменения имени функции и очистки кешей.

Надеюсь, это поможет:)

...