이전에 수행 한 사용자 지정 모듈을 작성하고 있지만, 필드를 사용하여 콘텐츠 형식을 만들려고 시도한 것은 이번이 처음입니다. hook_node_info를 구현 했으며 admin_menu의 드롭 다운에서 컨텐츠 유형 목록에 컨텐츠 유형이 표시되지만 탐색 할 때 admin/structure/types
나열되지 않습니다.
hook_install을 구현 하고 다른 SO 질문에서 찾은 코드를 가져 왔습니다 . 코드에 오류 로그에 디버그 정보가 인쇄되어 있으며 모든 것이 작동하는 것처럼 보입니다. 그러나 구조 컨텐츠 유형을 탐색하면 추가 한 필드가 표시되지 않습니다.
후크는 다음과 같습니다.
function mymod_node_info() {
return array(
'mymod_content' => array(
'name' => t('My Mod'),
'base' => 'mymod_content',
'description' => t('A Description'),
)
);
}
function mymod_install() {
error_log('mymod_install');
$types = node_type_get_types();
if ( ! field_info_field('field_mymod_myfile') ) {
$field = array(
'field_name' => 'field_mymod_myfile',
'type' => 'file',
);
$created_field = field_create_field($field);
error_log('---- field_create_field -----');
error_log(var_export($created_field, true));
}
$instance = array(
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => TRUE,
);
$created_instance = field_create_instance($instance);
error_log('---- field_create_instance -----');
error_log(var_export($created_instance, true));
}
field_data_field_mymod_myfile
데이터베이스에서 호출 된 테이블을 볼 수 있으므로 첫 번째 부분이 작동 한 것을 알고 있습니다. 그러나 테이블이 비어 있습니다.
오류 로그는 field_create_instance()
메소드가 다음을 리턴 함을 보여줍니다 .
array (
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => true,
'field_id' => '5',
)
내 콘텐츠가이 콘텐츠 유형에 표시되지 않는 이유는 무엇입니까?