2

系统信息:drupal 6 安装,包含大量模块...太多无法列出。

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

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

模板建议在template.php中通过预处理以两种方式加载

mytheme_preprocess_page(&$vars, $hook)

从 drupal 5 安装转换而来_phptemplate_variables ()

方法一:

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;
    }
  }
}

方法二:

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

4 回答 4

1

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

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


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

并清除缓存。

于 2010-08-30T07:03:04.400 回答
1

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


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

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

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


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

就在 preprocess_page() 函数内部。如果它真的以“fdl”开头,那么一切都应该有效。这是一个有效的示例,因此您只需尝试尝试并找出它为什么不适合您。

顺便说一句,尝试删除节点模板并仅保留页面模板。我不知道为什么,但可能是出了点问题,drupal 把它们弄乱了。

于 2010-08-30T20:29:31.523 回答
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';
  }
}

于 2010-09-06T09:17:14.057 回答
0

我在模板中发现了一个不推荐使用的链接功能。更新参数修复了一切。

于 2010-09-22T23:28:56.363 回答