Posted by oskar_calvo on August 28, 2011 at 5:17pm
Estoy estudiando las nuevas apis de Drupal, y estoy intentando montar un nuevo field para poder usarlo en los diferentes tipos de contenido o entidades.
El caso es que me he leido, mirado,etc... varios manuales, tutoriales y trabajo con el libro de drupal 7 module development, pero el caso es que a pesar de picar el código no consigo que me aparezca el field en las opciones de campos de los nodos.
mi código
install
<?php
/**
* Implements hook_schema()
*/
function fieldarmy_schema() {
$schema = array();
$schema['fieldarmy'] = array(
'description' => 'This table say what army/role has choose one player.',
'fields' => array(
'fid' => array(
'description' => 'fid is the key.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'uid' => array(
'description' => 'user id.',
'type' => 'int',
'not null' => TRUE,
),
'rid' => array(
'description' => 'role id.',
'type' => 'int',
'not null' => TRUE,
),
),
'primary key' => array('fid'),
);
return $schema;
}
?>el archivo .module
<?php
/**
* Implementation hook field info
*/
function fieldarmy_field_info(){
return array (
'fieldarmy' => array(
'label' => t('field army'),
'description' => t('This field let you to choose an army\'s player and
a role with the same name-string'),
'default_widget' => 'armyfield_options',
'default_formatter' => 'armyfield_default',
),
);
}
/**
* Implentation widget info
*/
function fieldarmy_field_widget_info(){
return array(
'fieldarmy_listado' => array(
'label' => t('choose the army'),
'field types' => array('fieldarmy'),
'behaviors' => array(
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
'default value' => FIELD_BEHAVIOR_DEFAULT,
),
),
);
}
/**
* Implementation widget form
*/
function fieldarmy_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element){
$element = array();
if($instance['widget']['type']= 'fieldarmy_listado'){
$elemen['roles'] = array(
'#type' => 'select',
'#title' => t('Choose your army'),
'#option' => array ('uno','dos','tres'),
'#default_value' => NULL,
);
}
return $element;
}
?>el .info
name = Field army
description = "This field help to choose armys player and it's armys' role'"
core = 7.x
files[] = fieldarmy.module
files[] = fieldarmy.install
package = GCMSEl módulo lo activo y desactivo desde configuración de módulos sin problemas.
Gracias
Oskar

Comments
A ojo veo que tienes que
A ojo veo que tienes que implementar hook_field_schema() en vez de hook_schema(). También te faltan otros cuantos hooks que no sé si son imprescindibles para que el módulo empiece a hacer algo.
@jonhattan. Muchas gracias,
@jonhattan.
Muchas gracias, lo voy a mirar creo que me estaba montando bien las tablas.
Los hooks que me faltan, sino me equivoco son los formatters para definir como se pinta la información guardada.
Gracias
Oskar