Field Group - перемещение стандартных вкладок


52

Для Друпал есть прекрасный модуль Field Group, который позволяет группировать поля не только при выводе сущностей, но и на форме редактирования. По умолчанию на форме редактирования есть стандартный набор вертикальных вкладок, типа "Настройки публикации" или "Настройки комментариев".
Покажу пример, как можно эти вкладки переместить из стандартных вертикальных в любую группу, созданную через Field Group.

Например, есть тип материала "contract". В нем свойство "promote" мы используем, что бы отмечать разовые договора. Чекбокс"promote" расположен на вкладке "Настройки публикации", и для удобства редактирования, нужно эту вкладку переместить в другое место на форме.

/**
 * Implements hook_form_FORM_ID_alter.
 */
function MYMODULE_form_contract_node_form_alter(&$form, &$form_state, $form_id) {
  $form['#attached']['css'][] = drupal_get_path('module', 'frz_address') . '/css/contract-form.css';

  unset($form['options']['#group']); //Удаляем старую группу
  $form['options']['#type'] = 'container'; //Отключаем fieldset, будет просто div
  $form['#group_children']['options'] = 'group_left'; //Имя нашей группы (Field Group)
  //Меняем заголовок чекбокса (например, мы его используем не по назначению)
  $form['options']['promote']['#title'] = 'Разовый';

Или вот еще пример. Модуль Ubercart добавляет вкладку "Информация о товаре". Хотим ее переместить в другую группу, а также вкладку от модуля Flag

/**
 * Implements hook_form_alter().
 *
 */
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if (uc_product_is_product_form($form)) {
    if (isset($form['base'])) {
      unset($form['base']['#group']);
      unset($form['base']['#attached']);
      $form['base']['#type'] = 'fieldset';
      $form['#group_children']['base'] = 'group_product_lines';
      $form['base']['#collapsible'] = FALSE;
      $form['base']['#collapsed'] = FALSE;
    }
    if(isset($form['flag'])){
      unset($form['flag']['#group']);
      unset($form['flag']['#attached']);
      $form['flag']['#type'] = 'container';
      $form['flag']['#title'] = '';
      $form['#group_children']['flag'] = 'group_sklad';
    }
  }
}

В результате можно получить вот такую удобную админку для редактирования товаров:

Добавить комментарий
Может быть интересно

Порядок действий для установки Solr на сервере с Centos 7

4
Модуль Migrate это фреймворк для миграции (импорта) данных в Drupal из любых источников.
1

Несколько способов как в twig объединить несколько строк в одну

3
Снова возвращаемся к migrate. Довольно удобный фреймворк для импорта данных в Друпал. Один из распространенных форматов источника для импорта - CSV. Поддерживается migrate из коробки. Описание и примеры работы с классом MigrateSourceCSV можно найти на drupal.org.
2
Иногда при разработке сайта появляется необходимость создавать отдельный шаблон для определенной ноды. По умолчанию такой возможности нет, зато можно это прикрутить самостоятельно. Как это сделать? Это можно узнать в данной статье.