你现在的位置:首页 > PHP网站建设知识库 > Drupal > 正文

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