1

Drupal 7 のサンプルの node_example モジュールで行ったように、このフックを使用してコンテンツ タイプにいくつかのフィールドを追加しようとしましたが、呼び出されませんでした。何が間違っている可能性がありますか?

function education_node_type_insert($content_type){
            $fields = _anketa_installed_fields();
            foreach($fields as $field){
                field_create_field($field);
            }

            $instances = _anketa_installed_instances();
            foreach($instances as $instance){
                $instance['entity_type'] = 'node';
                $instance['bundle'] = 'anketa';
                field_create_field($instance);
            }
    }
4

6 に答える 6

2

ノード モジュールを無効にしてアンインストールすると、Drupal はモジュールに関連付けられたノード タイプの node_type テーブルのエントリを消去しません (これを Drupal コアのバグと呼びます)。それらのエントリが残っている場合。モジュールを再度有効にしても、hook_node_type_insert フックは実行されません。

最初にこれらのエントリを node_type テーブルから手動で削除した場合。フックが実行されます。

于 2014-03-24T04:41:44.603 に答える
0

最初のインストール後に、実際にノード タイプを手動で削除する必要があります。

function example_uninstall () {
  node_type_delete ('my_type');
}

Drupal がデフォルトでこれを行わないのには、おそらく十分な理由があります: 正しい動作は何ですか?

于 2016-02-06T01:58:06.980 に答える