以编程方式在VIEWS中添加列

时间:2017-10-09 11:08:55

标签: drupal view

在drupal 7视图中,我创建了一个自定义模块并使用以下方法添加动态列。

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);
    }
  }

  }
}

但是像这样在每一行中重复的文本值。

1

请建议如何为每一行传递值。

由于

1 个答案:

答案 0 :(得分:0)

如果有人仍然对如何更改这些字段的值感兴趣。 您可以通过呈现字段并更改已获取结果的钩子之一中的数据来实现,例如。 hook_views_post_execute、hook_views_pre_render、hook_views_post_render 取决于您的需要。

/**
 * 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);
}