页面模板未加载,但正在加载节点模板

时间:2010-08-30 04:01:32

标签: php drupal drupal-6 preprocessor drupal-5

sys info:drupal 6安装,包含大量模块......太多无法列出。

问题:只有某种内容类型不能正确加载它的模板文件。通过视图在这些页面上显示的一些节点正在进行标记。它们是唯一被加载的内容。此内容所依赖的模板文件是node-event.tpl

目标:加载page-team.tpl.php

通过

预处理在template.php中以两种方式加载模板建议
mytheme_preprocess_page(&$vars, $hook)

在drupal 5安装中从_phptemplate_variables ()转换。

方法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 个答案:

答案 0 :(得分:1)

嗯,你清除了缓存吗?因为在处理主题时,drupal通常会在清除缓存后捕获新添加的主题和模板。

如果你不确定你的注册。 exp。,我相信你可以写下这个:


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

清除缓存。

答案 1 :(得分:1)

这就是我在template.php中的内容:


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

frontend是我主题的名称。我在主题文件夹中有一个文件页面dummy.tpl.php。为了看它是否有效,我在身体标签后面添加了“IT WORKS”。然后清除缓存。现在我转到页面“mydomain.com/dummy_tests/1”并看到它的工作原理。

如果遇到问题,请尝试检查drupal_get_path_alias的输出($ _ GET ['q'])。只是做


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

在preprocess_page()函数内部。如果真的以“fdl”开头,一切都应该有效。这是一个有效的例子,所以你只是试着四处游说并弄清楚它为什么不适合你。

BTW,尝试删除节点模板并仅保留页面模板。我不知道为什么,但可能有些不对劲,drupal会把它们弄乱。

答案 2 :(得分:0)

我尝试在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';
  }
}

答案 3 :(得分:0)

我在模板中找到了一个不推荐使用的链接函数。更新参数修复了一切。