Mengapa saya tidak bisa menghapus tipe konten tertentu?


19

Saya memiliki situs Drupal 7, dan di bawah menu Jenis Konten, hanya tipe tertentu yang memiliki tautan 'hapus' di bawah kolom 'Operasi'.

Semua tipe konten memiliki tautan untuk 'edit', 'kelola bidang', dan 'kelola tampilan', tetapi hanya beberapa yang memiliki 'hapus', sementara yang lain tidak.

Saya memeriksa izin saya untuk pengguna saya, dan memang saya punya Administer content types- tetapi itu tampaknya menjadi satu izin global untuk semua jenis konten, jadi saya masih tidak mengerti mengapa beberapa bisa dihapus sementara yang lain tidak.

Mengapa hanya tipe konten tertentu yang memiliki operasi penghapusan?

Jawaban:


15

Anda hanya dapat menghapus tipe konten yang dibuat secara manual (via admin/structure/types/add).

Jenis konten yang tidak memiliki tautan penghapusan dibuat secara terprogram oleh modul yang diinstal dan akan dihapus setelah Anda mencopotnya .


5
Jika ada yang masih di sini - saya memiliki jenis konten yang dibuat secara program, tetapi masih berkeliaran di situs saya bahkan setelah saya menghapus semua jejaknya dari kode situs - masih ada entri untuk itu di {menu_links } dan {menu_router} dan sejenisnya, sehingga masih muncul di menu "buat konten" dan sejenisnya. Jelas ada sesuatu yang kacau di sepanjang jalan; apakah ada cara yang baik untuk menghilangkan kekurangan (ugh) ini secara langsung meretas basis data, yang saya BENAR-BENAR tidak ingin lakukan?
Jim Miller

Saya memiliki masalah yang sama. Pada multisite, saya mengekspor tipe konten dengan bantuan Fitur, dan diekspor ke yang lain. Sekarang saya menghapus modul terkait tetapi jenis konten masih di sini.

3
Anda mungkin sudah, tetapi hanya memeriksa - sudahkah Anda menghapus modul-modulnya dan juga menonaktifkannya ?
user56reinstatemonica8


Saya tidak tahu apakah jawaban ini benar sebelumnya, tetapi sudah pasti tidak benar lagi dengan Drupal 7.23. Jenis konten dapat dihapus, terlepas dari bagaimana mereka dibuat.
Kari Kääriäinen

30

Hapus mereka dengan membuka url /admin/structure/types/manage/content-machine-name/delete

content-machine-name menjadi nama mesin dari tipe konten yang ingin Anda hapus. Juga, pastikan Anda menggunakan tanda hubung pada nama mesin daripada menggarisbawahi.


1
Luar biasa, ini bekerja dengan sangat baik! Saya menginstal Enterprise Blog dan FAQ Perusahaan beberapa waktu lalu, tetapi akhirnya tidak menggunakannya. Layar Jenis Konten tidak memberikan opsi untuk menghapus jenis-jenis konten tersebut, jadi metode Anda sangat membantu!
hockey2112

1
Saya tidak berharap ini berhasil, tetapi bekerja dengan baik. Bagus untuk menghapus jenis konten yang ditambahkan menggunakan Modul Fitur.
Citricguy

Ya! Tip ini luar biasa. Bekerja dengan baik.
Boriana Ditcheva

Ini adalah solusi yang sebenarnya :)
petergus

Ini berfungsi, namun, jika tautan "hapus" tidak muncul secara alami, itu berarti mungkin tidak aman untuk dihapus. Setelah tidak ada tipe konten yang menggunakannya, tidak ada dependensi, tidak ada konten yang di-cache dan variabel dan fitur yang menggunakannya, tautan akan muncul. Jadi, saya menyarankan untuk menggunakan ini dengan hati-hati.
Christia

2

Seperti yang disebutkan hpn, Anda hanya dapat menghapus tipe konten yang dibuat secara manual.

Namun terkadang hal-hal tidak berjalan mulus. Langkah-langkah berikut telah membantu menghapus tipe konten. Anda perlu membuat cadangan database sebelum mencoba ini.

[Untuk secara manual menghapus jenis konten yang dibuat 1 # 16 Nedjo menyarankan di drupal.org:

  • Nonaktifkan fitur ini. Saya terkadang mengalami masalah dengan ini - fitur tidak akan dinonaktifkan. Dalam hal ini, hapus kode modul fitur.
  • Tentukan nama mesin dari jenis konten yang akan dihapus, misalnya, 'mytype'.
  • Dalam database, kembalikan nilai tabel node_type ke default seolah-olah tipe konten dibuat secara manual melalui UI:

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

  • Hapus cache untuk memastikan perubahan tipe konten tersedia.
  • Melalui UI di admin / struktur / tipe, hapus tipe konten.

Langkah-langkah di atas adalah apa yang telah membantu saya sebelumnya ketika saya menemukan masalah itu.


1

Menonaktifkan modul yang menyediakan jenis konten harus menjadi langkah pertama. Jika jenis konten disediakan oleh fitur, Anda masih harus menghapus jenis konten.

Untuk Fitur yang dibuat dengan baik, kemampuan untuk menghapus jenis konten akan datang setelah Fitur yang menyediakannya dinonaktifkan. Ini lebih disukai daripada menghapus jenis konten dari bawah fitur, karena fungsi saat ini atau pembaruan di masa depan untuk fitur itu mungkin memerlukan jenis konten.

Perhatikan bahwa Anda dapat menonaktifkan modul fitur (admin / modul) bahkan ketika antarmuka Fitur (agak bodoh) mengklaim itu tidak dapat menonaktifkan modul karena konflik.

Dan jika Anda tidak ingin melakukan apa pun melalui antarmuka, dan hanya ingin melakukan kode, berikut ini adalah contoh dari kait pembaruan yang akan menonaktifkan Fitur Wiki dan Tulisan Commons dan kemudian menghapus jenis konten yang mereka sediakan.

<?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');
}
?>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.