提供我们节点类型的相关信息

老葛的Drupal培训班 Think in Drupal

现在你该向joke.module中添加钩子函数了。你想要实现的第一个钩子函数是hook_node_info().当Drupal发现有那些节点类型可用时,调用这个钩子函数。你将为你的自定义节点提供一些元数据。
/**
 * Implementation of hook_node_info().
 */
function joke_node_info() {
// We return an array since a module can define multiple node types.
// We're only defining one node type, type 'joke'.
return array(
'joke' => array(
'name' => t('Joke'), // Required.
'module' => 'joke', // Required.
'description' => t('Tell us your favorite joke!'), // Required.
'has_title' => TRUE,
'title_label' => t('Title'),
'has_body' => TRUE,
'body_label' => t('Joke'),
'min_word_count' => 2,
'locked' => TRUE
)
);
}
 
    由于在单个模块中可以定义多个节点类型,所以返回值应该是一个数组。下面是钩子hook_node_info()中可以提供的元数据的总结:
 
• name (必须的):显示在站点上的节点名称。例如,如果它的值为’Joke’,那么Drupal将使用该值,作为本节点提交表单的标题。
 
• module (必须的):Drupal要查找的回调函数的前缀名。我们这里使用了’joke’,所以Drupal将寻找以’joke’为前缀的回调函数,比如 joke_validate(), joke_insert(), joke_delete()等等。
 
• description:一般用于添加一个简短描述,以用来说明此内容类型可以干什么。该文本将会显示在“创建内容”页面的列表中(http://example.com/?q=node/add)。
 
• has_title:布尔值,用以说明此内容类型是否使用标题字段。默认为TRUE。
 
• title_label:在节点编辑表单中标题字段对应的文本标签。只有当has_title为TRUE时它才可见。默认为Title。
 
• has_body: 布尔值,用以说明此内容类型是否使用主体字段。默认为TRUE。
 
• body_label: 表单中body字段对应的文本标签。只有当has_body为TRUE时它才可见。默认为Body。
 
• min_word_count: body字段想要通过验证所需的最小单词个数。默认为0.(在我们的模块中,我们将其设置为2,以阻止一字笑话。)
 
• locked:布尔值,用以指示此内容类型的内部名称是否被锁定了;如果锁定了,那么站点管理员将不能修改它了;否则,管理员可以在“管理➤内容管理➤内容类型”中该内容类型的相应选项。默认为TRUE,这意味着名字被锁定,因此不可编辑。
 
注意: 在前面列表中提到的内部名称字段,是用来构造“创建内容”页面链接URL的。例如,我们使用“joke”作为我们节点类型的内部名称(它是我们返回的数组的键),如果要创建一个新的笑话的话,那么用户要访问页面http://example.com/?q=node/add/joke。通常你不需要通过将locked设置为FALSE,来对此作出修改。内部名称存储在表nodenode_revisions的“type”列中。
 

Drupal版本: