定义和修改内容类型的函数。                                

每个内容类型都由一个主要模块维护,该模块可以是 node.module (用于在用户界面中创建的内容类型),也可以是实现hook_node_info () 以定义内容类型的模块。                                

在节点操作(创建、更新、查看、删除等)期间,会调用几组挂钩以允许模块修改基本节点操作:                                

  • Node-type-specific hooks : 当定义一个节点类型时,hook_node_info () 返回一个'base'组件。特定于节点类型的挂钩被命名为 base_hookname() 而不是 mymodule_hookname() (例如在名为“mymodule”的模块中)。仅调用节点类型的相应实现。例如,poll.module中的poll_node_info ()将“poll”节点类型的基础定义为“poll”。所以当一个poll节点被创建时, hook_insert ()只会在poll_insert ()上被调用特定于节点类型的挂钩如下所示。

  • 所有模块挂钩:这组挂钩在所有实现模块上调用,以允许其他模块修改主节点模块正在做的事情。例如,创建轮询节点时会在所有模块上调用hook_node_insert ()。

  • 字段挂钩:与附加到节点的字段相关的挂钩。这些是从下面描述的字段操作函数调用的,并且可以是特定于字段类型或所有模块的挂钩。

  • 实体挂钩:“实体”操作的通用挂钩。这些总是在所有模块上调用。

以下是调用的节点和实体挂钩、字段操作以及节点操作期间发生的其他步骤的列表:                                

文件                                


                               

  • modules/ 

    node/                                         

    node.api.php,第 8 行                                        

  • Node 模块提供的钩子。


                               

功能                                

姓名降序排列                                                    地点                                                    描述                                                    
挂钩删除 hook_delete                                                   模块/                                                        节点                                                        /node.api.php                                                    响应节点删除。                                                    
挂钩形式 hook_form                                                    模块/                                                        节点                                                        /node.api.php                                                    显示节点编辑表单。                                                    
钩子插入 hook_insert                                                    模块/                                                        节点                                                        /node.api.php                                                    响应新节点的创建。   我用它                                                  
挂钩负载 hook_load                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于从数据库加载的节点。                                                    
hook_node_delete                                                    模块/                                                        节点                                                        /node.api.php                                                    响应节点删除。             我用它                                        
钩子节点信息 hook_node_info                                                    模块/                                                        节点                                                        /node.api.php                                                    定义模块提供的节点类型。                                                    
挂钩节点插入 hook_node_insert                                                    模块/                                                        节点                                                        /node.api.php                                                    响应新节点的创建。                                                    
hook_node_load                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于从数据库加载的任意节点。                                                    
钩子节点准备 hook_node_prepare                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于将要显示在添加/编辑表单上的节点对象。                                                    
hook_node_presave                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于正在插入或更新的节点。 我用它                                                     
hook_node_revision_delete                                                    模块/                                                        节点                                                        /node.api.php                                                    响应节点修订的删除。                                                    
hook_node_search_result                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于显示为搜索结果的节点。                                                    
hook_node_submit                                                    模块/                                                        节点                                                        /node.api.php                                                    在将经过验证的表单值复制到节点后,对节点进行操作。                                                    
hook_node_update                                                    模块/                                                        节点                                                        /node.api.php                                                    响应节点的更新。我用它                                                     
hook_node_update_index                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于被索引以进行搜索的节点。                                                    
hook_node_validate                                                    模块/                                                        节点                                                        /node.api.php                                                    在创建或更新节点之前执行节点验证。                                                    
钩子节点视图 hook_node_view                                                    模块/                                                        节点                                                        /node.api.php                                                    在渲染之前作用于正在组装的节点。                                                    
hook_node_view_alter                                                    模块/                                                        节点                                                        /node.api.php                                                    改变node_view () 的结果                                                    
挂钩准备 hook_prepare                                                    模块/                                                        节点                                                        /node.api.php                                                    作用于将要显示在添加/编辑表单上的节点对象。                                                    
hook_ranking                                                    模块/                                                        节点                                                        /node.api.php                                                    为节点的核心搜索结果提供额外的评分方法。                                                    
挂钩更新 hook_update                                                    模块/                                                        节点                                                        /node.api.php                                                    响应节点的更新。                                                    
钩子验证 hook_validate                                                    模块/                                                        节点                                                        /node.api.php                                                    在创建或更新节点之前执行节点验证。                                                    
挂钩视图 hook_view                                                    模块/                                                        节点                                                        /node.api.php                                                    显示一个节点。                                                    

评论                                    

bsandor 的图片                                        

                                       

我想知道调用这些挂钩的顺序。                                                        

我还没有找到关于这个主题的文档。                                                        

bsandor 的图片                                        

                                       

并且对关于实体的同样事情感兴趣。                                                        

Vikas.Kumar的图片                                        

                                       

请指定条件,我们可以在哪里使用 hook_node_view() ?                                                        

himanshupathak3 的图片                                            

                                           

渲染节点时使用函数 hook_node_view 。例如在节点页面上,或在首页预告视图中,或您网站上的任何其他地方。                                                            

iwhy的图片                                        

                                       

我想在为特殊类型添加新节点之前显示另一种形式?如何实现这一点?                                                        

Drupa1ish 的图片                                        

                                       

https://www.drupal.org/project/hook_post_action        






我自己亲自做的示例,绝对 OK

//节点插入前的 hook_node_insert ,
function custom_twenty_two_jses_node_insert($node)
{
   
if ($node->type == 'jses_terminal_manager') {
       
$log_type = 'jses_terminal_manager';
       
$log_action = 'insert';
       
$log_content = _get_jses_terminal_manager_log_content($node);
       _save_log(
$log_type,$log_action,$log_content);
   }
}

 

//节点更新的 hook_node_update ,,为什么执行两次
function custom_twenty_two_jses_node_update($node)
{
//节点更新前的 hook ,,为什么执行两次,,get方法  node/nid/edit 是执行一次, 同时 点铵钮post提交时,又执行一次
//我把 $_POST['form_id'] 不为空时,真正保存时才执行 这个 hook_node_update
   
if ($node->type == 'jses_terminal_manager' && !empty($_POST['form_id'])) {
       
$log_type = 'jses_terminal_manager';
       
$log_action = 'update';
       
$log_content = _get_jses_terminal_manager_log_content($node);
       
$log_precontent = _get_jses_terminal_manager_log_precontent($node);
       _save_log(
$log_type,$log_action,$log_content,$log_precontent);
   }
}







来自  https://api.drupal.org/api/drupal/modules%21node%21node.api.php/group/node_api_hooks/7.x