回答:
hook_uninstall()
FEATURE_NAME.installファイルでを使用し、コンテンツタイプのステータスを変更します。これにより、システムはロックされていないカスタムコンテンツタイプであると判断します。
<?php
/**
* Implements hook_uninstall().
*/
function FEATURE_NAME_uninstall() {
// List custom content types added by this feature
$custom_ctypes = array(
'blog',
);
// Go through each and unlock the content type
foreach ($custom_ctypes as $ctype) {
db_query("UPDATE {node_type} SET `custom` = 1, locked = 0 WHERE type = :ctype", array(':ctype' => $ctype));
}
// Clean Drupal cache; this is necessary for the "Delete" link to appear
// next to the content type created by the feature.
drupal_flush_all_caches();
}
これにより、そのコンテンツタイプの[削除]ボタンが表示されるので、管理者から削除できます。
これが誰かを助けることを願っています!
node_type_delete($ctype);
は、forループのクエリの後に追加します。
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
私にとって、ソリューションは、コンテンツタイプページに「削除」リンクがないため、削除ページを手動で読み込むことでした。これを行うには、他のコンテンツタイプの削除ページと同じURL構造に従って、自分でURLを作成するだけです。
admin / structure / types / manage / YOUR_CONTENT_TYPE_MACHINE_NAME / delete
これにより、コンテンツタイプの削除確認ページが表示され、コンテンツタイプを削除できました。
参照については、Drupal.orgの次のスレッドを参照してください。
https://drupal.org/node/1055460#comment-7297680
よろしく、
@cmsdave
.info
ファイルを編集し、コンテンツタイプを削除する必要がありました。その後、実際に削除されました。
上記の方法では分類法は削除されませんが、これはモジュールを無効にしてアンインストールした後に次を追加することで実現できます。
// Delete taxonomies.
$machine_names = array('taxonomy_a', 'taxonomy_b');
foreach ($machine_names as $machine_name) {
$taxonomy = taxonomy_vocabulary_machine_name_load($machine_name);
taxonomy_vocabulary_delete($taxonomy->vid);
}
開発サイトのデータベースに直接アクセスできる別のソリューション。必ずデータベースをバックアップしてください。
機能#16 によって作成されたコンテンツタイプを手動で削除するには、Nedjoが以下を提案します。
- 機能を無効にします。私は時々これで問題に遭遇しました-機能は無効になりません。この場合、機能モジュールコードを削除します。
- 削除するコンテンツタイプのマシン名(「mytype」など)を決定します。
- データベースで、コンテンツタイプがUIを介して手動で作成されたかのように、node_typeテーブルの値をデフォルトに戻します。
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- キャッシュをクリアして、コンテンツタイプの変更を使用できるようにします。
- admin / structure / typesのUIを使用して、コンテンツタイプを削除します。
admin_menuモジュールを使用する場合、プルダウンメニュー[構造] / [コンテンツタイプ] / [コンテンツタイプ名] / [削除]に削除リンクが表示されます(コンテンツタイプページに表示されていなくても)。
このコンテンツタイプへの参照が他にないことを確認したら、この削除リンクを使用するのはかなり安全だと思います。