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

Drupal → Группируем поля в вертикальные вкладки (Vertical Tabs)

Опубликовано в

В Drupal 7 появился новый вид группировки полей — Vertical Tabs:

Vertical Tabs

Чтобы воспользоваться такими вкладками в свой форме, нужно:

1. Сгруппировать поля в обычные fieldset-ы:

$form['fieldset1'] = array(
  '#type' => 'fieldset',
  '#title' => 'Fieldset 1',
);
 
$form['fieldset1']['field1'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 1',
);
 
$form['fieldset1']['field2'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 2',
);
 
$form['fieldset2'] = array(
  '#type' => 'fieldset',
  '#title' => 'Fieldset 2',
);
 
$form['fieldset2']['field3'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 3',
);
 
...

2. Добавить к форме новый элемент с типом vertical_tabs:

$form['vertical_tabs'] = array(
  '#type' => 'vertical_tabs',
);

3. Добавить fieldset-ам новый параметр '#group', в котором прописать имя элемента из пункта 2:

$form['fieldset1'] = array(
  ...
  '#group' => 'vertical_tabs',
);
 
$form['fieldset2'] = array(
  ...
  '#group' => 'vertical_tabs',
);

Profit.

Полный листинг:

$form['vertical_tabs'] = array(
  '#type' => 'vertical_tabs',
);
 
$form['fieldset1'] = array(
  '#type' => 'fieldset',
  '#title' => 'Fieldset 1',
  '#group' => 'vertical_tabs',
);
 
$form['fieldset1']['field1'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 1',
);
 
$form['fieldset1']['field2'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 2',
);
 
$form['fieldset2'] = array(
  '#type' => 'fieldset',
  '#title' => 'Fieldset 2',
  '#group' => 'vertical_tabs',
);
 
$form['fieldset2']['field3'] = array(
  '#type' => 'textfield',
  '#title' => 'Field 3',
);
 
...
Написанное актуально для Drupal 7
Похожие записи

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

В закладки!

Кстати, для группировки полей в форме редактирования ноды отлично подходит http://drupal.org/project/field_group. Он позволяет перемещать поля в вертикальные вкладки как самого друпала, так и в свои собственные, а также в горизонтальные вкладки и accordition'ы.

А в 6-м друпале как?
'#group' => 'vertical_tabs', не работает

Все, два часа искал и разобрался

$form['vtabs_demo'] = array(
   '#type' => 'fieldset',
   '#title' => t('demo'),
   '#weight' => 0,
);
 
  $form['vtabs_demo']['field_checkbox'] = array(
    '#type' => 'checkbox',
    '#title' => t('demo'),
  );
 
 $form['#pre_render'][] = 'vertical_tabs_form_pre_render';

Да, только ж главное не забыть модуль Vertical Tabs установить)

Замечательный пост, как всегда. Вопрос в добавлении пояснений, как в модуле block. Есть желание заполнять без js. Есть ли какой-нибудь способ заполнить это поле дескрипшеном?

Блин. Код не высветился. Да и ладно... С чего я взял что мне помогут...

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

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

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