ฉันกำลังเขียนโมดูลที่กำหนดเองซึ่งฉันเคยทำมาก่อน แต่นี่เป็นครั้งแรกที่ฉันพยายามสร้างประเภทเนื้อหาที่มีฟิลด์ ฉันใช้งาน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',
)
เหตุใดเขตข้อมูลของฉันจึงไม่ปรากฏในประเภทเนื้อหานี้