使用 Drupal API 添加内容类型
由 lugir 于 星期三, 10/19/2011 - 14:22 发布
使用 Drupal API 函数 node_type_save($info) 可以为 Drupal 添加新的内容类型,使用这个API创建内容类型的主要工作,是构造一个包含内容类型所需要的信息的 $info 对象。
$info 对象中用到的成员有 type, name, module, has_title, title_label, has_body, body_label, description, help, min_word_count, custom, modified, locked, orig_type 等,以下是有关各个成员的说明:
- type - 内容类型的机器名,此字串应该只包含小写字符、数字和下划线,如"story", "page"等等
- name - 内容类型的用户可读名称,如“新闻”,“页面”等
- module - 创建此内容类型的模块,使用规范的模块名称,如"node",(使用其它的名称结果不显示,必须是 node ???)
- has_title - 是否有标题,FALSE 为无,TRUE为有
- title_label - 标题标签,如“标题”
- has_body - 是否有正文,FALSE 为无,TRUE为有
- body_label - 正文标签,如“正文”
- description - 内容类型描述
- help - 帮助信息,会显示在创建内容类型的表单页面,
- min_word_count - 正文最少字符数
- custom - ?
- modified - ?
- locked - ?
- orig_type -?
新建内容类型的代码片段
<?php
function foo_node_type() {
// 定义数组
$info = array(
'type' => 'foo',
'name' => t('foo'),
'module' => 'node',
'description' => t('Blah Blah Blah...'),
'help' => '',
'min_word_count' => 0,
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE
);
// 为 $info 数组中未定义的配置设置默认值
$info = (object) _node_type_set_defaults($info);
// 将新的内容类型写入数据库
node_type_save($info);
// 更新菜单.
menu_rebuild();
}
?>
与创建内容类型相对应,如果在卸载模块时希望删除创建的内容类型,可以使用 node_type_delete($type)
<?php
function foo_node_type_delete() {
// 删除机器名为 'foo' 的内容类型
node_type_delete('foo');
}
?>