Вы здесь

Как программно добавить field group

Для модуля калькулятора понадобилось программное добавление field group. Чтобы получить код настроек для создания группы полей необходимо:

  1. Создать в сущности эту группу.
  2. Модифицировать код, приведённый ниже. Сделать настройки в трёх первых полях:
    $fieldgroup_name = ''; // e.g., group_author_info
    $entity_type = '';     // e.g., node
    $bundle_name = '';     // e.g., story
     
    include_once DRUPAL_ROOT . '/includes/utility.inc';
    $group = field_group_load_field_group($fieldgroup_name, $entity_type, $bundle_name, 'form');
    $group_var = '$' . $fieldgroup_name . ' = ' . substr(drupal_var_export($group), 9) . ";\r";
    $group_var = preg_replace("/  'id'.*,\n/", '', $group_var); // remove the ID property
    $group_var = preg_replace("/  'export_type'.*,\n/", '', $group_var); // remove the export_type property
    $output = $group_var . 'field_group_group_save($' . $fieldgroup_name . ');';
    drupal_set_message("<textarea rows=30 style=\"width: 100%;\">" . $output . '</textarea>');

     

  3. Запустить этот код на странице модуля Devel “Execute PHP Code”: /devel/php
  4. После получения кода через UI удалить из страницы ноды сделанные группы.
  5. Полученный код вставить в hook_install():
    /**
     * Implements hook_install().
     */
    function activecollab_install() {
      $group_activecollab_settings = array( 
        'identifier' => 'group_activecollab_settings|user|user|form',
        'group_name' => 'group_activecollab_settings',
        'entity_type' => 'user',
        'bundle' => 'user',
        'mode' => 'form',
        'parent_name' => '',
        'table' => 'field_group',
        'type' => 'Overridden',
        'disabled' => FALSE,
        'export_module' => 'activecollab',
        'label' => 'Active Collab Settings',
        'weight' => '3',
        'children' => array(
          'field_activecollab_apikey',
        ),
        'format_type' => 'fieldset',
        'format_settings' => array(
          'formatter' => 'collapsible',
          'instance_settings' => array(
            'description' => '',
            'classes' => '',
            'required_fields' => 1,
          ),
        ),
      );
      field_group_group_save($group_activecollab_settings);
    }

     

Если группы не добавляются в тип материала, то они могли быть не удалены на 4 шаге. Неактивные группы отображаются снизу страницы.

Источник: 
http://agileadam.com/2014/01/creating-field-groups-in-a-custom-module/
Поделиться:

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