it-swarm-id.com

Cara terbaik untuk menjatuhkan bidang dari jenis konten

Apa cara terbaik untuk menghapus bidang Drupal 7 dari jenis konten yang ditentukan melalui GUI? Saya ingin menggunakan hook_update_N agar perubahan dapat disebarkan ke beberapa server saat menjalankan pembaruan.php. Namun Saya sepertinya tidak dapat menemukan solusi. Db_drop_table () akan masuk akal bagi saya untuk skema yang ditentukan khusus, tetapi tidak untuk jenis konten/bidang yang didefinisikan melalui GUI.

20
amateur barista

Ada dua fungsi api untuk menghapus bidang:

Jika Anda tidak ingin menggunakan kembali bidang tersebut, mungkin akan sedikit lebih bersih untuk menghapus seluruh bidang alih-alih hanya menghapus contohnya pada jenis konten yang dimaksud. Hanya Anda yang bisa menjadi hakim untuk itu.

18
googletorp

Ya, field_delete_instance () adalah fungsi untuk menghapus instance bidang.

Perhatikan bahwa field_delete_instance() secara otomatis memanggil field_delete_field() jika tidak ada instance yang tersisa, jadi field_delete_instance() kemungkinan besar adalah semua yang Anda butuhkan.

_update_7000_field_delete_instance() dirancang untuk fungsi pembaruan inti. Contoh: dalam fungsi pembaruan x_update_7000(), Anda menggunakan field_delete_instance(). Kemudian dalam x_update_7001(), Anda mengubah tabel {field_config} Dengan cara yang tidak konsisten dan field_delete_instance() jelas perlu diubah juga.

Tapi sekarang x_update_7000() panggilan ke field_delete_instance() akan menghasilkan kesalahan karena tabel masih dalam struktur yang lama. Namun, situasi untuk modul yang dikontribusikan berbeda, karena mereka harus selalu dieksekusi setelah semua pembaruan inti dan karenanya perlu bekerja dengan versi inti terbaru.

Tapi, ini adalah pola yang mungkin ingin Anda gunakan untuk fungsi API Anda sendiri yang Anda gunakan dalam fungsi pembaruan.

Selain itu, fungsi-fungsi _update ini tidak mengeksekusi kait karena hasilnya tidak dapat diprediksi (misalnya karena modul yang menjalankan pembaruan mungkin dinonaktifkan).

9
Berdir