Шаблон страницы не загружается, но шаблон узла загружается - PullRequest
2 голосов
/ 30 августа 2010

sys info: установка drupal 6, с множеством модулей ... слишком много, чтобы перечислить.

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

Цель: загрузить страницу-team.tpl.php

предложения шаблонов загружаются двумя способами в template.php через предварительную обработку через

mytheme_preprocess_page(&$vars, $hook)

преобразовано из _phptemplate_variables () в установку drupal 5.

метод 1:

if (module_exists('path')) {
  $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
  if ($alias != $_GET['q']) {
    $template_filename = 'page';
    foreach (explode('/', $alias) as $path_part) {
      $template_filename = $template_filename . '-' . $path_part;
      $vars['template_files'][] = $template_filename;
    }
  }
}

метод 2:

if ($vars['node']->og_groups['0'] || preg_match('/fdl\//',$vars['node']->path) || (preg_match('/og\/manage/',$alias) || preg_match('/og\/invite/',$alias) || preg_match('/og\/users/',$alias)) || (preg_match('/node\/add/',$alias) && $_GET['gids'] != '') || $vars['node']->og_description || (arg(0) == 'user' && is_numeric(arg(1)))) { 
  $vars['template_files'][] = 'page-team';

}

page-team - это tpl, который отсутствует, и я подозреваю, что может быть ошибка с моим кодом выше (метод 2).

Я пытаюсь загрузить этот шаблон для всех страниц с первым аргументом пути "fdl", так что site.com/fdl и все потомки fdl.

я знаю, что есть много возможностей. но я чувствую, что ошибка здесь. спасибо за любую помощь, которую вы можете предложить.

Ответы [ 4 ]

1 голос
/ 31 августа 2010

Это то, что у меня есть в моем template.php:


function frontend_preprocess_page(&$vars){
  if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
      $vars['template_files'][] = 'page-dummy';
  }
}

frontend - это название моей темы.У меня есть файл page-dummy.tpl.php внутри папки темы.Чтобы увидеть, что это работает, я добавил «IT WORKS» сразу после тега body.Затем очистил кеш.Теперь я перехожу на страницу «mydomain.com/dummy_tests/1» и вижу, что она работает.

Если у вас возникли проблемы, попробуйте проверить вывод drupal_get_path_alias ($ _ GET ['q']).Просто сделайте


print drupal_get_path_alias($_GET['q']);

прямо внутри функции preprocess_page ().И если он действительно начинается с "fdl", все должно работать.Это рабочий пример, поэтому вы просто попытаетесь поиграть и выяснить, почему он не работает для вас.

Кстати, попробуйте удалить шаблон узла и оставить только шаблон страницы.Я не знаю почему, но может быть что-то не так, и друпал их портит.

1 голос
/ 30 августа 2010

Ну, вы очистили кеш?Потому что при работе с темами drupal обычно очищает новые темы и шаблоны после очистки кеша.

И если вы не уверены в своих правилах.Опыт, я думаю, вы можете просто написать это:


if(strpos(drupal_get_path_alias($_GET['q']),'fdl')===0){
    $vars['template_files'][] = 'page-team';
}

И очистить кеш.

0 голосов
/ 23 сентября 2010

Я нашел устаревшую функцию ссылки в шаблоне.обновление параметров исправлено все.

0 голосов
/ 06 сентября 2010

Я попытался добавить пользовательские шаблоны в функции page_preprocess и node_preprocess. И это сработало и для шаблонов страниц, и для меня.


function frontend_preprocess_page(&$vars){
  if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
      $vars['template_files'][] = 'page-dummy';
  }
}

function frontend_preprocess_node(&$vars){
  if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
      $vars['template_files'][] = 'node-dummy';
  }
}

...