Drupal D6:如何获取preprocess_page()中的节点字段?

Drupal D6:如何获取preprocess_page()中的节点字段?,drupal,Drupal,我创建了一个视图,可以很好地显示我的主页,但现在需要进行修改:我在视图中加载了两个字段图像,但只需要显示其中一个,具体取决于第三个日期字段的值和今天的日期。如果日期字段晚于今天,则显示图像y;如果日期字段早于今天,则显示图像x。这种逻辑不能在一个视图中完成 因此,在my template.php中,我希望在preprocess_page函数中将x或y作为$vars['img']输出。我只是想知道,我如何得到这些字段的值?它不是一个节点,而是一个节点摘要列表 函数被传递&$vars,但这些变量的打

我创建了一个视图,可以很好地显示我的主页,但现在需要进行修改:我在视图中加载了两个字段图像,但只需要显示其中一个,具体取决于第三个日期字段的值和今天的日期。如果日期字段晚于今天,则显示图像y;如果日期字段早于今天,则显示图像x。这种逻辑不能在一个视图中完成

因此,在my template.php中,我希望在preprocess_page函数中将x或y作为$vars['img']输出。我只是想知道,我如何得到这些字段的值?它不是一个节点,而是一个节点摘要列表

函数被传递&$vars,但这些变量的打印只显示html输出。 定制sql似乎不是一条出路。 当我加载视图时,我只得到它输出的html,但我认为我需要原始数据来进行日期比较。
谢谢你的指点

我相信有一些方法可以做到这一点,有些方法比其他方法更黑客。我想:

创建特定于视图的模板 通过检查应显示的img,为视图创建预处理函数并创建布尔变量。 最后,我将通过做一个if语句来稍微修改模板,检查它是否应该显示imgx或y。 这个解决方案非常简单直接,缺点是它不是完全通用的,因为您很可能需要知道正在使用的cck字段名的名称。不管怎么说,你能否概括这一点是值得怀疑的

编辑:


澄清一下。您可以查看正在使用的“常规视图”模板,它将让您了解视图如何打印不同的字段。通常,在使用$node对象时,获取字段通常不是一个大问题。原因是cck将字段添加到$node对象,以便您可以在那里访问它。我相信您可以在$node->field\u[名称]行中做一些事情来访问该字段。如果还没有,我建议您使用devel模块,并在模板中循环节点的某个位置执行dpm$节点。这将使您能够查看在$node对象上定义的内容。从那里打印img应该不是什么大问题。

改用preprocess\u节点怎么样?

谢谢您的回答!1.完成:views-view-fields.tpl.php 2。完成:函数sbs_preprocess&$vars,$hook在此函数中将执行日期比较,因此如果$date_x>$todays\u date$vars['image']=img1,则$vars['image']=img2。现在还不清楚如何找到cck字段,我知道它们的名称,没有问题,我需要这样做,即$date_x和预处理函数中的两个图像字段?