4

我是 Drupal 的新手,我正在寻找一种将新字段添加到 Drupal 7 中已安装的内容类型的方法。请注意,数据库中已经存在一些内容。此外,我需要以编程方式而不是通过 GUI 来执行此操作。

谷歌搜索,我已经找到了以下文件,似乎是相关的:

https://api.drupal.org/api/drupal/modules!field!field.module/group/field/7

https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_update_N/7

尽管如此,我的想法还是有点混乱,一个基本的例子可以澄清事情。

4

1 回答 1

6

这个片段应该让你开始。它是在 Drupal Stackexchange 上找到的。我建议你以后先检查那里。

https://drupal.stackexchange.com/questions/8284/programmatically-create-fields-in-drupal-7

$myField_name = "my_new_field_name";
if(!field_info_field($myField_name)) // check if the field already exists.
{
    $field = array(
        'field_name'    => $myField_name,
        'type'          => 'image',
    );
    field_create_field($field);

    $field_instance = array(
        'field_name'    => $myField_name,
        'entity_type'   => 'node',
        'bundle'        => 'CONTENT_TYPE_NAME',
        'label'         => t('Select an image'),
        'description'   => t(''),
        'widget'        => array(
            'type'      => 'image_image',
            'weight'    => 10,
        ),
        'formatter'     => array(
            'label'     => t('label'),
            'format'    => 'image'
        ),
        'settings'      => array(
            'file_directory'        => 'photos', // save inside "public://photos"
            'max_filesize'          => '4M',
            'preview_image_style'   => 'thumbnail',
            'title_field'           => TRUE,
            'alt_field'             => FALSE,
        )
    );
    field_create_instance($field_instance);
    drupal_set_message("Field created successfully!");
}

您可以通过无数种方式执行此代码。我不了解您项目的要求,因此我很难提出建议。您可以将其挂接到更新/安装函数中,或者您可以将其构建到模块中的页面挂钩中,或者您可以使用以下命令引导根目录中的任何新 php 文件:

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
于 2013-10-24T21:42:46.717 回答