我有两个要渲染的字段,但我只想在第一个字段为空时显示第二个字段。如果没有覆盖模板文件中的字段,我可以使用内置视图功能中的功能吗?
答案 0 :(得分:15)
对于观点3,drupal 7
添加两个字段以在field1,field2中查看,并选择field1复选框“从显示中排除”。
转到field2并配置“显示无结果行为”。添加field1替换模式,例如[field1]并选择“将数字0计为空”,“如果为空则隐藏”和“如果为空则隐藏重写”。
现在这将产生这两个字段的if else功能。
答案 1 :(得分:3)
PS:引用的选项文本可能不正确(我正在查看翻译的网站),但你明白了。
答案 2 :(得分:1)
我通常会使用views_customfield模块来做这种事情。在视图中添加第三个字段,即php customfield,并从显示中排除第二个字段。然后,您可以在自定义字段中编写一个非常快速的PHP代码段,以检查第一个字段是否为空,如果是,则打印出第二个字段。
答案 3 :(得分:1)
您可以通过以下步骤轻松完成此操作(我已在drupal 7中尝试过):
它应该有效,我希望它能与你合作
答案 4 :(得分:0)
我的解决方案是显示field_1的英文版本和field_2的翻译版本:
使用面板:
通过向视图添加另一个显示来制作视图的两个副本。
在原始视图显示中,您从显示field_2
中删除或排除,在第二个显示中删除field_1
。
在面板中,您将两个视图显示添加为面板窗格。
对于第一个视图显示窗格,添加Visibility rule -> User:language -> English
。
对于第二个视图显示窗格,添加Visibility rule -> User:language -> Your_second_language
。
它看起来很复杂,但对熟悉面板和视图的人来说非常简单。 该解决方案不需要代码更改,也不需要知道主题。
答案 5 :(得分:-2)
你可以按摩它与思考工作。你可以这样做:
<?php
if(empty($node->field_foo[0]['view'])){ ?>
<?php print $node->field_bar[0]['view'] ?>
<?php } ?>