Drupal 为什么不是';t$vars[';节点';]可用于某些内容类型的预处理页面?

Drupal 为什么不是';t$vars[';节点';]可用于某些内容类型的预处理页面?,drupal,templates,drupal-6,Drupal,Templates,Drupal 6,我目前正在使用Drupal6创建一个网站。我有一个MYTHEME_preprocess_page()函数,它从分类法和cck字段向page.tpl.php模板添加一些变量。它正常工作了一段时间,然后$vars['node']为空,但仅适用于2种内容类型。“node”变量可用于其他内容类型中的preprocess_page函数 我认为使用下面的代码有问题,但是当我删除所有这些代码时,“node”变量仍然是空的 function mytheme_preprocess_node(&$vars,

我目前正在使用Drupal6创建一个网站。我有一个MYTHEME_preprocess_page()函数,它从分类法和cck字段向page.tpl.php模板添加一些变量。它正常工作了一段时间,然后$vars['node']为空,但仅适用于2种内容类型。“node”变量可用于其他内容类型中的preprocess_page函数

我认为使用下面的代码有问题,但是当我删除所有这些代码时,“node”变量仍然是空的

function mytheme_preprocess_node(&$vars, $hook) {
  $function = 'mytheme_preprocess_node'.'_'. $vars['node']->type;
  if (function_exists($function)) {
   $function(&$vars);
  }
}
是否有人知道可能会删除“node”变量的任何陷阱或bug?我似乎不知道我错在哪里。我不知所措

这是我完整的mytheme_preprocess_page()函数

function mytheme_preprocess_page(&$vars, $hook) {
  if ($hook == 'node' || $hook == 'page') {

    if (is_object($vars['node'])) {
      // grab the header image if it exists to make it avaialble to the content header
      $vars['header_image'] = _mytheme_get_header_image($vars);

      // get the taxonomy term to put in the content header
      if (count($vars['node']->taxonomy) > 0) {
        $vars['tax_term'] = "<div class=\"terms\">" . _mytheme_get_first_taxonomy_term($vars['node']->taxonomy) . "</div>";
      }

      // add the teacher's credentials to the content header
      if ($vars['node']->field_credentials[0]['view'] != '') {
        $vars['teacher_credentials'] = '<span class="teacher-creds">' . $vars['node']->field_credentials[0]['view'] . '</span>';
      }
    }
  }
}
函数mytheme_预处理_页面(&$vars,$hook){
如果($hook=='node'| |$hook=='page'){
if(是_对象($vars['node'])){
//抓取标题图像(如果存在),使其可用于内容标题
$vars['header\u image']=\u mysteme\u get\u header\u image($vars);
//获取要放在内容标题中的分类术语
if(计数($vars['node']->taxonomy)>0){
$vars['tax\u term']=”。\u mysteme\u get\u first\u taxonomy\u term($vars['node']->taxonomy)。”;
}
//将教师的凭据添加到内容标题
如果($vars['node']->field_凭证[0]['view']!=''){
$vars['teacher_credentials']='.$vars['node']->field_credentials[0]['view'].';
}
}
}
}

在逐一检查并禁用模块后,我确定问题与模块node_breadcrumb有关。在此提交了一份类似的文件:


在第3条评论中,您将看到另一个问题的链接,该问题的解决方案是

在逐一检查并禁用模块后,我确定该问题与模块node_breadcrumb有关。在此提交了一份类似的文件:


在第3条评论中,您将看到一个指向另一个问题的链接,该问题的解决方案是

对于遇到此问题的其他人,我使用jQuery UI模块时遇到了相同的问题。禁用并重新启用修复了它,我无法跟踪具体问题,但它似乎与某些路径检查函数中的$static变量有关

对于其他跌跌撞撞地进入这里的人,我建议您从dev安装程序的module文件夹中直接取出一些更明显的模块,看看情况是否发生了变化,然后将它们放回那里,直到您找到答案


另一个选项是搜索
\u preprocess\u页面(
$variables['node']
$vars['node']
查看某些贡献的代码是否在不应该的情况下无意中扰乱了某个节点。

对于其他遇到这种情况的节点,我使用jQuery UI模块时也遇到了同样的问题。禁用并重新启用修复了它,我无法跟踪特定的问题,但它似乎与某些路径检查中的$static变量有关功能

对于其他跌跌撞撞地进入这里的人,我建议您从dev安装程序的module文件夹中直接取出一些更明显的模块,看看情况是否发生了变化,然后将它们放回那里,直到您找到答案


另一个选项是搜索
\u preprocess\u页面(
$variables['node']
$vars['node']
的实例,以查看某些贡献的代码是否在不应该的时候无意中取消了节点。

哪些内容类型,以及如何知道$vars['node']未设置?您的代码在is_对象($vars['node'])检查周围有另一个if块,因此,如果只是内部if块没有运行,问题可能在周围的块中。我已将调试代码放在if($hook…块)前面打印$vars['node']数组。在“header_图像”所在的页面上在正常工作时,$vars['node']被设置。在不起作用的两种内容类型上,它是空白的。内容类型是带有几个cck字段的自定义类型。另一件事……所有内容都在节点编辑页面上工作,但不在节点视图上。您如何知道$vars['node']未设置?您的代码在is_对象($vars['node'])检查周围有另一个if块,因此,如果只是内部if块没有运行,问题可能在周围的块中。我已将调试代码放在if($hook…块)前面打印$vars['node']数组。在“header_图像”所在的页面上在正常工作时,$vars['node']被设置。在不起作用的两种内容类型上,它是空白的。内容类型是带有几个cck字段的自定义类型。另一件事……所有内容都在节点编辑页面上工作,但在节点视图上不工作