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

时间:2009-08-11 12:45:26

标签: drupal

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

所以在我的template.php id中,喜欢在preprocess_page函数中输出x或y作为$ vars ['img']。我只是想知道,我如何得到这些领域的价值观?它不是节点而是节点标记列表。

  • 函数传递& $ vars但是print_r只显示了html输出。
  • 自定义sql似乎不是要走的路。
  • 当我加载视图时,我只是得到它输出的html但是(我认为)我需要原始数据来进行日期比较。

感谢您的任何指示!

2 个答案:

答案 0 :(得分:0)

我确信有一些方法可以做到这一点,有些方法比其他方式更黑。我会:

  1. 制作特定于您视图的模板
  2. 通过检查应显示的img,为视图创建预处理函数并创建布尔变量。
  3. 最后,我会通过制作一个if语句来检查它是否应该显示img x或y来稍微改变模板。
  4. 这个解决方案非常简单直接,缺点是它并不完全通用,因为您很可能需要知道您正在使用的cck字段名称。无论如何你都能够概括这一点是值得怀疑的。

    修改

    澄清一下。您可以查看正在使用的常规视图模板,它将为您提供有关视图如何打印不同字段的一些信息。通常,在拥有$ node对象时,获取字段通常不是一个大问题。原因是cck将字段添加到$ node对象,以便您可以在那里访问它。我相信你可以在$ node-> field_ [the_name]的行中做些什么来到这个领域。我建议您使用devel模块,如果您还没有,并在模板中的某个地方执行dpm($ node)循环节点。这将使您能够查看$ node对象上已定义的内容。从那里打印img应该不是一个大问题。

答案 1 :(得分:0)

如何使用preprocess_node()呢?