Drupal 7 在Drupal 7 page.tpl.php中只呈现单个页面字段一次

Drupal 7 在Drupal 7 page.tpl.php中只呈现单个页面字段一次,drupal-7,Drupal 7,所以我想我可以像这样呈现$page['content']数组的特定元素 <?php print render(field_view_field('node', $node, 'field_image')); ?> 在开箱即用的情况下,这将使用标准默认值按预期渲染元素。好的,那么我怎样才能确保手工拾取的元素不再在以后的调用中呈现呢 为什么我想要这样愚蠢的东西?因为每个页面都有一个标题图像,其中包含一些css技巧,用于覆盖、设计等。但不是每个页面都有附件、链接等等。。。你知道,这些

所以我想我可以像这样呈现
$page['content']
数组的特定元素

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

在开箱即用的情况下,这将使用标准默认值按预期渲染元素。好的,那么我怎样才能确保手工拾取的元素不再在以后的
调用中呈现呢

为什么我想要这样愚蠢的东西?因为每个页面都有一个标题图像,其中包含一些css技巧,用于覆盖、设计等。但不是每个页面都有附件、链接等等。。。你知道,这些都是页面中的附加字段。因此,我无法手动打印每个字段,因为我不知道有多少字段或其他字段。我所能确定的是,我在上面打印的field_图像被包装在大量的样式标记中,必须这样做。其他一些领域也是如此

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


有人知道如何做到这一点吗?我不希望为特定页面创建视图或自定义块。我最终不得不将这一点交给一位客户,他将无法在CMS的多个地方管理一个页面。

看起来这将起作用:

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

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

事实上,您可以控制Drupal中内容类型的各个字段的显示,而不必使用您使用的函数

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

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

这将防止字段内容显示在通常的节点内容中,但字段\视图\字段自然仍会工作

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

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