原文链接http://drupal.org/node/1477970
如果您的模块包含了一些可以被视为站点设置的数据结构,您也许需要把它做成可输出的,这样他就可以被储存并且在多站点中应用。添加可输出的设置支持,将使网站管理员能够输出设置,并把它输入到不同的站点。它还能使您模块的数据被features模块, apps模块和drupal distributions所包含。
drupal已经有了API使执行可输出的设置变得很直接。在模块开发的初期就把可输出设置考虑进去是很必要的,因为主要的可输出API包含了管理界面的外部支持。用这些API,您可以省去很多用来建立管理界面的代码。
可输出中的概念:机器名,重写,恢复和克隆
跟可输出设置类似的例子是image style和views。在Drupal7中,您可以用UI建立一个image style并输出它,把它用到其他站点或模块代码中去。与之类似,Views模块也包含了对输出view并在代码和数据库中应用的支持。
可输出的数据必须用机器名或者附加的数字ID来辨别。
基本上,可输出的设置可以包含集几种不同的状态。在命名习俗上有少许不同,但是大体包含:
- Default:设置内容储存在代码里。
- Normal:设置是通过UI建立的,储存在数据库里。
- Overridden:设置储存在代码里,但是通过UI来编辑,所以在数据库里也有一个版本,它将取代默认的版本。
- Export:为条目建立一个节点来表示它。
- Import:基于之前的输出,把条目添加到站点中。
- Override:制定一个基于代码的条目,建立数据库版本的条目。
- Revert:删除数据库中的版本,恢复到原来代码中的版本。
- Clone:基于现有的条目建立一个新的条目。
可输出API
在您的模块中,支持可输出的设置是可行的。Drupal有两个API已经被证明可以辅助这个功能。
- Entity API exportables。如果您的数据是实体类型,您可以用Entity API模块来使您的数据编程可输出的。说明文档在这两个链接: how to make an entity type exportable和making use of the admin UI。执行了Entity API的可输出设置的模块包括 Profile2 模块。
- CTools exportables。 CTools可以被用来提供输出设置的支持,无论您的数据类型是否为实体类型。请参看这个链接:how to make configuration objects exportable with CTools。应用了CTools可输出设置的模块包括了Views模块。
可输出的和特征
features模块自动将可输出设置存储到代码。features模块包含了一系列的钩子,可以用来提供各种的特征支持。但是,如果您的可输出设置是基于entity API或者Ctools的,您的实体将自动被features模块所识别,feature的作者也可以把它添加到feature中去。 请参看Features documentation.
可输出设置的未来
在drupal8中可输出设置将默认保存在代码中。