如何在drupal视图中有条件地隐藏字段?

时间:2010-12-05 18:29:03

标签: drupal-6 drupal-views

我有两个要渲染的字段,但我只想在第一个字段为空时显示第二个字段。如果没有覆盖模板文件中的字段,我可以使用内置视图功能中的功能吗?

6 个答案:

答案 0 :(得分:15)

对于观点3,drupal 7

  • 所需输出 - 如果field2为空,则显示field1。

添加两个字段以在field1,field2中查看,并选择field1复选框“从显示中排除”。

转到field2并配置“显示无结果行为”。添加field1替换模式,例如[field1]并选择“将数字0计为空”,“如果为空则隐藏”和“如果为空则隐藏重写”。

现在这将产生这两个字段的if else功能。

答案 1 :(得分:3)

  1. 添加您要显示的字段。选择“从显示中排除”。
  2. 如果显示上一个字段,请添加要控制的字段。选择“重写输出”。使用令牌替换来显示上一个字段。标记“隐藏如果空”
  3. 没有三个。
  4. PS:引用的选项文本可能不正确(我正在查看翻译的网站),但你明白了。

答案 2 :(得分:1)

我通常会使用views_customfield模块来做这种事情。在视图中添加第三个字段,即php customfield,并从显示中排除第二个字段。然后,您可以在自定义字段中编写一个非常快速的PHP代码段,以检查第一个字段是否为空,如果是,则打印出第二个字段。

答案 3 :(得分:1)

您可以通过以下步骤轻松完成此操作(我已在drupal 7中尝试过):

  1. 添加两个字段
  2. 使第一个看不见(从显示中排除)
  3. 在第二个字段中转到无结果行为标签。
  4. 写下第一个字段的标记(例如:[field_name])。
  5. 它应该有效,我希望它能与你合作

答案 4 :(得分:0)

我的解决方案是显示field_1的英文版本和field_2的翻译版本:

使用面板:

  1. 通过向视图添加另一个显示来制作视图的两个副本。

  2. 在原始视图显示中,您从显示field_2中删除或排除,在第二个显示中删除field_1

  3. 在面板中,您将两个视图显示添加为面板窗格。

  4. 对于第一个视图显示窗格,添加Visibility rule -> User:language -> English

  5. 对于第二个视图显示窗格,添加Visibility rule -> User:language -> Your_second_language

  6. 它看起来很复杂,但对熟悉面板和视图的人来说非常简单。 该解决方案不需要代码更改,也不需要知道主题。

答案 5 :(得分:-2)

你可以按摩它与思考工作。你可以这样做:

    <?php 
if(empty($node->field_foo[0]['view'])){ ?>
<?php print $node->field_bar[0]['view'] ?>
<?php } ?>