You are here

1 自定义一个字段类型

admin 的头像
Submitted by admin on 星期一, 2015-06-29 09:45

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    我们在本章,我们将通过创建一个自定义的字段类型,来学习Field API相关的各种知识。我们先来介绍一下这个模块的背景知识:

 

    我以前在给客户做网上书店的时候,就遇到过这样的需求,图书内容类型下面包含一个“拼音名称”字段,用来输入图书名称的拼音,那个时候我们采用了这样的解决办法,使用专门的软件,将书名转换为拼音,这方面有很多现有的工具可用,然后将这一信息导入到Drupal系统中来。那个时候我就在想,如果能够开发一个第三方模块,自动地生成拼音字段,就可以省去很多的麻烦。后来又遇到了这样的一个需求,对节点标题按照拼音的abcdz进行检索,此时如果我们自带了一个拼音字段,那么实现起来就会方便很多。这就是我们这个模块的实际的背景。

 

   实现所用的技术,我决定在Drupal7下面实现,然后采用定制一个字段类型的形式,实现节点标题的拼音字段。中文转拼音,的确有很多现成的PHP程序,但是大多数都不是开源的,我突然想到Transliteration模块,也可以完成中文转拼音这一工作。同时对这个模块又做了抽象,除了我们中文有这样的需求以外,日文、俄文等等,其它文字是否也有这样的需求。这就是我为什么选用Transliteration模块作为转换程序的原因,因为它用途更广,更国际化。

 

   我们需要创建一个字段,这个字段有一个对应的源字段,该字段的值,由源字段的值使用Transliteration模块转换而成,我们不需要负责它的输入。此时我所想到的就是,使用一个textfield就可以搞定这个字段。如果这样的话,其实使用现有的模块也可以解决问题,比如Computed Field模块,只需要把我们的转换代码放在对应的配置中,我想就可以解决问题了,当然我们此时仍然可以开发一个模块。后来我想到了另一个问题,那就是Transliteration模块的转换并不是100%准确的,我不知道其它语言的转换,但是对于中文来说,确实存在这样的问题。因此,这又多出来了一个需求,那就是允许用户手动地调整这个字段。

 


Drupal版本: