Drupal 7:在查看节点时隐藏带有空字段的标签

时间:2011-08-16 07:25:19

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

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

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

4 个答案:

答案 0 :(得分:2)

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

确保sites/all/themes/[mytheme]目录中存在node.tpl.php。在调用其他自定义模板之前,此模板必须存在。

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

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

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

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

清除缓存,只有存储了值时才会显示您的字段。

答案 1 :(得分:1)

默认情况下,空字段的标签是隐藏的,可能在字段中仍然存在“非破坏空间”或其他剩余部分? 您必须检查发生问题的现有节点与未触及特定字段的新节点之间的区别。

设置隐藏在nl / admin / structure / types / manage / selected_content_type / display

中的不需要的标签显示

答案 2 :(得分:0)

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

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

而不是

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

答案 3 :(得分:0)

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

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