Estou escrevendo um módulo personalizado, o que já fiz antes, mas é a primeira vez que tentei criar um tipo de conteúdo com campos. Eu implementei hook_node_info e o Tipo de conteúdo está aparecendo na lista de Tipos de conteúdo no menu suspenso do admin_menu, no entanto, quando eu o navego, admin/structure/types
ele não está listado.
Eu implementei o hook_install e peguei algum código que encontrei em outra questão SO. Eu tenho o código para imprimir algumas informações de depuração no meu log de erros e parece que tudo funciona, mas quando eu navego para o Tipo de conteúdo da estrutura, ele não mostra o campo que eu adicionei.
Aqui estão os ganchos:
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));
}
Eu posso ver uma tabela chamada field_data_field_mymod_myfile
no banco de dados, então eu sei que a primeira parte funcionou. No entanto, a tabela está vazia.
O log de erros mostra que o field_create_instance()
método retornou isso:
array (
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => true,
'field_id' => '5',
)
Por que meu campo não aparece nesse tipo de conteúdo?