Saya memiliki beberapa ribu node dari jenis konten tertentu. Menggunakan antarmuka web (example.com/admin/content), saya hanya dapat menghapus sekitar 50 sekaligus. Bagaimana saya bisa menghapusnya dengan cepat?
31
Ada modul untuk itu (TM).
Lihat Penghapusan Massal .
Itu akan menggunakan Batch API untuk menghapus node untuk menghindari masalah timeout atau memori ketika menghapus ribuan node dengan satu panggilan ke node_delete_multiple ().
Hapus Massal adalah modul yang ditinggalkan. Lihat alternatifnya:
Melihat modul Devel Generate untuk mendapatkan inspirasi, inilah fungsinya "content kill"
devel_generate_content_kill
:Jadi saya akan mencoba menggunakan Devel Generate untuk menghapus semua node tetapi tidak membuat yang baru, atau menggunakan example.com/devel/php untuk menelepon
devel_generate_content_kill(array('node_types' => array('my_node_type')));
langsung.sumber
Dalam Drupal 8 salah satu caranya adalah menggunakan metode entityQuery () dengan metode EntityStorageInterface :: delete () :
Jika Anda perlu menerapkan filter / ketentuan lain, Anda dapat memeriksa halaman antarmuka QueryInterface
EDIT (Cara lain, terima kasih kepada @ 4k4 ):
Jika Anda ingin menguji kode, Anda dapat menggunakan:
Ini akan menghapus semua artikel Anda.
sumber
$entities = $storage_handler->loadByProperties(['type' => 'YOUR_CONTENT_TYPE_NAME']);
entityQuery
Anda harus mengaturaccessCheck
pada pernyataan. Kalau tidak, jika Anda menjalankannya dalam drush, secara default accessCheck diatur ke true dan setiap node yang tidak memiliki akses ke 0 tidak akan dikembalikan.Jika Anda ingin melakukannya murni melalui UI, Anda dapat menggunakan modul devel_generate.
Dengan cara ini, tidak ada node yang akan dihasilkan dan semua node dari tipe yang dipilih akan dihapus.
sumber
Buat file dengan kode di bawah ini di root instalasi drupal dan jalankan file.
sumber
Anda dapat melakukannya di Drupal 7 menggunakan bagian Execute PHP Code dari modul Devel dengan memasukkan:
sumber
Lakukan ini di terminal, jika Anda menggunakan Drush dan hapus semua modul:
sumber
Operasi Tampilan Massal menyediakan layar admin BatchAPI yang diaktifkan dan dapat dikonfigurasi yang memungkinkan pemfilteran menurut jenis, pemilihan semua node yang cocok dengan kriteria pencarian Anda, dll.
Itu solusi mudah saya di Drupal 6 - selain menghapus batch, Anda dapat mengedit secara massal node dan melakukan banyak hal lainnya.
Sepertinya versi Drupal 7 belum siap - tapi saya akan menonton modul untuk rilis D7.
sumber
Cuplikan lainnya adalah:
di mana
TO_BE_DELETED
jenis konten yang akan dihapus.sumber
db_delete('node')
Dengan modul Devel, gunakan drush:
Atau di UI seperti yang dijelaskan di sini: http://befused.com/drupal/delete-nodes-devel
sumber
devel_generate
yang perlu diaktifkan. Dan untuk banyak tipedrush genc 0 --kill --types="article, page"
Saya menggunakan Delete all module, berfungsi baik dengan D8 dan memberikan perintah drush yang sangat berguna. Misalnya, untuk menghapus semua konten dari
article
jenis konten:sumber
Anda dapat mencoba Hapus semua modul, navigasikan ke 'admin / konten / delete_content' dan Anda akan diberikan formulir untuk menghapus konten milik jenis konten tertentu.
Salam
sumber
Jika Anda telah mengaktifkan modul Migrasi, Anda dapat menggunakan:
Lihat Perintah migrasi biasanya menggunakan Drush .
sumber
Modul ini digunakan untuk menghapus semua konten dan / atau pengguna dari suatu situs. Ini terutama alat pengembang, yang dapat berguna dalam beberapa kasus
https://www.drupal.org/project/delete_all
seperti akan sebagai modul Hapus Massal akan menghapus node dari tipe-simpul tertentu menggunakan api batch. Disarankan untuk menggunakan modul Views Batch Operations (VBO) untuk sejumlah kecil node. Tetapi jika Anda harus menghapus 10.000 node modul ini mungkin merupakan opsi yang lebih baik.
https://www.drupal.org/project/bulkdelete
sumber
Hapus semua node tipe konten secara terprogram di sini adalah fungsi pembantu:
sumber
Saya akhirnya menggunakan db_delete , tidak perlu modul:
Sunting / Peringatan: Lihat komentar Berdir di bawah ini. Metode ini tidak membersihkan semua data yang terkait dengan node.
sumber
Jika Anda tidak ingin cod, Anda dapat mencoba modul ini, https://drupal.org/project/total_control
Cukup buka Dasbor -> Konten, pilih semua konten (Anda dapat memfilter menurut jenis konten), lalu pilih "Hapus item"
sumber