Drupal → Программно добавить поле в представление при его выводе (в рантайме)
Программное добавление полей в представление 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-поля?
http://xandeadx.ru/blog/drupal/472
А как заполнить теперь это поле значениями? Допусти в том же pre_render...
Здравствуйте. Спасибо за пример, пригодился. Возник вопрос. Как вместо текста "My custom field text" добавить отрендериную форму? "My custom field text" заменяю на переменную с отрендереной формой. С помощью print_r(); просматриваю массив, вижу, что форма в нем есть. Но на сайте теги формы INPUT, AREA фильтруются и не отображаются. Пробовал 'format' => 'full_html' указывать, без толку. Может с другим хуком пробовать или тут есть какая-то хитрость? Спасибо!
напишите свой field handler
Почему то с форматом JSON data document не сработало.
Не появляется в выводе, хотя хук отрабатывает.
Оставить комментарий