我正在编写一个自定义模块,这是我之前做过的,但这是我第一次尝试使用字段创建内容类型。我实现了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',
)
为什么我的字段没有显示在此内容类型上?