Sto scrivendo un modulo personalizzato, cosa che ho fatto prima, ma questa è la prima volta che ho provato a creare un tipo di contenuto con campi. Ho implementato hook_node_info e il tipo di contenuto viene visualizzato nell'elenco dei tipi di contenuto nel menu a discesa da admin_menu, tuttavia, quando lo sfoglio admin/structure/types
non è elencato.
Ho implementato hook_install e preso un po 'di codice che ho trovato su un'altra domanda SO. Ho il codice che stampa alcune informazioni di debug nel mio registro degli errori e sembra che funzioni tutto, ma quando sfoglio il Tipo di contenuto della struttura non mostra il campo che ho aggiunto.
Ecco i ganci:
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));
}
Riesco a vedere una tabella chiamata field_data_field_mymod_myfile
nel database, quindi so che la prima parte ha funzionato. Tuttavia, la tabella è vuota.
Il registro degli errori mostra il field_create_instance()
metodo restituito:
array (
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => true,
'field_id' => '5',
)
Perché il mio campo non viene visualizzato su questo tipo di contenuto?