Misalkan saya memiliki jenis konten Person
dengan bidang: Name
, Age
,Email
Jenis konten ini dikendalikan oleh Fitur yang disebut test
sehingga saya dapat sumber mengontrolnya dan mendorongnya ke situs langsung.
Alur kerja saya seperti ini:
- Saya menambahkan bidang baru di
Person
panggilPhone
- secara lokal saya lakukan:
drush fu test -y
- Saya mengedit
test.info
untuk menambah nomor versi - Saya melakukan perubahan pada repositori saya
- Saya mendorong fitur ke situs langsung (menyalin file fitur)
- di situs langsung saya lakukan:
drush fr test -y
- di situs langsung saya lakukan:
drush cc all
Kemudian bidang baru muncul di situs langsung itu Person
.
Jika pada langkah pertama saya menghapus bidang Person
isian tidak akan dihapus dari situs langsung. Bagaimana saya mengatasi ini? Saya tidak ingin harus menghapusnya secara manual dari UI di situs langsung.
Apakah alur kerja ini benar?
Jawaban:
Ini adalah pedang bermata dua, ini seperti ini untuk mencegah penghapusan data yang selalu merupakan hal yang baik. Tidak ada yang perlu dipecahkan, ini adalah perilaku yang diharapkan.
Ini adalah alur kerja yang sama yang kami gunakan dan telah dilakukan selama lebih dari setahun dan bekerja dengan sangat baik. Saya akan mengatakan itu benar tetapi itu adalah jawaban yang sangat subjektif.
sumber
drush field-delete field
Cara yang benar untuk menghapus konten yang dibuat Fitur adalah melalui hook_update_N (yang harus diterapkan dalam file
your_module.install
).Gagasan utama dengan Fitur adalah mengelola konfigurasi dengan kode. Penggunaan
hook_update_N
konsisten dengan itu, karena penghapusan bidang dalam kode (yang dapat dikelola dengan kontrol versi) - sedangkan perintah yang setaradrush field-delete field
tidak dipanggil dari kode yang dikelola; ini adalah langkah baris perintah terpisah yang perlu Anda lakukan (dan ingat untuk melakukan).sumber
drush field-delete field
bekerja dengan baik?hook_update()
konsisten dengan itu, karena penghapusan bidang dalam kode (yang dapat dikelola dengan kontrol versi) - sedangkan perintah drush tidak dipanggil dari kode yang dikelola; ini adalah langkah baris perintah terpisah yang perlu Anda lakukan (dan ingat untuk melakukan).hook_update_N
.Buat file baru bernama "your_feature_name.install"
Di dalam file menyatakan hook_update_N , di sana Anda dapat menggunakan field_delete_field () dan tentukan nama bidang yang ingin Anda hapus sebagai parameter.
Jalankan pembaruan.php dan bidang akan dihapus.
sumber
Jika Anda menggunakan
field_phone
di area lain, Anda mungkin hanya ingin menghapusnya dari tipe konten Person Anda, tetapi tidak sepenuhnya menghapusnya dari situs Anda. BuatYOUR_FEATURE_NAME.install
file secara manual di folder fitur Anda seperti:Jika Anda menghapus ini dari Paragraf Orang dan bukan Tipe Konten Orang, Anda bisa mengubah pernyataan bersyarat pertama menjadi sesuatu seperti ini:
sumber