【问题标题】:Drupal 7: Hiding labels with empty fields when viewing a nodeDrupal 7:查看节点时隐藏带有空字段的标签
【发布时间】:2011-08-16 07:25:18
【问题描述】:

查看特定内容类型的实际节点时,如何隐藏具有空字段的标签?

非常感谢任何人的帮助,感谢您的宝贵时间。

【问题讨论】:

    标签: drupal drupal-7 drupal-modules drupal-theming


    【解决方案1】:

    实现此目的的另一种方法是使用适用于该内容类型的所有节点的自定义模板文件。

    首先确保node.tpl.php 存在于您的sites/all/themes/[mytheme] 目录中。此模板必须存在,才能调用其他自定义模板。

    复制您的 node.tpl.php 并将其命名为 node--[contenttype].tpl.php(不带括号)。

    如果您启用了Devel 模块,您可以将dpm($content); 放入文件中以找出您要隐藏的字段的名称。或者您可以查看内容类型本身。

    获得字段名称后,您现在可以在 print render($content); 语句之前插入此代码:

    if (empty($content['my_field'])) {
      unset($content['my_field']);
    }
    

    清空缓存,你的字段只有在有值存储时才会出现。

    【讨论】:

      【解决方案2】:

      默认情况下,空字段的标签是隐藏的,也许字段中仍然存在“非中断空间”或其他一些剩余部分? 您必须检查出现问题的现有节点与您未触及特定字段的新节点之间的差异。

      将不需要的标签设置为隐藏在 nl/admin/structure/types/manage/selected_content_type/display 中

      【讨论】:

      • 我正在查看当字段值为空字符串时出现的标签。显然这应该算作空的,但由于某种原因它不是。
      • 你能用萤火虫检查元素是否真的是空的吗?有时,所见即所得会添加一个空段落作为文本,因此该字段并不是真正的空。
      • 该值绝对是一个空字符串。我已经使用 firebug 以及节点和数据库上的 devel 选项卡直接进行了检查。
      【解决方案3】:

      我想更正第一个答案。在 node.tpl.php 中,我们应该检查 #markup 而不是字段数组:

      if (empty($content['field_vac_req'][0]['#markup'])) {
        unset($content['field_vac_req']);
      }
      

      而不是

      if (empty($content['my_field'])) ...
      

      【讨论】:

        【解决方案4】:

        如果内容类型有很多循环的字段,这对我有用:

            foreach($content AS $key => $values) {
               if (!empty($content[$key][0]['#markup'])) {
                  print render($content[$key]);
                  }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多