私の開発者の1人は、コアユーザーモジュールの一部の機能をオーバーライドしたいと考えていました。彼はコアユーザーモジュールのコピーを作成し、sites / all/modulesフォルダーに配置しました。機能の問題が発生し、アンインストールする方法がわかりません。sites / all / modulesフォルダーからモジュールを削除しようとしましたが、サイトがクラッシュします。次に、システムテーブルを編集して、すべてのエントリが元のユーザーモジュールを指していることを確認しますが、ユーザーモジュールに問題があり、奇妙な異常が発生しています。コアモジュールをオーバーライドするのは悪い習慣ですか?掃除が必要な他のテーブルはありますか?この場合、オーバーライドされたユーザーモジュールがモジュールリストに表示されないため、管理者コントロールパネルから削除できないモジュールを削除する確実な方法は何ですか。
1 に答える
コアモジュールをオーバーライドするのは悪い習慣ですか?
はい。コアモジュールを上書きしないでください:悪いことが起こります(あなたが今持っているもののように)。
掃除が必要な他のテーブルはありますか?
これは、ユーザーモジュールのバージョンのコードを知らずに判断することは不可能ですが、それを知っていても、すでに被害が発生しています。
この場合、オーバーライドされたユーザーモジュールがモジュールリストに表示されないため、管理者コントロールパネルから削除できないモジュールを削除する確実な方法は何ですか。
通常、何らかの理由でモジュール管理ページにアクセスできない場合は、次のコマンドを実行してモジュールをアンインストールします。
module_load_install($module);
$versions = drupal_get_schema_versions($module);
drupal_set_installed_schema_version($module, SCHEMA_UNINSTALLED);
module_invoke($module, 'uninstall');
次に、オーバーライドするモジュールのファイルを削除し、元のモジュールを再インストールします。アンインストール中に実行する必要のあるコードがファイルに含まれているため、アンインストールフックの実行後にファイルを削除する必要があります。
ただし、ユーザーモジュールをオーバーライドしたため、ユーザーモジュールをアンインストールできないため、非常に悪い場所にいます。必要なコアモジュールは改ざんされることを意図していません。
したがって、現在の混乱から抜け出すための確実な方法は、オーバーライドするモジュールを削除し、以前のデータベースバックアップから復元することです。