0

Drupal では、添付ファイル フィールドを垂直タブに配置したいと考えています。私はいくつかの進歩を遂げました。次のコードがあります。

$field_group = new stdClass();
$field_group->disabled = FALSE; 
$field_group->api_version = 1;
$field_group->identifier = 'group_test|node|foo|form';
$field_group->group_name = 'group_test';
$field_group->entity_type = 'node';
$field_group->bundle = 'foo';
$field_group->mode = 'form';
$field_group->parent_name = '';
$field_group->data = array(
    'label' => 'Test group',
    'weight' => '43',
    'children' => array(),
    'format_type' => 'tab',
    'format_settings' => array(
        'formatter' => 'closed',
        'instance_settings' => array(
            'description' => '',
            'classes' => 'group-test field-group-tab',
            'required_fields' => 1,
        ),
    ),
);

field_group_group_save($field_group);

これにより、Drupal にフィールド グループが追加されます。唯一の問題は、データ値 (設定を含む配列) がインポートされないことです。したがって、データのないフィールド グループがあります。

ご存じのとおり、「ctools bulk exporter」を使用してこのコードの一部を取得しました。

設定もインポートされるようにコードを編集する方法についてのアイデアはありますか?

4

1 に答える 1

2

D7 では、$field_group オブジェクトに「データ」メンバーがありません。「データ」メンバーの下の各要素は、field_group の直下にある必要があります。少し異なる形式で (タイピングを節約するために)、次のようにします。

$group = (object) array(
  'identifier' => 'group_userprofile_vendor2|user|user|form',
  'group_name' => 'group_userprofile_vendor2',
  'entity_type' => 'user',
  'bundle' => 'user',
  'mode' => 'form',
  'label' => 'Vendor Info',
  'children' => array(),
  'weight' => '300',
  'format_type' => 'tab',
  'format_settings' => array(
    'formatter' => 'closed',
    'instance_settings' => array(
      'description' => '',
      'classes' => '',
      'required_fields' => 1,
    ),
  ),
);
field_group_group_save($group);

また、ここに記載されているように、一度グループを追加したことがある場合は、再度追加しようとするとエラーがスローされます。上記のコードを実際にテストしてから、UI を介してグループを削除しましたが、もう一度試してもエラーがスローされます。最後に group_name (上記の名前の後の「2」) を変更して、再度実行する必要がありました。したがって、デバッグ中にそれを見たいと思うかもしれません。

于 2014-04-03T22:08:16.850 に答える