2013-10-24 2 views
3

저는 Drupal을 처음 사용하고 Drupal 7에 이미 설치된 내용 유형에 새 필드를 추가하는 방법을 찾고 있습니다. 콘텐츠가 이미 데이터베이스에 있습니다. 또한 GUI를 통하지 않고 프로그래밍 방식으로이 작업을 수행해야합니다.Drupal 7의 기존 내용 유형에 새 필드 추가

인터넷 검색, 난 이미 것 다음의 서류가 관련이있는 것으로 나타났습니다 :

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

하지만 내 생각은 조금 혼란스러워하고 기본 예제는 것을 명확히한다.

답변

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!"); 
} 

당신이 코드 수많은 방법을 실행할 수 있습니다. 나는 프로젝트의 요구 사항을 알지 못하므로 추천서를 작성하기가 어렵다. 이것을 update/install 함수에 넣거나 모듈의 페이지 훅에 넣을 수도 있고 루트 디렉토리에 다음과 같이 새로운 PHP 파일을 만들 수도 있습니다 :

require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
+0

답해 주셔서 감사합니다 . 이후 일부 콘텐츠가 이미 db에있어 모듈을 제거하거나 비활성화 할 수 없으므로 어떤 함수에서 새 필드를 추가해야합니까? hook_update 함수가 유일한 방법입니까? – Katie

+0

업데이트 된 답변보기 짧은 대답은이 코드를 여러 가지 방식으로 실행할 수 있다는 것입니다. 모듈 설치 프로세스의 일부가 되든, 한 번 실행해야하는지 여부와 상관없이 반복적으로 실행해야하는 코드인지 여부에 달려 있습니다. – KHMKShore

+0

유용한 게시물 인 field_inspector 모듈은 UI에서 필드 정의를 내보내는 데 도움을 줄 수 있습니다. – weaveoftheride

관련 문제