特定のコンテンツタイプを削除できないのはなぜですか?


19

Drupal 7サイトがあり、[コンテンツタイプ]メニューの[操作]列に[削除]リンクがあるのは特定のタイプのみです。

すべてのコンテンツタイプには、「編集」、「フィールドの管理」、および「表示の管理」へのリンクがありますが、「削除」があるのはそうでないものもあります。

ユーザーのアクセス許可を確認しましたが、Administer content typesすべてのコンテンツタイプに対して1つのグローバルアクセス許可であるように見えるため、一部のコンテンツが削除可能である一方で他のコンテンツは削除できない理由がまだわかりません。

特定のコンテンツタイプのみに削除操作があるのはなぜですか?

回答:


15

(を介してadmin/structure/types/add)手動で作成されたコンテンツタイプのみを削除できます。

削除リンクを持たないコンテンツタイプは、インストールされたモジュールによってプログラムで作成され、アンインストール後に削除されます。


5
誰かがまだここにいる場合-プログラムで作成されたコンテンツタイプがありますが、サイトのコードからすべての痕跡を削除した後でも、サイトの周りにぶら下がっています-{menu_links }や{menu_router}などであるため、「コンテンツの作成」メニューなどに引き続き表示されます。途中で何かがめちゃくちゃになったようです。データベースを直接ハッキングする(ugh)ことを避けるための良い方法はありますか?
ジム・ミラー

私は同じ問題を抱えています。マルチサイトで、機能を使用してコンテンツタイプをエクスポートし、別のタイプにエクスポートしました。今、関連するモジュールを削除しましたが、コンテンツタイプはまだここにあります。

3
あなたはおそらく持っていますが、単にチェックしています- モジュールをアンインストールし、単にそれらを無効にしましたか?
user56reinstatemonica8


この回答が以前に正しかったかどうかはわかりませんが、Drupal 7.23ではもはや正しくありません。コンテンツタイプは、作成方法に関係なく削除できます。
カリカリアリネン

30

URLに移動して削除します /admin/structure/types/manage/content-machine-name/delete

content-machine-nameは、削除するコンテンツタイプのマシン名です。また、マシン名にはアンダースコアではなくダッシュを使用してください。


1
素晴らしい、これは非常にうまくいきました!しばらく前にエンタープライズブログとエンタープライズFAQをインストールしましたが、それらを使用しなくなりました。[コンテンツタイプ]画面には、これらのコンテンツタイプを削除するオプションがありませんでしたので、あなたの方法は大歓迎です!
hockey2112

1
これが機能するとは思っていませんでしたが、うまく機能しました。機能モジュールを使用して追加されたコンテンツタイプの削除に最適です。
Citricguy

うん!このヒントは最高でした。うまくいく。
ボリアナディチェバ14

これが実際の解決策です:)
ペテルガス

ただし、これは機能しますが、「削除」リンクが自然に表示されない場合は、削除しても安全ではない可能性があることを意味します。それを使用するコンテンツタイプ、依存関係、キャッシュされたコンテンツ、およびそれを使用している変数と機能がなくなると、リンクが表示されます。そのため、これは慎重に使用することをお勧めします。
クリスティ

2

hpnが述べたように、手動で作成されたコンテンツタイプのみを削除できます。

しかし、時には物事がスムーズに進まないことがあります。次の手順は、コンテンツタイプの削除に役立ちました。これを試す前にデータベースをバックアップする必要があります。

[作成されたコンテンツタイプを手動で削除するには、1#16 Nedjoがdrupal.orgで提案しています:

  • 機能を無効にします。これで問題が発生することがあります。機能は無効になりません。この場合、機能モジュールコードを削除します。
  • 削除するコンテンツタイプのマシン名(「mytype」など)を決定します。
  • データベースで、コンテンツタイプがUIを介して手動で作成されたかのように、node_typeテーブルの値をデフォルトに戻します。

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • キャッシュをクリアして、コンテンツタイプの変更を使用できるようにします。
  • admin / structure / typesのUIを使用して、コンテンツタイプを削除します。

上記の手順は、これらの問題を発見したときに以前に役立ったことです。


1

コンテンツタイプを提供するモジュールを無効にすることが最初のステップです。コンテンツタイプが機能によって提供された場合、コンテンツタイプを削除する必要があります。

よくできたフィーチャーの場合、コンテンツタイプを削除する機能は、それが提供されているフィーチャーが無効になった後に提供されます。これは、機能の下からコンテンツタイプを削除するよりも優先されます。現在の機能またはその機能の将来の更新にはコンテンツタイプが必要になる場合があるためです。

Featuresインターフェイスが(むしろ愚かに)競合のためにモジュールを無効にできないと主張している場合でも、機能モジュール(admin / modules)を無効にできることに注意してください。

インターフェイスを介して何もしたくなく、単にコードを実行したい場合は、Commons WikiおよびPosts機能を無効にし、それらが提供するコンテンツタイプを削除する更新フックの例を次に示します。

<?php
/**
 * Remove unused features and content types.
 */
function example_update_7001() {
  // Delete one (spam) piece of wiki content.
  node_delete(2731);
  // Disable Feature modules.
  module_disable(array('commons_wikis_pages', 'commons_wikis', 'commons_posts'));
  // Delete content types.
  node_type_delete('wiki');
  node_type_delete('post');
}
?>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.