xandeadx.ru Блог музицирующего веб-девелопера

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 3
Похожие записи

Комментарии RSS

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

Забыл подписаться на новые комменты

Спасибо, не знал про exclude.

PS: Скоро у тебя на сайте можно будет запиливать автоответчик на вопросы :)

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

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

напишите свой field handler

Не понимаю, что за обработчик поля. Давайте, так объясню. Вывожу список новостей через views. К каждой новости из списка нужно прикрепить форму. На форме строка ввода(INPUT) и кнопка. Эту форму без труда вывожу в шапку или в подвал моего views. Вот так:

function news_views_pre_render(&$view){
 
	$form = drupal_get_form('news_form');
	$header = drupal_render($form);
 
	$view->add_item($view->current_display, 'header', 'views', 'area', array(
		'content' => $header, 
		'format' => 'full_html'));
}

Но вот вывести форму у каждой новости не получается.
Экспериментирую с хуками http://xandeadx.ru/blog/drupal/761

По вашему примеру в хуке hook_views_pre_view() вывожу форму + какой-нибудь текст. Текст выводится, а форма нет. Может какую-нибудь настройку не дописал в $view->add_item()?

google -> drupal views field handler

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании