0

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

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

总而言之,一般的问题是 View 字段是一种限制,有时您只需要替换一些字段值,但它要么是“日期或无”或“节点引用 id 或无”。

PS 情况可能有点复杂,因为我使用“Bonus: Views Export”模块让我的视图返回 CSV 数据。

4

2 回答 2

2

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

  1. 在主题级别 - 您可以覆盖字段模板并在其中检查特定日期值,并在找到时替换它。当然,这个检查将取决于日期的格式,所以如果你改变它,你也需要调整检查。
  2. 在视图生成级别 - 您可以从代码中“手动”执行视图,并在实例化和/或执行之后,但在渲染之前检查视图对象(有关在 Views2 中操作视图对象的示例,请参阅她)。您可以在执行之后但在渲染之前操作结果属性,或者您可以在实例化之后立即在其中放置一个预渲染回调(但我不确定这在 Views1 中是否已经可行)。
于 2009-09-03T07:00:43.443 回答
1

基于 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(),因此如果这不起作用,您可能需要检查 if Event_StartTime === '',如果事件字段为空,则可能为真。您仍然需要为其余字段设置主题并将它们作为 HTML 输出,这可能只是为了更改一个字段的输出而太痛苦了。您还可以覆盖单个字段的输出。我没有这样做,所以我无法引导您完成它,但是我上面提供的链接有一些关于覆盖字段主题功能的文档。

于 2009-09-03T18:38:51.490 回答