繁体   English   中英

Drupal:替换View中的字段值

[英]Drupal: replacing field value in View

我有Drupal 5视图(因此必须为“ Views 1”),其中包含Event_StartTime字段,该字段正常显示内部具有实际日期的字段。 但是我也有许多Event_StartTime字段值的记录,例如1969年12月31日 -8 :00 pm ,这在视图中看起来很糟糕,我需要用一些自定义标签替换它们,例如“无可用日期”。

我可以以某种方式将这种情况(如果值= x显示值y)注入视图吗? 即使在SQL中以“无可用日期”打印时,视图也会显示空白字段。

总结起来,普遍的问题是View字段是一种限制,有时您只需要替换某些字段值,但是它要么是“ date or no”,要么是“ node-reference id or none”。

PS这种情况可能有点复杂,因为我使用“奖金:视图导出”模块,该模块使我的视图返回CSV数据。

我对Views1不太熟悉,但是我认为您至少有两个选择:

  1. 在主题级别-您可以覆盖字段模板,并在其中检查特定的日期值,找到后将其替换。 当然,此检查取决于日期的格式,因此,如果您更改日期,则还需要调整检查。
  2. 在视图生成级别-您可以从代码“手动”执行视图,并在实例化之后和/或执行之后但在呈现之前立即检查视图对象(请参阅她的示例,了解如何在Views2中操纵视图对象 )。 您可以在执行之后但在呈现之前操纵result属性,或者您可以在实例化之后立即在其中放置预呈现回调(但是我不确定在Views1中是否已经可以实现)。

基于Henrik的评论,在我看来,主题化是执行此操作的最佳位置。 您需要向template.php文件中添加一个函数,以覆盖该特定视图。 请参阅Views 1主题文档 根据此文档,您可以使用表单视图的名称创建一个函数。

function THEMENAME_view_view_VIEWNAME($view, $type, $nodes, $level = NULL, $args = NULL)

以整个视图为主题。 $nodes是视图中包含的部分加载的节点对象的数组。 您可以加载每个节点,并使用类似以下内容检查Event_StartTime字段的值:

foreach ($nodes as $id => $node) {
  $temp_node = node_load($node->nid);
  //now check value of Event_StartTime assuming that is what you named the field
  if ($temp_node->Event_StartTime === 'Dec 31 1969 - 8:00pm') {
    $temp_node->Event_StartTime = 'No Date Available';
  }
 //output the fields of your view . . .
}

我只展示了如何检查Event\\_StartTime字段的值,并且不确定实际值是多少。 1969年12月31日在time()函数返回的日期之前,因此,如果这样做不起作用,则可能要检查Event_StartTime === '' ,如果event字段保留为空,则可能为true。 您仍然必须将其余字段设置为主题,然后将它们输出为HTML,仅更改一个字段的输出可能会很麻烦。 您还可以覆盖各个字段的输出。 我还没有这样做,所以我不能指导您完成,但是我上面给出的链接中有一些有关重写字段主题功能的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM