作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
让我们实现另一个钩子,向module文件中添加以下代码:
/**
* Implements hook_field_widget_info().
*/
function transliteration_title_field_widget_info() {
return array(
'transliteration_title_field' => array(
'label' => t('Transliteration title'),
'field types' => array('transliteration_title_field'),
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
),
);
}
这里我们定义了这个字段的输入控件,字段输入控件的名字,和字段的名字这里是一样的,在Drupal7里面,很多字段类型都采用了这种习惯。当然,一个字段可以有多个控件类型,我们这里只有一个而已。此时,当我们再次访问一个内容类型的管理字段页面时,我们就可以添加“Transliteration title”字段了,如图所示:
字段类型“Transliteration title”显示了出来
我们看到,如果我们想要在管理字段页面显示出来我们的新建字段,我们需要实现两个钩子hook_field_info()和hook_field_widget_info()。
我们创建一个测试节点类型,比如“test type”,然后向该内容类型添加一个名为“Test”的“Transliteration title”字段,此时一切都能正常工作。但是,当我们配置这个字段,没有我们想要的配置字段,当我们想为这个字段输入内容时,我们发现在节点的输入表单中找不到这个字段。当我们检查这个字段创建的数据库表时,我们发现它并没有包含用来保存用户输入的列,如图所示:
字段对应表field_data_field_test的结构