Как изменить дефолтный таб в Field group

Как программно изменить выбранный таб в Field group

Модуль Field group[1] позволяет группировать филды в табы, филдсеты, аккордеоны и т.д. В данной заметке рассмотрим как программно изменить выбор дефолтного таба (на примере вертикальных табов). По умолчанию, дефолтный таб в группе тот, который расположен первым в списке на странице управления полей.
Распространенное решение - установка якоря (id нужного филдсета) в урле страницы с помощью js, пример урла http://домен_сайта/адрес_текущей_страницы#[идентификатор_нужного_филдсета]. Решение рабочее, но не самое изящное. Потратив изрядное количество времени был обнаружен простой выход из данной ситуации.
Для демонстрации было создано три группы со своим набором полей.
первый выбранный таб по умолчанию
Например, необходимо сделать дефолтным табом второй. Для этого реализуем хук hook_field_group_build_pre_render_alter().
В файле MYMODULE.module

1
2
3
4
5
6
/**
 * Implements hook_field_group_build_pre_render_alter().
 */
function MYMODULE_field_group_build_pre_render_alter(&$element) {
  $element['additional_settings']['additional_settings__active_tab']['#value'] = 'identifier-of-fieldset';
}

Для группы филдсетов (у меня это additional_settings), для активного таба (additional_settings__active_tab) нужно установить #value равное идентификатору требуемого филдсета (в моем случае это edit-group_tab_2).
Результат приведен на изображении ниже.
второй выбранный таб по умолчанию

Дополнительная информация по статье

  1. https://www.drupal.org/project/field_group - страница проекта Field group.