web-dev-qa-db-ja.com

コンテンツタイプを追加するモジュールをアンインストールする適切な方法は何ですか

コンテンツタイプのモジュールをアンインストールする場合、node_type_delete('my_module')hook_uninstall()を使用しないでください。代わりに、Drupalがデータベースのコンテンツタイプを無効にするだけで処理されるようにします。これでよろしいですか?どうやらDrupalがhook_node_info()

データベースからこのノードタイプを削除した方がいいのではないでしょうか。それともDrupalがアンインストールプロセスを別の方法で処理しますか?

Drupal 7.を使用しています。

2
MyNameIsStain

hook_disable() でコンテンツタイプを削除しないでください。代わりに、コールバックが正常であり、必要なすべてのデータ hook_enable() が適切にアーカイブされ、他のモジュールによる変更から保護されていることを確認する必要があります。 drupal_set_message() を使用して、今後使用または表示する必要のないコンテンツタイプについて警告することをお勧めしますが、これはサイト管理者の責任です。

hook_uninstall() では、モジュールが存在しなかったかのようにデータベースから離れることになります。したがって、 node_type_save() を使用して作成されたコンテンツタイプがある場合は、自由に削除してください。 hook_node_info() で作成されたものは自動的に削除されます。繰り返しになりますが、孤立したコンテンツに関するメッセージを設定することは良い考えですが、結局のところ、彼がまだ使用しているモジュールをアンインストールしないのはサイト管理者の責任です。

Hook_node_info()で定義されたコンテンツタイプが削除されず、無効にされた場合、明示的に削除することを決定できますが、孤立したコンテンツなど、それが引き起こす可能性のあるすべての混乱を取り除く責任があります。そうしないと、深刻なサイト障害のリスクがあります。

他の回答の下にCliveのコメントからの情報を組み込むように編集されました

2
Mołot

hook_uninstall()を書くことでこの問題を解決できる2つの関数があります:

  1. node_type_delete はコンテンツタイプを削除するためのものです
  2. node_delete は、関連するノードを削除するためのものです
0
Deepak Kumar