【问题标题】:How to conditionally hide a field in a drupal view?如何有条件地隐藏drupal视图中的字段?
【发布时间】:2010-12-05 18:29:03
【问题描述】:

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

【问题讨论】:

  • 为什么您还没有接受其中一个答案?

标签: drupal-6 drupal-views


【解决方案1】:

对于视图 3,drupal 7

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

添加两个字段以按 field1、field2 顺序查看并选中 field1 复选框“从显示中排除”。

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

现在这将为这两个字段生成 if else 功能。

【讨论】:

    【解决方案2】:
    1. 添加要显示的字段。选择“从显示中排除”。
    2. 如果显示前一个字段,则添加要控制的字段。选择“重写输出”。使用令牌替换来显示上一个字段。标记“如果为空则隐藏”
    3. 没有三个。

    PS:引用的选项文本可能不是正确的(我正在查看翻译的网站),但您明白了。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您可以通过以下步骤轻松做到这一点(我已经在 drupal 7 中尝试过):

        1. 添加两个字段
        2. 使第一个不可见(从显示中排除)
        3. 在第二个字段中转到无结果行为选项卡。
        4. 写入第一个字段的标记(例如:[field_name])。

        应该可以,希望对你有用

        【讨论】:

          【解决方案5】:

          我的解决方案是显示英文版 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】:

            你可以把它按摩成与沉思一起工作。你可以这样做:

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

            【讨论】:

            • 使用 contemplate 可能非常危险 - 值得考虑使用 phptemplate 文件 (x.tpl.php) 将主题逻辑与数据库分开
            • 这并不危险,只是很难维护。从事此项目的未来开发人员需要了解这一点,并且大多数开发人员认为在代码中寻找代码,而不是隐藏在视图中。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多