Isu
Menghapus instalasi fitur yang membuat jenis konten menyembunyikan tautan "Hapus" di admin/structure/types
.
Menghapus instalasi fitur yang membuat jenis konten menyembunyikan tautan "Hapus" di admin/structure/types
.
Jawaban:
Menggunakan hook_uninstall()
file FEATURE_NAME.instal dan mengubah status tipe konten, sehingga sistem berpikir itu adalah tipe konten yang tidak terkunci dan kustom.
Saya memposting ini juga di d.org .
<?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();
}
Ini akan membuat tombol "Hapus" muncul untuk jenis konten itu, sehingga Anda dapat menghapusnya dari admin.
Semoga ini bisa membantu seseorang!
node_type_delete($ctype);
setelah kueri dalam loop for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Bagi saya, solusinya adalah memuat halaman hapus secara manual karena tidak ada tautan "hapus" pada halaman tipe konten. Untuk melakukan ini, Anda hanya perlu membuat URL sendiri dengan mengikuti struktur URL yang sama dengan halaman hapus untuk tipe konten lain:
admin / struktur / tipe / kelola / YOUR_CONTENT_TYPE_MACHINE_NAME / hapus
Ini memunculkan halaman konfirmasi penghapusan tipe konten, yang kemudian memungkinkan saya untuk menghapus tipe konten.
Untuk referensi, lihat utas ini di Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Salam,
@cmsdave
.info
dan menghapus jenis konten, maka itu benar-benar akan menghapus.
Metode di atas tidak menghapus taksonomi, tetapi ini dapat dicapai dengan menambahkan yang berikut setelah menonaktifkan dan menghapus modul:
// 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);
}
Solusi lain yang bekerja untuk saya langsung ke database di situs pengembangan saya. Ingatlah untuk selalu membuat cadangan basis data Anda.
Untuk secara manual menghapus tipe konten yang dibuat oleh fitur # 16 yang disarankan Nedjo adalah sebagai berikut:
- 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.
Jika Anda menggunakan modul admin_menu , Anda masih akan melihat tautan hapus di menu tarik-turun Struktur / Tipe konten / [nama tipe konten] / Hapus, meskipun tidak ditampilkan pada halaman tipe konten.
Saya akan mengatakan bahwa cukup aman untuk menggunakan tautan penghapusan ini jika Anda memastikan tidak ada referensi lain untuk jenis konten ini lagi.