이 스 니펫을 시작해야합니다. 그것은 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!");
}
당신이 코드 수많은 방법을 실행할 수 있습니다. 나는 프로젝트의 요구 사항을 알지 못하므로 추천서를 작성하기가 어렵다. 이것을 update/install 함수에 넣거나 모듈의 페이지 훅에 넣을 수도 있고 루트 디렉토리에 다음과 같이 새로운 PHP 파일을 만들 수도 있습니다 :
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
답해 주셔서 감사합니다 . 이후 일부 콘텐츠가 이미 db에있어 모듈을 제거하거나 비활성화 할 수 없으므로 어떤 함수에서 새 필드를 추가해야합니까? hook_update 함수가 유일한 방법입니까? – Katie
업데이트 된 답변보기 짧은 대답은이 코드를 여러 가지 방식으로 실행할 수 있다는 것입니다. 모듈 설치 프로세스의 일부가 되든, 한 번 실행해야하는지 여부와 상관없이 반복적으로 실행해야하는 코드인지 여부에 달려 있습니다. – KHMKShore
유용한 게시물 인 field_inspector 모듈은 UI에서 필드 정의를 내보내는 데 도움을 줄 수 있습니다. – weaveoftheride