使用 Drupal API 添加内容类型

  使用 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');
}
?>