1

所以我收集我可以像这样渲染数组的特定元素$page['content']......

<?php print render(field_view_field('node', $node, 'field_image')); ?>

在开箱即用的地方,这将使用标准默认值按预期呈现元素。好的,那么我怎样才能确保<?php print render($page['content']) ?>稍后在调用中不再呈现手动拔取的元素?

为什么我想要这样愚蠢的东西?因为每个页面都会有一个标题图像,其中包含一些用于覆盖、设计等的 css 技巧。但不是每个页面都会有附件、链接等等……你知道,页面中的附加字段。所以我不能手动打印出每个字段,因为我不知道有多少或还有什么。我所知道的是,我在上面打印的 field_image 包含大量用于样式的标记,并且必须以这种方式完成。其他几个领域也是如此。

基本上我正在寻找一种在使用后立即取消设置字段的方法。

有谁知道如何实现这一目标?我宁愿不制作显示特定页面的视图或自定义块。我最终不得不把它交给一个客户,他们无法将他们的头脑围绕在 CMS 中的许多地方进行管理的单个页面上。

4

2 回答 2

3

实际上,您可以控制 Drupal 中内容类型的各个字段的显示,而无需求助于您使用过的功能。

由于您事先知道要禁止显示哪些字段,因此可以在内容类型设置中关闭其显示。

在 Drupal 7 中,请参阅:
管理 >> 结构 >> 内容类型 >>您的内容类型>> 管理显示
在“格式”下,为要省略的字段选择 <隐藏>。

这将阻止字段内容显示在通常的节点内容中,但 field_view_field 自然仍然有效。

您还可以根据不同的视图模式微调字段格式,例如选择在预告片中显示字段但不显示完整内容。

于 2013-04-01T05:54:48.117 回答
0

看起来这会起作用:

<?php
print render(field_view_field('node', $node, 'field_image'));
MYTHEME_remove_item($page['content'], 'field_image');
?>

在 template.php 文件中我做了这个函数:

function MYTHEME_remove_item(&$content, $field)
{
    foreach($content['system_main']['nodes'] AS $key => $val){
        unset($content['system_main']['nodes'][$key][$field]);
    }
}

在我看来,这很荒谬。我认为像drupal这样健壮的系统会有这样的解决方案。如果有人知道这样做的正确方法,我很乐意将它们标记为正确。与此同时,对于其他面临类似情况的人来说,这对我有用。

于 2012-10-16T20:41:59.713 回答