Saya secara terprogram membuat tipe konten selama instalasi modul (menggunakan konfigurasi penyimpanan lapangan).
Saya ingin menghapus tipe konten itu saat menghapus modul.
Apakah ada cara untuk melakukan ini dengan Drupal 8?
Pastikan saja bahwa tipe simpul tergantung pada modul Anda, maka Drupal akan menghapusnya secara otomatis untuk Anda.
Lihat node.type.book.yml dalam modul buku untuk contoh, ini adalah bagian yang relevan:
dependencies:
enforced:
module:
- book
Perhatikan bahwa pengguna harus menghapus semua konten jenis itu sebelum mereka dapat menghapus modul itu.
Ini sepertinya melakukannya untuk saya.
$content_type = \Drupal::entityManager()->getStorage('node_type')->load('MACHINE_NAME_OF_TYPE');
$content_type->delete();
drupal snippet --code='$content_type = \Drupal::entityManager()->getStorage("node_type")->load("MACHINE_NAME_OF_TYPE"); $content_type->delete();'
Tidak memiliki kredit yang cukup untuk berkomentar, saya akan taruh di sini:
@Berdir, bagi saya tampaknya menegakkan modul dalam file node.type.custom.yml tidak cukup untuk menegakkan penghapusan node ketika menghapus instalan
Dalam kasus saya, tipe konten dihapus ketika menghapus modul. Tetapi penghapusan konten khusus (node) tidak diberlakukan. Untuk mencapai hal ini, modul khusus harus mengimplementasikan
ModuleUninstallValidatorInterface
.Ketika diimplementasikan modul khusus tidak dapat dihapus sebelum simpul kustom dihapus. Kotak pilih akan dinonaktifkan.
Alih-alih mengimplementasikan Antarmuka saya melakukannya kotor dengan menghapus node di
hook_uninstall()
:sumber
Untuk memicu beberapa tindakan setelah penghapusan modul Anda harus menerapkan
hook_uninstall
dalam*.install
file modul Anda . Sebelum menghapus tipe konten, Anda mungkin ingin memastikan semua node dari tipe konten itu juga dihapus. Akhirnya, setelah menghapus modul dan menghapus jenis konten jangan lupa untuk mengekspor konfigurasi yang diperbarui.sumber
bundle
dariMACHINE_NAME_OF_TYPE
, seperti permintaan simpul-id jawaban berdasarkan tidak, atau tidak? Maksud saya, sepertinya agak mahal (jika ada banyak NID) dan saya ingin menggunakan solusi ini jika memungkinkan.