Drupal 6 hook:"节点类型中的字段已被添加,修改或删除"?

时间:2011-11-26 03:29:39

标签: php drupal drupal-6 cck

我看到hook_node_type()允许我拦截和修改新创建的或新修改的节点类型。但显然,当创建或修改节点的字段定义时,hook_node_type()是而不是

例如,当我创建一个节点类型" my_bio"时,会触发hook_node_type()。但是,如果我然后添加一个字段" my_photo"到了#my; my_bio" node-type,则不触发hook_node_type()。

在Drupal 6中,有没有办法编写一个有效扩展hook_node_type()的钩子,以便在添加或更改节点类型中的字段时调用钩子?

或者,是否有添加或更改任何字段定义时调用的钩子?

更具体地说,这正是我想要实现的目标: 我有两个自定义格式化程序,它们是" mates":formatter_1和formatter_2。当添加或修改nodetype中的某个字段时,我会检查字段格式化程序是否为formatter_1。如果是,我然后检查nodetype是否包含" mate"对于该字段,即格式化器为formatter_2的第二字段。如果没有,我在这个节点类型中添加一个字段配对。

1 个答案:

答案 0 :(得分:1)

<强> EDITED

解决问题的更新......

只要字段实例附加到节点类型,或者已更新已附加到节点类型的实例,CCK就会触发一个钩子。它被称为hook_content_fieldapi();文档似乎很粗略,但在content.crud.inc file中提到它有以下操作:

  1. 创建实例
  2. 读取实例
  3. 更新实例
  4. 删除实例
  5. 钩子实现看起来像:

    function mymodule_content_fieldapi($op, $field) {
      if ($op == 'create instance') {
        if ($field->foo == 'bar') {
          // Do something
        }
      }
    }
    

    作为&#39;实例&#39;本质上定义节点类型和字段之间的关系,这应该是一个开始你想要做的事情的好地方。我建议将$field的值倾倒在钩子中,以查看您必须使用的变量。