Создание Групп Полей Drupal 7 Программно

Создание Групп Полей Drupal 7 Программно

22.02.2013 11:43:24 Просмотров 56 Источник

Я пытаюсь автоматически группировать поля, созданные моим пользовательским модулем, но это не совсем работает. Я ожидаю, что будет создана группа полей, и существующие поля будут назначены ей. Я использую модуль групп полей, поскольку он кажется довольно стандартным.

Как советуют на http://drupal.org/node/1606758я использовал список литературы массового экспорта для генерации кода. Я переместил следующий код в мой модуль. Не знаю, почему это не работает:

  • Мои hook_field_group_info()и hook_ctools_plugin_api()оба хита; флаги отладки, которые я добавил, регистрируются.
  • Указанные поля называются правильно и существуют в базе данных.

Что я могу делать неправильно?

========== От Ctools Оптовый Экспортер: ===========

Место это в nmc_directory.info

name = nmc_directory export module
description = Export objects from CTools
dependencies[] = field_group
package = Chaos tool suite
core = 7.x

Поместите это в каталог nmc_directory.модуль

<?php

/**
 * Implements hook_ctools_plugin_api().
 */
function nmc_directory_ctools_plugin_api($module, $api) {
  if ($module == 'field_group' && $api == 'field_group') {
    return array('version' => 1);
  }
}

Поместите это в каталог nmc_directory.группа полей.инк

<?php

/**
 * Implements hook_field_group_info().
 */
function nmc_directory_field_group_info() {
  $field_groups = array();

  $field_group = new stdClass();
  $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
  $field_group->api_version = 1;
  $field_group->identifier = 'group_dir_phys_consumer_info|node|dir_physicians|form';
  $field_group->group_name = 'group_dir_phys_consumer_info';
  $field_group->entity_type = 'node';
  $field_group->bundle = 'dir_physicians';
  $field_group->mode = 'form';
  $field_group->parent_name = '';
  $field_group->data = array(
    'label' => 'Online Medical Providers Directory: Website (Consumer Information)',
    'weight' => '0',
    'children' => array(
      0 => 'dir_phys_gender',
      1 => 'dir_phys_category',
      2 => 'dir_phys_title',
      3 => 'dir_phys_fname',
      4 => 'dir_phys_lname',
      5 => 'dir_phys_suffix',
      6 => 'dir_phys_medfield_1',
      7 => 'dir_phys_medfield_2',
      8 => 'dir_phys_phone_public',
    ),
    'format_type' => 'fieldset',
    'format_settings' => array(
      'label' => 'Online Medical Providers Directory: Website (Consumer Information)',
      'instance_settings' => array(
        'required_fields' => 1,
        'classes' => '',
        'description' => '',
      ),
      'formatter' => 'collapsed',
    ),
  );
  $field_groups['group_dir_phys_consumer_info|node|dir_physicians|form'] = $field_group;

  return $field_groups;
}
У вопроса есть решение - Посмотреть?

Ответы - Создание Групп Полей Drupal 7 Программно / Creating Drupal 7 Field Groups Programmatically

Является ответом!
doub1ejack

28.02.2013 11:45:49

Для дальнейшего использования-этот код (и подход) работает отлично.

Моя проблема заключалась в том, что этот модуль становится настолько большим (4 типа контента, 60+ полей, 6 словарей и т. д.), что он работает довольно медленно на моем локальном хосте. Когда я запустил его на своем промежуточном сервере, он работал очень хорошо. Я увеличил максимальное время выполнения на моем локальном хосте php.ini и его работа отлично работает локально сейчас тоже.

FWIW: я смог использовать /devel / reinstall (из модуля Devel), чтобы переустановить модуль немного быстрее, чем через страницу администратора модуля. Не знаю, почему это не тайм-аут тоже, но это не так.

Редактировать: хм.. поэтому несколько дней спустя я не уверен, что проблема была полностью связана с временем выполнения php. Это сыграло свою роль (некоторые поля никогда не создавались + плюс другие проблемы), но теперь удаление и переустановка моего модуля приводит к рассеянным результатам с группами полей.

  • некоторые группы полей вообще не отображаются (в таблице {field_group} в БД нет записи)
  • однако модуль массового экспорта перечисляет мои группы как доступные для экспорта
  • добавляемые группы полей не обязательно применяют указанные веса к своим дочерним элементам
  • группы полей, по-видимому, удаляются при удалении моего модуля ( который следует этой методологии)
Закрыть X