Drupal 以编程方式在视图中添加列

Drupal 以编程方式在视图中添加列,drupal,view,Drupal,View,在Drupal7视图中,我创建了一个自定义模块,并使用下面的方法添加了动态列 function my_module_views_pre_view(&$view, &$display_id, &$args) { if ($view->name == 'my_view') { $countries = my_module_vocab_terms('countries'); foreach ($countries as $country){

在Drupal7视图中,我创建了一个自定义模块,并使用下面的方法添加了动态列

function my_module_views_pre_view(&$view, &$display_id, &$args) {
  if ($view->name == 'my_view') {

  $countries = my_module_vocab_terms('countries');
    foreach ($countries as $country){
        $view->add_item($view->current_display, 'field', 'views', 'nothing', array(
        'label' => $country->name,
        'alter' => array('text' => $country->tid), 
        'element_class' => 'my-field',
        'element_default_classes' => 0,
        ), $country->tid);
    }
  }

  }
}
但是文本值在每行中重复出现,如下所示

请建议如何传递每行的值


如果还有人对如何更改这些字段的值感兴趣,请感谢。 您可以通过渲染字段并更改已获取结果的其中一个钩子中的数据来执行此操作,例如钩子视图执行、钩子视图预渲染、钩子视图后渲染,具体取决于您的需要

/**
 * Implements hook_views_post_execute().
 */
function my_module_views_post_execute(view &$view) {
  $view->style_plugin->render_fields($view->result);
  $view_fields = &$view->style_plugin->rendered_fields;

  foreach ($view_fields as &$field) {
    $field['my_field'] = "some value";
  }
  unset($field);
}