Drupal 7 hook_node_view删除视图生成的内容

时间:2014-06-24 11:45:22

标签: drupal-7 views nodes alter

我需要以编程方式删除节点显示上的图像字段。

为实现这一目标,我的模块实现了 hook_node_view ,我可以在 $ node->内容中取消设置数据,这样就无法在节点页面上显示。 但是,由于视图会生成图像,因此不会在 $ node->内容中表示。

任何人都可以建议一个允许我从模块中删除视图生成内容的解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果您使用观看次数来生成节点,我建议您在template_preprocess_views_view(&$vars)中取消设置字段,您可以通过$vars['view']->result访问该字段。一个数组,其中所有行都显示在视图中。然后,您可以在每行中搜索您的字段并取消设置。

图像字段结构的示例:

function template_preprocess_views_view(&$vars) {
  foreach($vars['view']->result as $test){
    $test->field_field_image[0]['rendered']['#access'] = FALSE;
  }
}

我希望它有所帮助。

答案 1 :(得分:0)

感谢@justinelejeune的努力,我找到了一个更简单的解决方案。

实现 hook_node_view ,您可以取消设置目标字段或将字段数组设置为空白I.E:

function mymodule_node_view($node, $view_mode, $langcode){
    if( $view_mode != 'full')
        return;

  unset($node->field_banner); // or     $node->field_banner = array();

}