【发布时间】:2011-08-16 07:25:18
【问题描述】:
查看特定内容类型的实际节点时,如何隐藏具有空字段的标签?
非常感谢任何人的帮助,感谢您的宝贵时间。
【问题讨论】:
标签: drupal drupal-7 drupal-modules drupal-theming
查看特定内容类型的实际节点时,如何隐藏具有空字段的标签?
非常感谢任何人的帮助,感谢您的宝贵时间。
【问题讨论】:
标签: drupal drupal-7 drupal-modules drupal-theming
实现此目的的另一种方法是使用适用于该内容类型的所有节点的自定义模板文件。
首先确保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']);
}
清空缓存,你的字段只有在有值存储时才会出现。
【讨论】:
默认情况下,空字段的标签是隐藏的,也许字段中仍然存在“非中断空间”或其他一些剩余部分? 您必须检查出现问题的现有节点与您未触及特定字段的新节点之间的差异。
将不需要的标签设置为隐藏在 nl/admin/structure/types/manage/selected_content_type/display 中
【讨论】:
我想更正第一个答案。在 node.tpl.php 中,我们应该检查 #markup 而不是字段数组:
if (empty($content['field_vac_req'][0]['#markup'])) {
unset($content['field_vac_req']);
}
而不是
if (empty($content['my_field'])) ...
【讨论】:
如果内容类型有很多循环的字段,这对我有用:
foreach($content AS $key => $values) {
if (!empty($content[$key][0]['#markup'])) {
print render($content[$key]);
}
}
【讨论】: