以编程方式创建Drupal 7字段组

时间:2013-02-22 19:43:24

标签: drupal drupal-7 field

我正在尝试自动对我的自定义模块创建的字段进行分组,但它并不是很有用。我的期望是将创建一个字段组,并为其分配现有字段。我正在使用Field Groups模块,因为它看起来非常标准。

正如http://drupal.org/node/1606758所述,我使用了ctools批量导出来生成代码。我已将以下代码移到我的模块中。不知道为什么这不起作用:

  • 我的hook_field_group_info()hook_ctools_plugin_api()都被击中;我添加的调试标志正在记录中。
  • 指定的字段已正确命名,并且确实存在于数据库中。

知道我可能做错了什么吗?非常感谢。

==========来自Ctools Bulk Exporter:===========

将其放在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.module

<?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.field_group.inc

<?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;
}

1 个答案:

答案 0 :(得分:2)

供将来参考 - 此代码(和方法)完美运行。

我的问题是这个模块变得如此之大(4种内容类型,60多个字段,6个词汇表等),它在我的localhost上运行得相当慢。当我在我的临时服务器上运行它时,它运行得非常好。我在本地主机php.ini上增加了最大执行时间,现在也在本地工作正常。

FWIW:我能够使用/ devel / reinstall(来自Devel模块)重新安装模块比通过模块管理页面快一点。不知道为什么这也没有超时,但事实并非如此。

修改 嗯......所以几天后,我不确定问题完全是由于php的执行时间。这起了作用(某些领域从未创建+加上其他问题),但现在正在卸载&amp;重新安装我的模块会在字段组中产生分散的结果。

  • 某些字段组根本没有出现(数据库中的{field_group}表中没有记录)
  • 但是,Bulk Exporter模块会将我的组列为可供导出
  • 添加的字段组不一定将指定的权重应用于其子项
  • 卸载我的模块时,
  • 字段组出现 which follows this methodology