Drupal → Программно добавить поле в представление при его выводе (в рантайме)

10.05.2013

Программное добавление полей в представление articles с дисплеем page:

/**
 * Implements hook_views_pre_view().
 */
function MODULENAME_views_pre_view(&$view) {
  if ($view->name == 'articles' && $view->current_display == 'page') {
    // Добавление заголовка материала
    $view->add_item($view->current_display, 'field', 'node', 'title', array(
      'label' => 'Title',
    ), 'node_title');

    // Добавление поля типа Custom text
    $view->add_item($view->current_display, 'field', 'views', 'nothing', array(
      'label' => 'My custom field',
      'alter' => array('text' => 'My custom field text'),
      'element_class' => 'my-custom-field',
      'element_default_classes' => 0,
    ), 'my_custom_field');
  }
}
Написанное актуально для
Views 3
Похожие записи

Комментарии

dansamara
10.05.2013, 11:22

А как апишно удалить или скрыть views-поля?

Константин
23.07.2013, 11:39

А как заполнить теперь это поле значениями? Допусти в том же pre_render...

Константин К.
02.11.2015, 22:21

Здравствуйте. Спасибо за пример, пригодился. Возник вопрос. Как вместо текста "My custom field text" добавить отрендериную форму? "My custom field text" заменяю на переменную с отрендереной формой. С помощью print_r(); просматриваю массив, вижу, что форма в нем есть. Но на сайте теги формы INPUT, AREA фильтруются и не отображаются. Пробовал 'format' => 'full_html' указывать, без толку. Может с другим хуком пробовать или тут есть какая-то хитрость? Спасибо!

Почему то с форматом JSON data document не сработало.
Не появляется в выводе, хотя хук отрабатывает.

Добавить комментарий